資源描述:
《匯編語言第三章宏匯編語言.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第三章匯編語言指令本章的內(nèi)容包括:匯編語言程序設(shè)計方法機器指令常用的DOS系統(tǒng)功能調(diào)用3.1匯編語言程序設(shè)計方法一.匯編語言程序設(shè)計的一般步驟:1.分析問題,選擇合適的解題方法。2.根據(jù)具體問題,確定輸入輸出數(shù)據(jù)的格式。3.分配存貯區(qū)并給變量命名,包括分配寄存器。4.繪制程序的流程圖,將解題方法和步驟用程序流程圖的形式表示出來。5.根據(jù)流程圖編寫程序。6.靜態(tài)檢查與動態(tài)調(diào)試一.匯編語言程序設(shè)計的質(zhì)量要求1.結(jié)構(gòu)清晰、簡明、易讀、易調(diào)試。2.執(zhí)行速度快。3.占用存儲空間少。二.流程圖符號說明YN1.
2、起始、終止框2.判斷框3.處理說明框4.子程序或過程調(diào)用框5.流向線,表示程序流向6.連接框,流程圖較復(fù)雜時,連接框表示幾部分之間的關(guān)系注意:l起始框一條線出,終止框一條線入l處理框和子程序框一條線入,一條線出l判斷框一條線入,兩根線(多條線)出l判斷框中為陳述句l判斷框的分支上要標(biāo)明Y和N3.1機器指令格式:[標(biāo)號:]操作符OPD,OPS[;注釋]注意:lOPD、OPS類型一致lOPD不能為立即數(shù)l結(jié)果在OPD,OPS內(nèi)容不變lOPD、OPS不能為內(nèi)存操作數(shù)如:MOVBYTEPTR[2000H]
3、,[2100H]3.1.1.數(shù)據(jù)傳送指令功能:將數(shù)據(jù)、地址、立即數(shù)送入寄存器或存貯器。這類指令有:MOV、XCHG、XLAT、LEA、LDS、LES等。一.一般數(shù)據(jù)傳送1.傳送指令格式:MOVOPD,OPS功能:(OPS)→OPD。注意:寄存器←→寄存器;立即數(shù)→寄存器、存貯器;存貯單元←→寄存器。不能是:單元←→單元。1.數(shù)據(jù)交換指令格式:XCHGOPD,OPS功能:(OPD)→OPS,(OPS)→OPD。如:XCHGAX,BX若執(zhí)行前:(AX)=5678H,(BX)=1234H執(zhí)行后:(AX)
4、=1234H,(BX)=5678H注意:寄存器←→寄存器,寄存器←→存貯器。有一個必須為寄存器。2.查表轉(zhuǎn)換指令(換碼指令)格式:XLATOPS;或XLAT功能:([BX+AL])→AL,將(BX)為首址,(AL)為位移量的字節(jié)單元數(shù)據(jù)→AL。此時字節(jié)單元物理位置PA=(DS)左移4位+(BX)+(AL)。該指令主要用于代碼轉(zhuǎn)換,如把字符轉(zhuǎn)換成ASCII碼。DATASEGMENTTABDB‘’DATAENDS…MOVBX,OFFSETTABMOVAL,4XLATTAB…([BX+AL])=‘4’=
5、34H,結(jié)果為4的ASCII碼利用XLAT查出某數(shù)值的ASCII碼。一.地址傳送指令1.傳送偏移地址指令格式:LEAOPD,OPS等價于MOVOPD,OFFSETOPS。功能:OPS的偏移地址→OPD。如:LEAAX,BUF等價于MOVOPD,OFFSETBUF。注意:OPD必須為16位寄存器。2.傳送偏移地址及數(shù)據(jù)首址指令格式:LDSOPD,OPS功能:(OPS)→OPD,(OPS+2)→DS。將OPS所指的4個字節(jié)內(nèi)容送OPD和DS。如:LDSSI,[10H]執(zhí)行前:(DS)=C000H,(C
6、0010H)=180H,(C0012H)=2000H。執(zhí)行后:(SI)=180H,(DS)=2000H。注意:lOPD必須為16位寄存器;lOPS必須為存貯器地址,類型為DD。1.傳送偏移地址及附加數(shù)據(jù)段指令格式:LESOPD,OPS功能:(OPS)→OPD,(OPS+2)→ES。與LDS指令類似。3.1.1.算術(shù)指令算術(shù)指令包括:加、減、乘、除及符號擴(kuò)展指令指令的共同特點:對SF、OF、ZF、CF、AF等標(biāo)志有影響,具體影響見教材附錄。指令分類:二進(jìn)制指令、十六進(jìn)制指令。運算原則:有符號數(shù)在機內(nèi)
7、均用補碼表示,最高位為符號位,計算機在運算時,不單獨處理符號,而是將符號作為數(shù)值一起參加運算。主要講二進(jìn)制指令。1.加法指令A(yù)DDOPD,OPS;功能:(OPS)+(OPD)→OPDINCOPD;功能:(OPD)+1→OPD注意:OPD不能是立即數(shù)。1.減法指令SUBOPD,OPS;功能:(OPD)-(OPS)→OPDDECOPD;功能:(OPD)-1→OPDNEGOPD;功能:()+1→OPD。(求補)CMPOPD,OPS;功能:(OPD)-(OPS)不回送結(jié)果,只影響標(biāo)志。例:求(AX)的絕對
8、值。CMPAX,0JGEEXIT;(AX)≥0時,跳到EXITNEGAX;(AX)<0時,求補,得到絕對值…EXIT:…注意:如果是進(jìn)行加、減運算,對有符號數(shù),當(dāng)OF=0時,運算結(jié)果正確;對無符號數(shù),當(dāng)CF=0時,結(jié)果正確。2.乘法指令3.(1)單操作數(shù)乘法指令有符號乘法:IMULOPS;無符號乘法:MULOPS;被乘數(shù)隱含在AX(AL)中。是字乘法還是字節(jié)乘法,由OPS決定。字節(jié)乘法:(AL)*(OPS)→AX字乘法:(AX)*(OPS)→DX、AX功能:雙字乘法:(EAX)*(