第3章-8086^8088指令系統(tǒng)1_第1頁
第3章-8086^8088指令系統(tǒng)1_第2頁
第3章-8086^8088指令系統(tǒng)1_第3頁
第3章-8086^8088指令系統(tǒng)1_第4頁
第3章-8086^8088指令系統(tǒng)1_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1第第3 3章章 8086/80888086/8088指令系統(tǒng)指令系統(tǒng)2主要內(nèi)容:n指令系統(tǒng)、指令的格式指令系統(tǒng)、指令的格式n操作數(shù)的尋址方式操作數(shù)的尋址方式n六大類指令的功能六大類指令的功能指令(操作碼)的含義指令對(duì)操作數(shù)的要求指令執(zhí)行的結(jié)果 8086/8088指令特點(diǎn) 8086/8088的尋址方式 8086/8088的指令格式及數(shù)據(jù)類型 8086/8088的指令集33.13.1 概述4內(nèi)容:n指令及指令系統(tǒng);指令及指令系統(tǒng);n指令的格式;指令的格式;n指令中的操作數(shù)類型;指令中的操作數(shù)類型;n指令字長(zhǎng)與機(jī)器字長(zhǎng);指令字長(zhǎng)與機(jī)器字長(zhǎng);n指令的執(zhí)行時(shí)間指令的執(zhí)行時(shí)間5一、指令與指令系統(tǒng)指令:指

2、令: 被計(jì)算機(jī)識(shí)別并控制計(jì)算機(jī)完成某種操作的命被計(jì)算機(jī)識(shí)別并控制計(jì)算機(jī)完成某種操作的命令令指令系統(tǒng):指令系統(tǒng):處理器所能識(shí)別的所有指令的集合處理器所能識(shí)別的所有指令的集合指令的兼容性:指令的兼容性:同一系列機(jī)的指令都是兼容的。同一系列機(jī)的指令都是兼容的。 8086CPU的指令系統(tǒng)共包含的指令系統(tǒng)共包含92種基本指令,按種基本指令,按功能可分為六大類:功能可分為六大類: 數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算和移位、串操作、數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算和移位、串操作、控制轉(zhuǎn)移和處理器控制類控制轉(zhuǎn)移和處理器控制類。6二、指令格式指令中應(yīng)包含的信息:指令中應(yīng)包含的信息:執(zhí)行的操作執(zhí)行的操作運(yùn)算數(shù)據(jù)的來源運(yùn)算數(shù)

3、據(jù)的來源運(yùn)算結(jié)果的去向運(yùn)算結(jié)果的去向7操作碼操作碼 操作數(shù)操作數(shù)指令的操作性質(zhì)指令的操作性質(zhì) 12字節(jié)字節(jié)操作數(shù)所在位置操作數(shù)所在位置 04字節(jié)字節(jié)v 指令中操作碼是必須的,而操作數(shù)可能隱指令中操作碼是必須的,而操作數(shù)可能隱含在操作碼中,或由相關(guān)聯(lián)的其它指令給出。含在操作碼中,或由相關(guān)聯(lián)的其它指令給出。有些指令可能還會(huì)加上一個(gè)字節(jié)的前綴。有些指令可能還會(huì)加上一個(gè)字節(jié)的前綴。指令格式:8操作碼操作碼 操作數(shù)操作數(shù),操作數(shù)操作數(shù)執(zhí)行何種操作執(zhí)行何種操作目標(biāo)操作數(shù)目標(biāo)操作數(shù)源操作數(shù)源操作數(shù)參加操作的數(shù)據(jù)參加操作的數(shù)據(jù)或數(shù)據(jù)存放的地址或數(shù)據(jù)存放的地址指令格式:指令格式:98086/8088的常見匯編指

4、令格式:的常見匯編指令格式:例如:例如: MOV CX,2 MUL BL 雙操作數(shù)雙操作數(shù) PUSHF DEC CX CMC 單操作數(shù)單操作數(shù) SHL AX, CL NOP HLT ADC AX,BX 三操作數(shù)三操作數(shù)無操作數(shù)無操作數(shù)10n特點(diǎn):特點(diǎn):n18086具有靈活的指令格式n28086指令格式中的一對(duì)多形式n38086有較強(qiáng)的運(yùn)算指令n48086指令有極強(qiáng)的尋址能力n58086指令有處理多種數(shù)據(jù)能力n6. 8086共有92種基本指令,可分為6大類11三、指令中的操作數(shù)立即數(shù)立即數(shù)寄存器寄存器存儲(chǔ)器存儲(chǔ)器表征參加操作的數(shù)據(jù)本身表征參加操作的數(shù)據(jù)本身表征數(shù)據(jù)存放的地址表征數(shù)據(jù)存放的地址12

