資源描述:
《匯編語言源程序.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、§5.4匯編語言源程序掌握:匯編語言與匯編程序的概念;匯編語言程序設計過程;匯編語言源程序的結構框架;常用偽指令及基本DOS功能模塊的應用。1一、80X86新增指令特點:增加對32位字長操作的指令;加強各類指令功能;增加了高級語言、控制保護、Cache管理等指令。2二、匯編語言及匯編程序計算機語言:機器語言匯編語言高級語言面向機器的語言機器語言匯編語言高級語言3匯編語言及匯編程序匯編語言源程序用助記符編寫的程序源程序的編譯程序匯編程序匯編語言源程序機器語言目標程序4匯編語言程序設計與執(zhí)行過程輸入匯編語言源程序源文件.ASM匯編(編譯)目標文件.OBJ鏈接可
2、執(zhí)行文件.EXE調試最終程序5匯編語言的程序結構一個源程序必須用其編譯器能夠理解的語法進行編寫,這些語法是指語句和程序結構必須遵循的規(guī)則。匯編語言也是如此。首先,通過以下可在PCDOS環(huán)境下運行的匯編語言源程序實例,初步認識標準的匯編語言源程序的框架結構,并通過它來了解匯編語言的有關規(guī)定和格式。6例:打印輸出字符串“THISISASAMPLEPROGRAM”;SAMPLEPROGRAMDISPLAYMESSAGE;注釋行STACKSEGMENTPARASTACK’STACK’;定義堆棧段DB1024DUP(0);在存儲器建立一個堆棧區(qū)STACKENDS;段
3、結束DATASEGMENT;定義數據段MESSAGEDB’THISISASAMPLEPROGRAM’;存放數據DB0DH,0AH,’$’DATAENDS;段結束CODESEGMENT;代碼段開始ASSUMECS:CODE,DS:DATA,SS:STACK;將段名與段寄器聯系起來7STARTPROCFAR;將過程定義為遠過程PUSHDSMOVAX,0PUSHAXMOVAX,DATA;建立數據段的可尋址性MOVDS,AX;初始化DSLEABX,MESSAGELOOP1:CMPBYTEPTR[BX],’$’JELOOP2MOVAH,5標準序,以便返回DOS操作系
4、統(tǒng)8MOVDL,[BX]INT21HINCBXJMPLOOP1LOOP2:RETSTARTENDP;過程結束CODEENDS;代碼段結束ENDSTART;整個程序匯編結束9匯編源程序的特點一、由若干邏輯段組成,各邏輯段都有一個段名,由段定義語句(偽指令)來定義和說明。通常只有代碼段是必不可少的。數據段或附加段用來在內存中建立一個適當容量的工作區(qū)用以存放常量和變量。堆棧段則在內存中建立一個堆棧區(qū),以便中斷和子程序調用及各模塊間傳遞參數時使用。某些簡單的程序并不一定需要數據段和堆棧段,但對一些復雜的程序,堆棧段、數據段和代碼段都可以不止一個。通常把數據段放在代
5、碼段前面。10匯編源程序的特點(續(xù))二、在代碼段的起始處,用ASSUME命令說明各個段寄存器與邏輯段的關系。并由用戶自己設置各段寄存器(除代碼段外)初值,以建立這些邏輯段的可尋址性。三、每個邏輯段由若干行匯編語句組成,每行只有一條語句且不能超過128個字符,但一條語句允許有后續(xù)行,最后均以加車作結束。整個源程序必須以END語句來結束,它通知匯編程序停止匯編。END后面的標號START表示該程序執(zhí)行時的起始地址。11匯編源程序的特點(續(xù))四、每一條匯編語句最多由4個字段組成,它們均按照一定的規(guī)則分別寫在一條語句的4個區(qū)域,各區(qū)域之間用空格或TAB鍵隔開。五、
6、每個源程序在代碼段中都必須含有返回到DOS操作系統(tǒng)的指令語句,以保證程序執(zhí)行完畢后能自動回到DOS狀態(tài),以便繼續(xù)向計算機鍵入命令。12源程序與PCDOS的接口為保證用戶程序執(zhí)行完后自動返回DOS,應采取兩項措施:一是將用程序中的主程序定義為FAR過程,其最后一條指令為RET;二是在主程序的開始處將PSP所在段的段地址DS(或ES)保存進棧,然后再將一個全0的字(PSP的段內偏移地址)壓入堆棧。PUSHDSMOVAX,0PUSHAX13源程序與PCDOS的接口(續(xù))還有一種返回DOS的非標準方法:不定義主程序為FAR過程并去掉標準序部分,只在代碼段結束之前(
7、即CODEENDS之前)增加兩句:MOVAH,4CHINT21H14匯編語言的語句格式語句是匯編語言源程序的基本組成單位,源程序是一個語句序列。語句序列中的每個語句規(guī)定了一個基本操作要求,而語句序列則完成某個特定的操作任務。15語句的種類在80X86/Pentium匯編語言中,有三種基本語句:指令語句、偽指令語句和宏指令語句。指令語句:對應于CPU指令系統(tǒng)中的一條指令,為可執(zhí)行語句。匯編程序將為之產生一對應的機器目標代碼。如:指令語句MOVDS,AX;機器代碼為8EH和D8H16語句的種類(續(xù))偽指令語句CPU不執(zhí)行的語句,只是匯編時給匯編程序提供匯編信息
8、,如定義符號、分配存儲單元、將程序分段等。它本身不產生目標代碼,所