指令系統(tǒng)及匯編語言程序設(shè)計(jì)

指令系統(tǒng)及匯編語言程序設(shè)計(jì)

ID:11244754

大小:508.00 KB

頁數(shù):22頁

時(shí)間:2018-07-10

指令系統(tǒng)及匯編語言程序設(shè)計(jì)_第1頁
指令系統(tǒng)及匯編語言程序設(shè)計(jì)_第2頁
指令系統(tǒng)及匯編語言程序設(shè)計(jì)_第3頁
指令系統(tǒng)及匯編語言程序設(shè)計(jì)_第4頁
指令系統(tǒng)及匯編語言程序設(shè)計(jì)_第5頁
資源描述:

《指令系統(tǒng)及匯編語言程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、第2章指令系統(tǒng)及匯編語言程序設(shè)計(jì)2.38086/8088指令系統(tǒng)8086/8088的指令大致可分成以下六種:數(shù)據(jù)傳送、算術(shù)運(yùn)算、位操作、串操作、程序控制和處理器控制指令。2.3.1數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令是將數(shù)據(jù)、地址或立即數(shù)傳送到寄存器或存儲(chǔ)單元中。這類指令不影響狀態(tài)標(biāo)志位,只有FLAGS的指令(SAHF和POPF)例外。1.通用數(shù)據(jù)傳送指令(1)數(shù)據(jù)傳送指令指令格式:MOVDST,SRC功能:DST ←SRC操作說明:MOV指令將源操作數(shù)SRC的內(nèi)容傳送到目的操作數(shù)DST。指令執(zhí)行后目的操作數(shù)DST與源操作數(shù)SRC的內(nèi)容相等,即DST=SRC,源操作數(shù)本身不變。操作數(shù)的類型和傳送

2、方向如圖2.1所示。從上圖可以看出,在MOV指令中:1)源操作數(shù)可以為:存儲(chǔ)器、通用寄存器、段寄存器和立即數(shù)。2)目的操作數(shù)可以為:存儲(chǔ)器、通用寄存器和段寄存器(CS除外)。3)目的操作數(shù)和源操作數(shù)不能同時(shí)為存儲(chǔ)器、段寄存器;立即數(shù)不能送段寄存器,其余可以任意搭配。4)立即送存儲(chǔ)器時(shí)難以確定長(zhǎng)度,需要在存儲(chǔ)器操作數(shù)的前面加類型說明BYTEPTR或WORDPTR,例如:MOVBYTEPTR[SI+10H],30;8位立即數(shù)30送偏移地址為SI+10H的字節(jié)單元。MOVWORDPTR[BX+DI],2;16位立即數(shù)2送偏移地址為BX+DI的字單元。【例2.7】數(shù)據(jù)傳送指令舉例。①立即數(shù)送

3、寄存器MOVAL,10HMOVBX,2100H②寄存器之間傳送MOVDX,CXMOVAH,DLMOVDS,AXMOVDX,ES③通用寄存器與存儲(chǔ)器之間傳送MOVAX,[1000H]MOV[BP],DX④段寄存器與存儲(chǔ)器之間傳送MOV[BX][DI],ESMOVDS,10[BP+DI]【例2.8】指出下列數(shù)據(jù)傳送指令中的錯(cuò)誤。①M(fèi)OV10H,AX;立即數(shù)不能作為目的操作數(shù)②MOVDS,2000H;立即數(shù)不能送段寄存器③MOVCS,AX;CS不能作為目的操作數(shù)④MOVDS,ES;目的操作數(shù)和源操作數(shù)不能同時(shí)為段寄存器⑤MOV[DI],[SI];目的操作數(shù)和源操作數(shù)不能同時(shí)為存儲(chǔ)器⑥MOV

4、AL,BX;類型不匹配,AL為8位、BX為16位寄存器⑦M(jìn)OVDL,300;類型不匹配,DL為8位寄存器,300超過1B(2)堆棧操作指令堆棧是內(nèi)存中的一個(gè)特定的區(qū)域,其操作原則是“后進(jìn)先出(LastIn,F(xiàn)irstOut)”。由段寄存器SS確定堆棧段的起始地址,由堆棧初始化時(shí)寄存器SP的值設(shè)定堆棧底的地址。堆棧的形態(tài)如圖2.2所示。堆棧操作有入棧和出棧兩種。1)入棧指令指令格式:PUSHSRC功能:SP←SP-2,[SP+1][SP]←SRC操作說明:PUSH指令先將SP的內(nèi)容減2,然后再將操作數(shù)SRC的內(nèi)容送入由SP指出的棧頂即偏移地址為SP和SP+1的兩個(gè)連續(xù)字節(jié)中。指令中的操

5、作數(shù)SRC可以是存儲(chǔ)器、通用寄存器和段寄存器,但不能是立即數(shù)。【例2.9】PUSHAX;通用寄存器內(nèi)容入棧PUSHCS;段寄存器內(nèi)容入棧PUSH[SI];字存儲(chǔ)單元內(nèi)容入棧2)出棧指令指令格式:POPDST功能:DST←[SP+1][SP],SP←SP+2操作說明:POP指令先將堆棧指針SP所指示的棧頂存儲(chǔ)單元的值彈出到操作數(shù)DST中,然后再將SP的內(nèi)容加2。指令中的操作數(shù)DST可以是存儲(chǔ)器、通用寄存器或段寄存器(但不能是CS),同樣,不能是立即數(shù)?!纠?.10】POPAX;棧頂內(nèi)容彈出至通用寄存器POPES;棧頂內(nèi)容彈出段寄存器POPMEM[DI];棧頂內(nèi)容彈出至字存儲(chǔ)單元入棧和出

6、棧操作如圖2.3所示。使用堆棧時(shí)還應(yīng)注意:1)堆棧操作指令中的操作數(shù)必須是16位的字操作數(shù)。2)由SP指示現(xiàn)行堆棧頂?shù)奈恢谩6褩m斒歉?dòng)的。3)編程中PUSH、POP指令應(yīng)成對(duì)使用,以保持棧的平衡。(3)數(shù)據(jù)交換指令指令格式:XCHGOPR1,OPR2功能:OPR1←→OPR2操作說明:XCHG指令將兩個(gè)操作數(shù)內(nèi)容進(jìn)行交換。交換的內(nèi)容可以是一個(gè)字節(jié)(8位),也可以是一個(gè)字(16位),兩個(gè)操作數(shù)的長(zhǎng)度必須一致。參加交換的兩個(gè)操作數(shù)各自均可以是寄存器或存儲(chǔ)器,但不能二者同時(shí)為存儲(chǔ)器。即可以在寄存器與寄存器之間,或寄存器與存儲(chǔ)器之間進(jìn)行交換。段寄存器不能參加交換?!纠?.11】XCHGAL

7、,CL;8位寄存器間內(nèi)容交換XCHGAX,DX;16位寄存器間內(nèi)容交換XCHGBX,DATA[SI];寄存器與存儲(chǔ)單元間內(nèi)容交換(4)字節(jié)轉(zhuǎn)換指令指令格式:XLATSRC-table功能:AL←[BX+AL]操作說明:XLAT指令完成一字節(jié)的查表轉(zhuǎn)換。具體操作為:將BX和AL的內(nèi)容相加后作為偏移地址,取出該存儲(chǔ)單元的內(nèi)容送AL。使用這條指令之前應(yīng)預(yù)先把表頭地址存入BX寄存器,AL中存放表元素的序號(hào)。表中元素的序號(hào)依次是0,1,2,3,……,表的最大長(zhǎng)度為2

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。