5、立即數(shù)操作數(shù)n立即數(shù)只能作為源操作數(shù)。立即數(shù)只能作為源操作數(shù)。其本身是參加操作其本身是參加操作的數(shù)據(jù),可以是的數(shù)據(jù),可以是8位或位或16位。位。 例:例: MOV AX,1234H MOV BL,22Hn立即數(shù)無法作為目標(biāo)操作數(shù)立即數(shù)無法作為目標(biāo)操作數(shù)n立即數(shù)可以是無符號(hào)或帶符號(hào)數(shù),其數(shù)值應(yīng)在立即數(shù)可以是無符號(hào)或帶符號(hào)數(shù),其數(shù)值應(yīng)在可取值范圍內(nèi)??扇≈捣秶鷥?nèi)。13指令中的數(shù)據(jù)類型指令中的數(shù)據(jù)類型n無符號(hào)數(shù): 8位數(shù),其值位數(shù),其值00HFFH(0255);); 16位數(shù),其值位數(shù),其值0000HFFFFH(065536) n帶符號(hào)數(shù) 8位數(shù),其值位數(shù),其值-80H+7FH(-128+127);

6、); 16位數(shù),其值位數(shù),其值-8000H+7FFFH(-3276832767)nASCII碼 字母和符號(hào),鍵盤輸入,顯示器。程序設(shè)計(jì)中,字母和符號(hào),鍵盤輸入,顯示器。程序設(shè)計(jì)中,ASCII碼用單引號(hào)碼用單引號(hào)括起來。括起來。nBCD數(shù)(壓縮BCD和非壓縮BCD) 3569的壓縮的壓縮BCD碼表示為:碼表示為:0011 0101 0110 1001 3569的非壓縮的非壓縮BCD碼表示為:碼表示為: 0000 0011 0000 0101 0000 0110 0000 1001 或或 0011 0011 0011 0101 0011 0110 0011 1001 14寄存器操作數(shù):n參加運(yùn)算的

7、數(shù)存放在指令給出的寄存器中,參加運(yùn)算的數(shù)存放在指令給出的寄存器中,可以是可以是16位或位或8位。位。n例:例:n MOV AX,BXn MOV DL,CH15存儲(chǔ)器操作數(shù)n參加運(yùn)算的數(shù)存放在存儲(chǔ)器的某一個(gè)或某兩參加運(yùn)算的數(shù)存放在存儲(chǔ)器的某一個(gè)或某兩個(gè)單元中個(gè)單元中n表現(xiàn)形式:表現(xiàn)形式: 立即數(shù)或寄存器立即數(shù)或寄存器16存儲(chǔ)器操作數(shù)例n例:例: MOV AX,1200H MOV AL,1200H22H11H1200H偏移地址偏移地址AH AL 17四、指令字長(zhǎng)與機(jī)器字長(zhǎng)n指令字長(zhǎng):指令字長(zhǎng):n由操作碼的長(zhǎng)度、操作數(shù)地址長(zhǎng)度、操作數(shù)個(gè)由操作碼的長(zhǎng)度、操作數(shù)地址長(zhǎng)度、操作數(shù)個(gè)數(shù)決定;數(shù)決定;n機(jī)器字

8、長(zhǎng):機(jī)器字長(zhǎng):n計(jì)算機(jī)能夠直接處理的二進(jìn)制數(shù)的位數(shù)。計(jì)算機(jī)能夠直接處理的二進(jìn)制數(shù)的位數(shù)。18五、指令的執(zhí)行速度n指令的字長(zhǎng)影響指令的執(zhí)行速度指令的字長(zhǎng)影響指令的執(zhí)行速度 (常用指令的執(zhí)行時(shí)間見附錄(常用指令的執(zhí)行時(shí)間見附錄C.1)n對(duì)不同的操作數(shù),指令執(zhí)行的時(shí)間不同:對(duì)不同的操作數(shù),指令執(zhí)行的時(shí)間不同: 存儲(chǔ)器存儲(chǔ)器快!快!立即數(shù)立即數(shù)寄存器寄存器19六、CISC和RISC指令系統(tǒng)nCISC指令系統(tǒng)指令系統(tǒng)n指令的功能強(qiáng),種類多,高級(jí)語言和機(jī)器語言間指令的功能強(qiáng),種類多,高級(jí)語言和機(jī)器語言間的距離縮??;的距離縮?。籲指令系統(tǒng)復(fù)雜,難使用;指令系統(tǒng)復(fù)雜,難使用;nPentium之前的之前的CPU

9、均屬于均屬于CISC體系。體系。nRISC指令系統(tǒng)指令系統(tǒng)n指令功能較弱,種類少,格式簡(jiǎn)單;指令功能較弱,種類少,格式簡(jiǎn)單;n多數(shù)指令在一個(gè)計(jì)算機(jī)周期內(nèi)完成;多數(shù)指令在一個(gè)計(jì)算機(jī)周期內(nèi)完成;n對(duì)存儲(chǔ)器的結(jié)構(gòu)和存取速度要求較高。對(duì)存儲(chǔ)器的結(jié)構(gòu)和存取速度要求較高。203.2 尋址方式21n 在計(jì)算機(jī)設(shè)計(jì)中,尋址方式和指令系統(tǒng)的設(shè)計(jì)是非常重要的,這不僅關(guān)系到能否滿足各類軟件開發(fā)的需要,還關(guān)系到機(jī)器運(yùn)行的速度和效率。指令系統(tǒng)是機(jī)器提供給用戶編程的一組指令集,尋址方式是指令中表示操作數(shù)位置的方式。當(dāng)微處理器設(shè)計(jì)好以后,指令系統(tǒng)和尋址方式就不可改變了,程序員必須按照規(guī)定的指令助記符和正確的尋址方式來編寫程

10、序。22尋址方式 尋找操作數(shù)所在地址的方法(尋找操作數(shù)所在地址的方法(8種)種) 尋找轉(zhuǎn)移地址的方法尋找轉(zhuǎn)移地址的方法 本節(jié)本節(jié)23一、立即尋址n指令中的源操作數(shù)是立即數(shù),即源操作數(shù)是參指令中的源操作數(shù)是立即數(shù),即源操作數(shù)是參加操作的數(shù)據(jù)本身加操作的數(shù)據(jù)本身n例:例:MOV AX,1200H12H00HAH ALMOV代代碼碼段段 24二、直接尋址n指令中直接給出操作數(shù)的指令中直接給出操作數(shù)的偏移地址偏移地址n例:例:MOV AX,1200H22H11H1200H偏移地址偏移地址 數(shù)數(shù)據(jù)據(jù)段段AH AL25n直接尋址方式下,操作數(shù)的段地址默認(rèn)為數(shù)據(jù)直接尋址方式下,操作數(shù)的段地址默認(rèn)為數(shù)據(jù)段,但

11、允許段重設(shè),即由指令定義段。段,但允許段重設(shè),即由指令定義段。n例:例:MOV AX,ES:1200H2627三、寄存器尋址n參加操作的操作數(shù)在參加操作的操作數(shù)在CPU的通用寄存器中。的通用寄存器中。n例:例:MOV AX,BX AX BX28四、寄存器間接尋址n參與操作的操作數(shù)存放在內(nèi)存中,參與操作的操作數(shù)存放在內(nèi)存中,其偏移地址為指令中的寄存器的內(nèi)其偏移地址為指令中的寄存器的內(nèi)容。其寄存器只允許是容。其寄存器只允許是SI、DI、BX和和BP。29n例:例:MOV AX,BX 設(shè)設(shè)BX=1200H22H11H1200H偏移地址偏移地址AH AL 11 22數(shù)數(shù)據(jù)據(jù)段段代代碼碼段段MOV30n

12、由寄存器間接給出操作數(shù)的偏移地址;由寄存器間接給出操作數(shù)的偏移地址;n存放偏移地址的寄存器稱為存放偏移地址的寄存器稱為間址寄存器間址寄存器,它們,它們是:是:BX,BP,SI,DIn操作數(shù)的段地址(數(shù)據(jù)處于哪個(gè)段)取決于選操作數(shù)的段地址(數(shù)據(jù)處于哪個(gè)段)取決于選擇哪一個(gè)間址寄存器:擇哪一個(gè)間址寄存器: BX,SI,DI BP默認(rèn)在數(shù)據(jù)段默認(rèn)在數(shù)據(jù)段默認(rèn)在堆棧段默認(rèn)在堆棧段31 寄存器寄存器間接尋址間接尋址基址尋址(間址基址尋址(間址寄存器為基址寄存寄存器為基址寄存 器器BX,BP)變址尋址(間址變址尋址(間址寄存器為變址寄存寄存器為變址寄存 器器SI,DI)32五、寄存器相對(duì)尋址n操作數(shù)的偏移

13、地址為寄存器的內(nèi)容加上一個(gè)位移操作數(shù)的偏移地址為寄存器的內(nèi)容加上一個(gè)位移量量n例:例:nMOV AX,BX+DATA 設(shè):設(shè):DS=2000H,BX=0220H,DATA=05H n則:則:AX=20225H33書寫格式有:nMOV AL ,DATASInMOV AL , SI DATAnMOV AL ,DATA+SInMOV AL , SI +DATAnMOV AL ,DATA+SInMOV AL ,SI+DATA34六、基址-變址尋址n操作數(shù)的偏移地址為一個(gè)基址寄存器的內(nèi)操作數(shù)的偏移地址為一個(gè)基址寄存器的內(nèi)容加上一個(gè)變址寄存器的內(nèi)容,操作數(shù)的容加上一個(gè)變址寄存器的內(nèi)容,操作數(shù)的段地址由選擇

14、的基址寄存器決定。段地址由選擇的基址寄存器決定。n例:例:MOV AX,BX+SIn 或或 MOV AX,BXSI35七、基址-變址-相對(duì)尋址n操作數(shù)的偏移地址為一個(gè)基址寄存器的內(nèi)容加上操作數(shù)的偏移地址為一個(gè)基址寄存器的內(nèi)容加上一個(gè)變址寄存器的內(nèi)容,再加上一個(gè)位移量。一個(gè)變址寄存器的內(nèi)容,再加上一個(gè)位移量。n操作數(shù)的段地址由選擇的基址寄存器決定操作數(shù)的段地址由選擇的基址寄存器決定n例:例:MOV AX,BP+SI+DATA36八、隱含尋址n指令隱含了的一個(gè)或兩個(gè)操作數(shù)的指令隱含了的一個(gè)或兩個(gè)操作數(shù)的地址,即操作數(shù)在默認(rèn)的地址中地址,即操作數(shù)在默認(rèn)的地址中n例:例: MUL BL 指令的執(zhí)行:指

15、令的執(zhí)行:ALBLAX37注:串尋址(注:串尋址(String addressing) 串尋址方式僅在串尋址方式僅在8086的串指令中使用。的串指令中使用。串指令中的操作數(shù)由其他指令提供,且大串指令中的操作數(shù)由其他指令提供,且大多在內(nèi)存單元中。規(guī)定源操作數(shù)的邏輯地多在內(nèi)存單元中。規(guī)定源操作數(shù)的邏輯地址為址為DS:SI;目的操作數(shù)的邏輯地址為;目的操作數(shù)的邏輯地址為ES:DI。當(dāng)執(zhí)行串指令的重復(fù)操作時(shí),根據(jù)。當(dāng)執(zhí)行串指令的重復(fù)操作時(shí),根據(jù)設(shè)定的方向標(biāo)志(設(shè)定的方向標(biāo)志(DF),),SI和和DI會(huì)自動(dòng)調(diào)會(huì)自動(dòng)調(diào)整。整。38 注:注:I/O(輸入(輸入/輸出)端口尋址輸出)端口尋址 (I/O por

16、t addressing) 當(dāng)操作數(shù)在外部設(shè)備時(shí),使用當(dāng)操作數(shù)在外部設(shè)備時(shí),使用I/O指令。此時(shí)有兩種不同的尋址方式訪指令。此時(shí)有兩種不同的尋址方式訪問問I/O端口。端口。 (1) 直接端口尋址方式。直接端口尋址方式。 (2) 采用寄存器間接尋址方式采用寄存器間接尋址方式輸入指令中目的操作數(shù)可為輸入指令中目的操作數(shù)可為AL或或AX;輸出指令中源操作數(shù)可為輸出指令中源操作數(shù)可為AL或或AX。 例例: 1、 IN AL , 25H ;將端口地址為將端口地址為25H的設(shè)備中的的設(shè)備中的8位位 數(shù)據(jù)送數(shù)據(jù)送AL寄存器。寄存器。 2、 MOV DX , 3E4AH ;將端口地址將端口地址3E4AH送送D

17、X寄存器寄存器 OUT DX , AL ;將將AL寄存器中寄存器中8位數(shù)據(jù)送端口地址為位數(shù)據(jù)送端口地址為 3E4AH的設(shè)備中的設(shè)備中393.33.3 8086指令系統(tǒng)40掌握:n指令碼的含義指令碼的含義n指令對(duì)操作數(shù)的要求指令對(duì)操作數(shù)的要求n指令的對(duì)標(biāo)志位的影響指令的對(duì)標(biāo)志位的影響n指令的功能指令的功能418086指令系統(tǒng)從功能上包括六大類:從功能上包括六大類:數(shù)據(jù)傳送數(shù)據(jù)傳送算術(shù)運(yùn)算算術(shù)運(yùn)算邏輯運(yùn)算和移位邏輯運(yùn)算和移位串操作串操作程序控制程序控制處理器控制處理器控制42一. 數(shù)據(jù)傳送指令n通用數(shù)據(jù)傳送通用數(shù)據(jù)傳送n輸入輸出輸入輸出n地址傳送地址傳送n標(biāo)志位操作標(biāo)志位操作431、通用數(shù)據(jù)傳送一

18、般數(shù)據(jù)傳送指令一般數(shù)據(jù)傳送指令堆棧操作指令堆棧操作指令交換指令交換指令查表轉(zhuǎn)換指令查表轉(zhuǎn)換指令字位擴(kuò)展指令字位擴(kuò)展指令特點(diǎn):特點(diǎn):該類指令的執(zhí)行對(duì)標(biāo)志位不產(chǎn)生影響該類指令的執(zhí)行對(duì)標(biāo)志位不產(chǎn)生影響 44(1) 一般數(shù)據(jù)傳送指令n一般數(shù)據(jù)傳送指令一般數(shù)據(jù)傳送指令 MOVn格式:格式:MOV dest,srcn操作:操作:srcn例:例: MOV AL,BL dest45一般數(shù)據(jù)傳送指令 注意:注意:n兩操作數(shù)字長(zhǎng)必須相同兩操作數(shù)字長(zhǎng)必須相同 ;n兩操作數(shù)不允許同時(shí)為存儲(chǔ)器操作數(shù);兩操作數(shù)不允許同時(shí)為存儲(chǔ)器操作數(shù);n兩操作數(shù)不允許同時(shí)為段寄存器;兩操作數(shù)不允許同時(shí)為段寄存器;n在源操作數(shù)是立即數(shù)時(shí),

19、目標(biāo)操作數(shù)不能是段在源操作數(shù)是立即數(shù)時(shí),目標(biāo)操作數(shù)不能是段寄存器;寄存器;nIP和和CS不作為目標(biāo)操作數(shù),不作為目標(biāo)操作數(shù),F(xiàn)LAGS一般也不一般也不作為操作數(shù)在指令中出現(xiàn)。作為操作數(shù)在指令中出現(xiàn)。46一般數(shù)據(jù)傳送指令判斷下列指令的正確性:判斷下列指令的正確性:nMOV AL,BXnMOV AX,SI05HnMOV BXBP,BXnMOV DS,1000HnMOV DX,09HnMOV 1200,SInn n n nn47一般數(shù)據(jù)傳送指令應(yīng)用例將將* * 的的ASCIIASCII碼碼2 2AHAH送入內(nèi)存送入內(nèi)存10001000H H開始的開始的100100個(gè)個(gè)單元中:?jiǎn)卧校?MOV DIM

20、OV DI,1000H1000H MOV CX MOV CX,64H64H MOV AL MOV AL,2AH2AHAGAINAGAIN:MOV DIMOV DI,ALAL INC DI INC DI ;DI+1DI+1 DEC CX DEC CX ;CX-1CX-1 JNZ AGAIN JNZ AGAIN ;CX0CX0則繼續(xù)則繼續(xù) HLT HLT 48上段程序在代碼段中的存放形式設(shè)設(shè)CS=109EHCS=109EH,IP=0100HIP=0100H,則各條指令存放地址下:則各條指令存放地址下: CS : IP CS : IP 機(jī)器指令機(jī)器指令 匯編指令匯編指令 109E 109E:0100

21、 0100 BF0010BF0010 MOV DI MOV DI,1000H1000H 109E 109E:0103 0103 B96400 B96400 MOV CX MOV CX,64H64H 109E 109E:0105 0105 B02AB02A MOV AL MOV AL,2AH2AH 109E 109E:0107 0107 8805 8805 MOV DI MOV DI,ALAL 109E 109E:0109 0109 47 47 INC DI INC DI 109E 109E:010A 010A 4949 DEC CX DEC CX 109E 109E:010B 010B 73F

22、A73FA JNZ 0107H JNZ 0107H 109E 109E:010D 010D F4 F4 HLT HLT49數(shù)據(jù)段中的分布 送上送上2 2AHAH后數(shù)據(jù)段中相應(yīng)存儲(chǔ)單元的內(nèi)容改后數(shù)據(jù)段中相應(yīng)存儲(chǔ)單元的內(nèi)容改變?nèi)缦拢鹤內(nèi)缦拢篋SDS:1000 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A 1000 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DSDS:1010 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A 1010 2A 2A 2A

23、 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DSDS:1020 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A 1020 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DSDS:1030 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A1030 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2ADSDS:1040 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A

24、2A 2A 2A 2A 2A 2A 1040 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DSDS:1050 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A 1050 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DSDS:1060 2A 2A 2A 2A 00 00 00 00 00 00 00 00 00 00 00 001060 2A 2A 2A 2A 00 00 00 00 00 00 00 00 00 00 00 00偏移地址偏移地址D

25、I50(2). 堆棧操作指令掌握:掌握:n有關(guān)堆棧的概念有關(guān)堆棧的概念 棧頂、棧首、棧底棧頂、棧首、棧底n堆棧指令的操作原理堆棧指令的操作原理 執(zhí)行過程,執(zhí)行結(jié)果執(zhí)行過程,執(zhí)行結(jié)果51堆棧操作的原則n先進(jìn)后出先進(jìn)后出n以字為單位以字為單位52堆棧操作指令n壓棧指令壓棧指令 PUSH 格式格式: PUSH srcn出棧指令出棧指令 POP 格式格式: POP dest53壓(進(jìn))棧指令 PUSHn指令執(zhí)行過程:指令執(zhí)行過程: (SP (SP)(SPSP)-2-2 (SPSP)-1-1操作數(shù)高字節(jié)操作數(shù)高字節(jié) (SPSP)-2-2操作數(shù)低字節(jié)操作數(shù)低字節(jié) SP堆堆棧棧段段SP高高8位位低低8位位5

26、4進(jìn)棧指令的操作設(shè)設(shè)AX=1234H,SP=1200H執(zhí)行執(zhí)行 PUSH AX 指令后堆棧區(qū)的狀態(tài):指令后堆棧區(qū)的狀態(tài): 1200H 堆堆棧棧段段 SP-2=11FEH12H34H1200H 堆堆棧棧段段12H 34HAX入棧后入棧后入棧前入棧前55出棧指令POPn指令執(zhí)行過程:指令執(zhí)行過程: SPSP SP+1 SP+1 SP SP+2 SP SP+2操作數(shù)低字節(jié)操作數(shù)低字節(jié)操作數(shù)高字節(jié)操作數(shù)高字節(jié) SP堆堆棧棧段段SP高高8位位低低8位位56出棧指令的操作執(zhí)行執(zhí)行 POP AX 45H67H11FEH 堆堆棧棧段段代代碼碼段段PUSH 45H 67H AX SP+21200H 出棧后出棧后

27、出棧前出棧前57堆棧操作指令說明n指令的操作數(shù)必須是指令的操作數(shù)必須是1616位的;位的;n操作數(shù)可以是寄存器或存儲(chǔ)器兩單元,但不能操作數(shù)可以是寄存器或存儲(chǔ)器兩單元,但不能是立即數(shù);是立即數(shù);n不能從棧頂彈出一個(gè)字給不能從棧頂彈出一個(gè)字給CSCS;nPUSHPUSH和和POPPOP指令在程序中一般成對(duì)出現(xiàn);指令在程序中一般成對(duì)出現(xiàn);nPUSHPUSH指令的操作方向是從高地址向低地址,而指令的操作方向是從高地址向低地址,而POPPOP指令的操作正好相反。指令的操作正好相反。58堆棧操作指令例nPUSH AXnPUSH BXnPUSH WORD PTRBXnPOP WORD PTRBXnPOP A

28、XnPOP BX 如此,會(huì)使如此,會(huì)使AX和和BX的內(nèi)容互換的內(nèi)容互換59(3). 交換指令n格式:格式: XCHG REG XCHG REG,MEM/REGMEM/REGn注:注:n兩操作數(shù)必須有一個(gè)是寄存器操作數(shù)兩操作數(shù)必須有一個(gè)是寄存器操作數(shù)n不允許使用段寄存器不允許使用段寄存器。n例:例: nXCHGXCHGAXAX,BXBXnXCHGXCHG20002000,CLCL60(4). 查表指令n格式:格式: XLATn說明:說明:n用用BX的內(nèi)容代表表格首地址,的內(nèi)容代表表格首地址,AL內(nèi)容為表內(nèi)位移內(nèi)容為表內(nèi)位移量,量,BX+AL得到要查找元素的偏移地址得到要查找元素的偏移地址n操作:

29、操作:n將將BX+AL所指單元的內(nèi)容送所指單元的內(nèi)容送AL61查表指令例數(shù)據(jù)段中存放有一數(shù)據(jù)段中存放有一張張ASCIIASCII碼轉(zhuǎn)換表,碼轉(zhuǎn)換表,設(shè)首地址為設(shè)首地址為20002000H H,現(xiàn)欲查出表中第現(xiàn)欲查出表中第1111個(gè)代碼的個(gè)代碼的ASCIIASCII碼碼303132.394142.45462000H+02000H+1101 29ABE F62查表指令例63(5). 字位擴(kuò)展指令 n將符號(hào)數(shù)的符號(hào)位擴(kuò)展到高位;將符號(hào)數(shù)的符號(hào)位擴(kuò)展到高位;n指令為零操作數(shù)指令,采用隱含尋址,隱含指令為零操作數(shù)指令,采用隱含尋址,隱含的操作數(shù)為的操作數(shù)為AX及及AX,DXn無符號(hào)數(shù)的擴(kuò)展規(guī)則為在高位補(bǔ)

30、無符號(hào)數(shù)的擴(kuò)展規(guī)則為在高位補(bǔ)064字節(jié)到字的擴(kuò)展指令n格式:格式: CBWn操作:將操作:將AL內(nèi)容擴(kuò)展到內(nèi)容擴(kuò)展到AXn規(guī)則:規(guī)則:n若最高位若最高位=1,則執(zhí)行后,則執(zhí)行后AH=FFHn若最高位若最高位=0,則執(zhí)行后,則執(zhí)行后AH=00H65字到雙字的擴(kuò)展指令n格式:格式: CWDn操作:將操作:將AX內(nèi)容擴(kuò)展到內(nèi)容擴(kuò)展到DX AXn規(guī)則:規(guī)則:n若最高位若最高位=1,則執(zhí)行后,則執(zhí)行后DX=FFFFHn若最高位若最高位=0,則執(zhí)行后,則執(zhí)行后DX=0000H66字位擴(kuò)展指令例判斷以下指令執(zhí)行結(jié)果:判斷以下指令執(zhí)行結(jié)果: MOV AL,44H CBW MOV AX,0AFDEH CWD M

31、OV AL,86H CBW672、輸入輸出指令掌握:掌握:n指令的格式及操作指令的格式及操作n指令的兩種尋址方式指令的兩種尋址方式n指令對(duì)操作數(shù)的要求指令對(duì)操作數(shù)的要求68輸入輸出指令n專門面向?qū)iT面向I/O端口操作的指令端口操作的指令n指令格式:指令格式:輸入指令:輸入指令: IN acc,PORT輸出指令輸出指令 :OUT PORT,acc端口地址端口地址69指令尋址方式n直接尋址直接尋址 直接給出直接給出8位端口地址,可尋址位端口地址,可尋址256個(gè)端口個(gè)端口n間接尋址間接尋址 16位端口地址由位端口地址由DX指定,可尋址指定,可尋址64K個(gè)端口個(gè)端口70I/O指令例nIN AX,80H

32、nMOV DX,2400HnIN AL,DXnOUT DX,AXOUT 35H , ALIN AL,35H713、地址傳送指令取偏移地址指令取偏移地址指令LEA*LDS指令指令*LES指令指令72取偏移地址指令LEAn操作:操作:n將變量的將變量的1616位偏移地址取出送目標(biāo)寄存器位偏移地址取出送目標(biāo)寄存器n格式:格式: LEA REG,MEM n指令要求:指令要求:n源操作數(shù)源操作數(shù)必須是一個(gè)必須是一個(gè)存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù),目標(biāo)操作數(shù)通,目標(biāo)操作數(shù)通常是間址寄存器。常是間址寄存器。n例例1:比較比較 LEA SI,2040H 和和 MOV SI,2040H例2:執(zhí)行下列指令執(zhí)行下列指令

33、MOV BX,2080H LEA SI,BX+2 MOV AL,SI 后,各寄存器內(nèi)容?后,各寄存器內(nèi)容? DS:1000H 2080H 2081H 2082H 2083H DS:203DH 001EH1E003D2088v BX=2080H,v SI=2082H, v AL=203DH74LEA指令n比較下列指令:比較下列指令: MOV SI,DATA1 LEA SI,DATA1 MOV BX,BX LEA BX,BX DATA1符號(hào)符號(hào)地址地址12H34H1100H88H77HBX=1100H75LEA指令在程序中的應(yīng)用n將數(shù)據(jù)段中首地址為將數(shù)據(jù)段中首地址為MEM1 的的50個(gè)字節(jié)的數(shù)個(gè)字

34、節(jié)的數(shù)據(jù)傳送到同一邏輯段首地址為據(jù)傳送到同一邏輯段首地址為MEM2的區(qū)域的區(qū)域存放。編寫相應(yīng)的程序段存放。編寫相應(yīng)的程序段 。 76LEA指令在程序中的應(yīng)用 開開 始始取源地址取源地址取目標(biāo)地址取目標(biāo)地址送數(shù)據(jù)塊長(zhǎng)度到送數(shù)據(jù)塊長(zhǎng)度到CL傳送一個(gè)字節(jié)傳送一個(gè)字節(jié)修改地址指針修改地址指針修改計(jì)數(shù)值修改計(jì)數(shù)值計(jì)數(shù)值計(jì)數(shù)值=0? 結(jié)結(jié) 束束NY77LEA指令在程序中的應(yīng)用 LEA SI,MEM1 LEA DI,MEM2 MOV CL,50NEXT: MOV AL,SI MOV DI,AL INC SI INC DI DEC CL JNZ NEXT HLT 784、標(biāo)志位操作指令 LAHFSAHFPUS

35、HFPOPF隱含操作數(shù)隱含操作數(shù)AH隱含操作數(shù)隱含操作數(shù)FLAGS79(1). LAHF,SAHFn指令格式:指令格式:LAHF n操作:將操作:將FLAGS的低的低8位裝入位裝入AHCF.AHFLAGSD15D0D7D0n SAHF執(zhí)行與執(zhí)行與LAHF相反的操作相反的操作OF DFIFTFSFZFAFPFCF80(2). PUSHF,POPFn針對(duì)針對(duì)FLAGS的堆棧操作指令的堆棧操作指令 將標(biāo)志寄存器壓?;驈亩褩棾鰧?biāo)志寄存器壓?;驈亩褩棾?1二. 算術(shù)運(yùn)算類指令82算術(shù)運(yùn)算類指令n加法運(yùn)算指令加法運(yùn)算指令n減法運(yùn)算指令減法運(yùn)算指令n乘法指令乘法指令n除法指令除法指令算術(shù)運(yùn)算指令的執(zhí)行

36、大多對(duì)狀態(tài)標(biāo)志位會(huì)產(chǎn)生影響算術(shù)運(yùn)算指令的執(zhí)行大多對(duì)狀態(tài)標(biāo)志位會(huì)產(chǎn)生影響83一、加法指令 普通加法指令普通加法指令A(yù)DD 帶進(jìn)位位的加法指令帶進(jìn)位位的加法指令A(yù)DC 加加1指令指令I(lǐng)NC加法指令對(duì)操作數(shù)的要求與加法指令對(duì)操作數(shù)的要求與MOV指令相同指令相同841. ADD指令n格式:格式: ADD OPRD1,OPRD2n操作:操作: OPRD1+OPRD2ADD指令的執(zhí)行對(duì)全部指令的執(zhí)行對(duì)全部6個(gè)狀態(tài)標(biāo)志位都產(chǎn)生影響個(gè)狀態(tài)標(biāo)志位都產(chǎn)生影響OPRD185ADD指令例 MOV AL,78H ADD AL,99H指令執(zhí)行后指令執(zhí)行后6個(gè)狀態(tài)標(biāo)志位的狀態(tài)個(gè)狀態(tài)標(biāo)志位的狀態(tài)86ADD指令例 011110

37、00 + 10011001 000100011標(biāo)志位狀態(tài):標(biāo)志位狀態(tài): CF= SF= AF= ZF= PF= OF=101010872. ADC指令n指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響與與ADD指令完全一樣指令完全一樣n指令的操作:指令的操作: OPRD1+OPRD2+CF OPRD1nADC指令多用于多字節(jié)數(shù)相加,使用前要先將指令多用于多字節(jié)數(shù)相加,使用前要先將CF清零。清零。883. INC指令n格式:格式: INC OPRDn操作:操作: OPRD+1 OPRD常用于在程序中修改地址指針,他影響除常用于在程序中修改地址指針,他影響除CF以外

38、的所有標(biāo)志位。以外的所有標(biāo)志位。不能是段寄存器不能是段寄存器或立即數(shù)或立即數(shù)89二、減法指令減法指令減法指令SUB帶借位的減法指令帶借位的減法指令SBB減減1指令指令DEC比較指令比較指令CMP求補(bǔ)指令求補(bǔ)指令NEG減法指令對(duì)操作數(shù)的要求與對(duì)應(yīng)的加法指令相同減法指令對(duì)操作數(shù)的要求與對(duì)應(yīng)的加法指令相同901. SUB指令n格式:格式: SUB OPRD1,OPRD2n操作:操作: OPRD1- OPRD2 OPRD1n對(duì)標(biāo)志位的影響與對(duì)標(biāo)志位的影響與ADD指令相同指令相同912. SBB指令n指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響與與SUB指令完全一樣指

39、令完全一樣n指令的操作:指令的操作: OPRD1- OPRD2- CF OPRD1923. DEC指令n格式:格式: DEC OPRDn操作:操作: OPRD - 1 OPRD指令對(duì)操作數(shù)的要求與指令對(duì)操作數(shù)的要求與INC相同相同指令常用于在程序中修改計(jì)數(shù)值指令常用于在程序中修改計(jì)數(shù)值93應(yīng)用程序例 MOV BL,2NEXT1 :MOV CX,0FFFFHNEXT2: DEC CX JNZ NEXT2 ; ZF=0轉(zhuǎn)轉(zhuǎn)NEXT2 DEC BL JNZ NEXT1 ; ZF=0轉(zhuǎn)轉(zhuǎn)NEXT1 HLT ; 暫停執(zhí)行暫停執(zhí)行944. NEG指令n格式:格式: NEG OPRDn操作:操作: 0 -

40、OPRD OPRD8/16位寄存器或位寄存器或存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)用用0減去操作數(shù),相當(dāng)于對(duì)該操作數(shù)求補(bǔ)碼減去操作數(shù),相當(dāng)于對(duì)該操作數(shù)求補(bǔ)碼兩點(diǎn)注意請(qǐng)兩點(diǎn)注意請(qǐng)見教材見教材p114955. CMP指令n格式:格式: CMP OPRD1,OPRD2n操作:操作: OPRD1- OPRD2 指令執(zhí)行的結(jié)果不影響目標(biāo)操作數(shù),僅影響標(biāo)志位!指令執(zhí)行的結(jié)果不影響目標(biāo)操作數(shù),僅影響標(biāo)志位!96CMP指令n用途:用途: 用于比較兩個(gè)數(shù)的大小,可作為條件轉(zhuǎn)移指令用于比較兩個(gè)數(shù)的大小,可作為條件轉(zhuǎn)移指令轉(zhuǎn)移的條件轉(zhuǎn)移的條件n指令對(duì)操作數(shù)的要求及對(duì)標(biāo)志位的影響與指令對(duì)操作數(shù)的要求及對(duì)標(biāo)志位的影響與SUB指令相同指令相同97CMP指令n兩個(gè)無符號(hào)數(shù)的比較:兩個(gè)無符號(hào)數(shù)的比較: CMP AX,BX 若若 則則 AX BX 若若 則則

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論