![微機(jī)原理與接口技術(shù)第3章課件_第1頁(yè)](http://file4.renrendoc.com/view/2ae77151f070dd09d25e9fc620514ddd/2ae77151f070dd09d25e9fc620514ddd1.gif)
![微機(jī)原理與接口技術(shù)第3章課件_第2頁(yè)](http://file4.renrendoc.com/view/2ae77151f070dd09d25e9fc620514ddd/2ae77151f070dd09d25e9fc620514ddd2.gif)
![微機(jī)原理與接口技術(shù)第3章課件_第3頁(yè)](http://file4.renrendoc.com/view/2ae77151f070dd09d25e9fc620514ddd/2ae77151f070dd09d25e9fc620514ddd3.gif)
![微機(jī)原理與接口技術(shù)第3章課件_第4頁(yè)](http://file4.renrendoc.com/view/2ae77151f070dd09d25e9fc620514ddd/2ae77151f070dd09d25e9fc620514ddd4.gif)
![微機(jī)原理與接口技術(shù)第3章課件_第5頁(yè)](http://file4.renrendoc.com/view/2ae77151f070dd09d25e9fc620514ddd/2ae77151f070dd09d25e9fc620514ddd5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 指令系統(tǒng)3.1 8086/8088的指令格式及尋址方式3.2 微處理器的基本指令系統(tǒng)主要內(nèi)容3.1 8086/8088的指令格式及尋址方式 匯編語(yǔ)言是一種接近于機(jī)器語(yǔ)言的低級(jí)計(jì)算機(jī)語(yǔ)言,在匯編語(yǔ)言中,助記符代替了操作碼,而操作數(shù)部分也像機(jī)器語(yǔ)言一樣需要指明具體位置,具有機(jī)器語(yǔ)言相應(yīng)的尋址方式,當(dāng)然表現(xiàn)形式不是二進(jìn)制符號(hào),而是數(shù)值、寄存器名、變量等。對(duì)有操作數(shù)的指令,在執(zhí)行指令所規(guī)定的操作之前首先要尋找操作數(shù)。3.1.1 指令格式 指令格式是指令字用二進(jìn)制代碼表示的結(jié)構(gòu)形式。計(jì)算機(jī)中的指令由操作碼字段和操作數(shù)字段兩部分組成。操作碼字段指示計(jì)算機(jī)所要執(zhí)行的操作,操作數(shù)字段指出在指令執(zhí)行操作
2、過(guò)程的所需要的操作數(shù)。 匯編語(yǔ)言語(yǔ)句用符號(hào)或符號(hào)地址來(lái)表示操作數(shù)或操作數(shù)地址,它的操作碼與機(jī)器指令是一一對(duì)應(yīng)的。用助記符表達(dá)的指令格式通常為:操作碼操作數(shù)操作數(shù) 操作數(shù)字段可以有一個(gè)、兩個(gè)或三個(gè),通常稱為一地址、二地址、三地址指令。3.1.2 尋址方式 指令中操作的對(duì)象稱為操作數(shù)。8086/8088指令系統(tǒng)中,操作數(shù)分為兩大類:數(shù)據(jù)操作數(shù)和轉(zhuǎn)移地址操作數(shù),尋找這些操作數(shù)的方式稱為尋址方式,即指令中用于說(shuō)明操作數(shù)或操作數(shù)所在地址的方法。 8086/8088的有7種基本的尋址方式:立即數(shù)尋址、寄存器尋址、直接尋址、寄存器間接尋址、寄存器相對(duì)尋址、基址加變址尋址和相對(duì)基址加變址尋址。 1)立即數(shù)尋址
3、方式 操作數(shù)包含在指令中,作為指令的一部分,跟在操作碼后存放在代碼前,這種操作數(shù)稱為立即數(shù)。 立即數(shù)可以是8位,也可以是16位,按“高高低低”原則存放,即高位字節(jié)在高地址存儲(chǔ)單元,低位字節(jié)在低地址存儲(chǔ)單元。圖3-1 立即數(shù)尋址方式的存儲(chǔ)和執(zhí)行示意圖 2)寄存器尋址方式 該尋址方式的操作數(shù)在CPU內(nèi)部的寄存器中,指令中指定寄存器號(hào)。對(duì)于16位操作數(shù),寄存器可以是AX、BX、CX、DX,SI、DI、SP和 BP等;對(duì)于8位操作數(shù),寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH。 3)直接尋址方式 該尋址方式的操作數(shù)一般存放在存儲(chǔ)器的數(shù)據(jù)段,直接尋址的有效地址EA(16位偏移)在指令的操
4、作碼后面直接給出,它與指令的操作碼一起,存放在存儲(chǔ)器的代碼段中,也是高位字節(jié)存放在高地址中,低位字節(jié)存放在低地址中。但是,操作數(shù)本身一般存放在存儲(chǔ)器的數(shù)據(jù)段中。所以操作數(shù)的地址由DS加上指令中直接給出的16位偏移地址得到。如果采用段超越前綴,則操作數(shù)也可含在數(shù)據(jù)段外其他段中。圖3-2 直接尋址方式指令的執(zhí)行情況 4)寄存器間接尋址方式 操作數(shù)在存儲(chǔ)器中,操作數(shù)有效地址在SI、DI、BX、BP這4個(gè)寄存器之一中,在一般情況(即不使用段超越前綴明確指定段寄存器)下,如果有效地址在SI、DI和BX中,則以DS段寄存器的內(nèi)容為段值;如果有效地址在BP中,則以SS段寄存器的內(nèi)容為段值。 寄存器間接尋址方
5、式指令的書寫應(yīng)加方括號(hào),避免與一般的寄存器尋址方式混淆。圖3-3 寄存器間接尋址方式指令的執(zhí)行情況 5)寄存器相對(duì)尋址方式 操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址是一個(gè)基址寄存器(BX、BP)或變址寄存器的(SI、DI)內(nèi)容加上指令中給定的8位獲16位位移量之和。 在一般情況(即不使用段超越前綴明確指定段寄存器)下,如果SI、DI或BX的內(nèi)容作為有效地址的一部分,那么引用的段寄存器是DS;如果BP的內(nèi)容作為有效地值的一部分,那么引用的段寄存器是SS。比如,“MOV BX,BP-4”指令中,源操作數(shù)采用寄存器相對(duì)尋址,引用的段寄存器是SS;“MOV ES:BX+5,AL”指令中,目的操作數(shù)采用寄存器
6、相對(duì)尋址,引用的段寄存器是ES。圖3-4 寄存器相對(duì)尋址方式指令的執(zhí)行情況 6)基址加變址尋址方式 操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址由基址寄存器之一的內(nèi)容與變址寄存器之一的內(nèi)容相加得到。即在一般情況(即不使用段超越前綴明確指定段寄存器)下,如果BP的內(nèi)容作為有效地址的一部分,則以SS的內(nèi)容為段值,否則以DS的內(nèi)容為段值。 7)相對(duì)基址加變址尋址方式 操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址由基址寄存器之一的內(nèi)容與變址寄存器之一的內(nèi)容與指令中給定的8位或16位位移量相加得到。也就是說(shuō),相對(duì)基址變址尋址方式的有效地址是由指令中指定的8 位或16 位位移量(disp)、一個(gè)基址寄存器內(nèi)容和一個(gè)變址寄存器
7、內(nèi)容之和。即: BXSI8 位disp 或 BPDI16位disp 相對(duì)基址加變址這種尋址方式最復(fù)雜,但也是最靈活。其尋址方式的表示方法多種多樣,下面的表示方法是等價(jià)的:MOV AX,BX+DI+1234HMOV AX,1234HBX+DIMOV AX,1234H,BXDIMOV AX,1234HDIBX3.2 微處理器的基本指令系統(tǒng) 80 x86的指令系統(tǒng)大致分為6 種類型:數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令、位操作指令、串操作指令、程序控制指令和處理器控制指令。3.2.1 數(shù)據(jù)傳送指令 數(shù)據(jù)傳送是機(jī)器內(nèi)部最基本的操作之一。這些指令不僅能實(shí)現(xiàn)寄存器之間、寄存器與內(nèi)存之間、寄存器與I/O端口之間的字節(jié)
8、或字?jǐn)?shù)據(jù)的傳送,而且能傳送目標(biāo)地址和狀態(tài)標(biāo)示以及完成堆棧的操作。數(shù)據(jù)傳送指令負(fù)責(zé)把數(shù)據(jù)地址或立即數(shù)傳送到寄存器或存儲(chǔ)單元中。它又可以分為以下5種。1.通用數(shù)據(jù)傳送指令 1)MOV傳送指令 格式:MOVDST,SRC 功能:將源操作數(shù)SRC送到目的操作數(shù)DST中。 操作:(DST) (SRC)需要注意以下幾點(diǎn): 目的操作數(shù)DST和源操作數(shù)SRC不能同時(shí)用內(nèi)存尋址方式,這個(gè)限制適用于所有指令。目的操作數(shù)DST不能是CS,也不能用立即數(shù)方式。MOV指令不影響標(biāo)志位。MOV允許傳送字或雙字。2)入棧指令格式:PUSH SRC功能:將操作數(shù)壓入堆棧中。操作:16位指令:(SP) (SP)-2(SP)+1
9、,(SP) (SRC) 32位指令:(ESP) (ESP)-4(ESP)+3,(ESP)+2,(ESP)+1,(ESP) (SRC)3)出棧指令格式:POPDST功能:將數(shù)據(jù)從堆棧中取出送到DST指定的地址。操作:16位指令:(DST) (SP)+1,(SP)(SP) (SP)+2 32位指令:(DST) (ESP)+3,(ESP)+2,(ESP)+1,(ESP) (ESP) (ESP)+42.交換指令格式:XCHGOPR1,OPR2功能:使兩個(gè)操作數(shù)OPR1和OPR2互相交換,其中一個(gè)操作數(shù)必須在寄存器中,另一個(gè)操作數(shù)可以在寄存器或內(nèi)存中。操作:(OPR1)(OPR2)需要注意以下幾點(diǎn):不允
10、許使用段寄存器。不能在兩個(gè)內(nèi)存之間傳送。不影響標(biāo)志位。不能用立即尋址方式。允許字或字節(jié)操作。3.地址傳送指令1)LEA指令格式:LEAREG,SRC功能:取有效地址送到寄存器。操作:(REG) (SRC)需要注意以下幾點(diǎn):源操作數(shù)可以是除寄存器和立即數(shù)以外的任意一種內(nèi)存尋址方式。目的操作數(shù)可以是16位和32位,但不能用段寄存器。不影響標(biāo)志位。2)LDS指令格式:LDSREG,SRC功能:把源操作數(shù)指定的內(nèi)存中的字節(jié)單元中的低地址中的字送到指定的寄存器中,高地址中的字送到DS寄存器中。操作:(REG)(SRC)注意以下幾點(diǎn):SRC不能是段寄存器。SRC必須使用內(nèi)存尋址方式。不影響標(biāo)志位。3) L
11、ES指令格式:LESREG,SRC功能:把源操作數(shù)指定的內(nèi)存中的字節(jié)單元中的低地址中的字送到指定的寄存器中,高地址中的字送到ES寄存器中。操作:(REG)(SRC)注意以下幾點(diǎn):SRC不能是段寄存器。SRC必須使用內(nèi)存尋址方式。不影響標(biāo)志位。4.狀態(tài)標(biāo)志位傳送指令有4條專門傳送狀態(tài)標(biāo)志位的指令LAHF、SAHT、PUSHF和POPF。1)LAHF指令格式:LAHF 功能:將標(biāo)志送到AH中。操作:(AH)(FLAGS的低字節(jié))2)SAHF指令格式:SAHF功能:將AH中的內(nèi)容送到FLAGS的低8位。操作:(FLAGS的低字節(jié))(AH)3)PUSHF/POPF指令格式:PUSHFPOPF功能:標(biāo)志
12、寄存器進(jìn)棧和出棧操作:PUSHF:(SP) (SP)-2(SP)+1,(SP) (FLAGS)POPF:(FLAGS) (SP)+1,(SP)(SP) (SP)-2注意以下幾點(diǎn):LAHF和PUSHF不影響標(biāo)志位。POPF會(huì)以彈出值設(shè)置標(biāo)志寄存器值,SAHF由新裝入的值確定標(biāo)志的值。5.專用傳送指令專用傳送指令主要限于使用累加器EAX,AX或AL和計(jì)算機(jī)接口傳送信息。1)IN輸入指令長(zhǎng)格式:INAL,PORT(字節(jié))INAX,PORT(字)INEAX,PORT(雙字)操作:(AL) (PORT)(字節(jié))(AX)(PORT+1,PORT)(字)(EAX)(PORT+3,PORT+2,PORT+1,
13、PORT)(雙字)1)IN輸入指令短格式:INAL,DX(字節(jié))INAX,DX(字)INEAX,DX(雙字)操作:(AL)(DX)(字節(jié))(AX)(DX) +1,(DX)(字)(EAX)(DX)+3, (DX)+2, (DX)+1, (DX)(雙字)2)OUT輸入指令長(zhǎng)格式:OUTPORT , AL(字節(jié))OUTPORT , AX (字)OUTPORT , EAX (雙字)操作:(PORT) (AL)(字節(jié))(PORT+1,PORT)(AX)(字)(PORT+3,PORT+2,PORT+1,PORT)(EAX)(雙字)短格式:OUTDX , AL (字節(jié))OUTDX , AX (字)OUTDX
14、 , EAX (雙字)操作:(DX)(AL)(字節(jié))(DX) +1,(DX)(AX)(字)(DX)+3, (DX)+2, (DX)+1, (DX)(EAX)(雙字)3.2.2 算術(shù)運(yùn)算類指令1.加法指令 1)普通加法ADD格式:ADD OPRD,OPRS功能:完成兩個(gè)操作數(shù)相加,結(jié)果送至目的操作數(shù)OPRD。操作:(OPRD)(OPRD)+(OPRS)(用的是各個(gè)字符指的內(nèi)容,因而要加上括號(hào))注意以下幾點(diǎn):如果參與運(yùn)算的操作數(shù)有兩個(gè),則它們的類型必須一致,即同時(shí)為字節(jié),或同時(shí)為字。源操作數(shù)可以存放在通用寄存器或存儲(chǔ)器中,也可以是立即數(shù)。目的操作數(shù)只能在寄存器或存儲(chǔ)單元,不能是立即數(shù)。對(duì)無(wú)符號(hào)數(shù)和
15、有符號(hào)數(shù)的處理一視同仁。既作為無(wú)符號(hào)數(shù)而影響標(biāo)志CF和AF,也作為有符號(hào)數(shù)影響標(biāo)志OF和SF,當(dāng)然總會(huì)影響標(biāo)志ZF和PF。 2)帶進(jìn)位加指令A(yù)DC格式:ADC OPRD,OPRS功能:與ADD指令類似,完成兩個(gè)操作數(shù)相加,但還要把進(jìn)位標(biāo)志CF的當(dāng)前值加上去,把結(jié)果送到目的操作數(shù)OPRD。操作:(OPRD)(OPRD)+(OPRS)+CF注意:ADC與ADD指令相比,唯一的差別是:若在ADC指令前CF1,則在兩個(gè)操作數(shù)相加之后要再加1,否則它與ADD的指令完成的功能是一樣的。3)INC指令格式:INC OPRD功能:完成對(duì)操作數(shù)OPRD加,然后把結(jié)果送回OPRD。操作:(OPRD)(OPRD)+
16、1注意以下幾點(diǎn):操作數(shù)DST可以是通用寄存器,也可以是存儲(chǔ)單元。這條指令執(zhí)行的結(jié)果影響標(biāo)志ZF、ST、OF、PF和AF,但它不影響CF。該指令主要用于調(diào)整地址指針和計(jì)數(shù)器。2.減法指令1)普通減法SUB格式:SUB OPRD, OPRS功能: 完成兩個(gè)操作數(shù)相減,從OPRD中減去OPRS,結(jié)果送到目標(biāo)操作數(shù)OPRD中。操作:(OPRD)(OPRD)-(OPRS)注意事項(xiàng)同ADD指令。2)帶借位減法SBB格式:SUB OPRD,OPRS功能:與SUB 指令類似,在操作數(shù)OPRD減去操作數(shù)OPRS的同時(shí)還要減借位標(biāo)志CF的現(xiàn)行值。操作:(OPRD)(OPRD)-(OPRS)-CF3)減指令DEC格
17、式:DEC OPRD功能:這條指令把操作數(shù)OPRD減,并把結(jié)果送回OPRD。操作: (OPRD)(OPRD)-1注意以下幾點(diǎn):操作數(shù)OPRD可以是通用寄存器,也可以是存儲(chǔ)單元。在相減時(shí),把操作數(shù)作為一個(gè)無(wú)符號(hào)數(shù)對(duì)待。這條指令執(zhí)行的結(jié)果影響標(biāo)志ZF、SF、OF、PF和AF,但它不影響CF。該指令主要用于調(diào)整指針和計(jì)數(shù)器。)取補(bǔ)指令NEG格式:NEG OPRD功能:這條指令對(duì)操作數(shù)取補(bǔ),就是用零減去操作數(shù)OPRD,再把結(jié)果送回OPRD。操作:(OPRD)0 -(OPRD)注意以下幾點(diǎn):在字節(jié)操作時(shí)對(duì)-128取補(bǔ),或在字操作時(shí)對(duì)-32 768取補(bǔ),則操作數(shù)沒有變化,但OF被置位。操作數(shù)可以是通用寄存
18、器,也可以是存儲(chǔ)單元。此指令的執(zhí)行結(jié)果影響CF、ZF、SF、OF、A和PF,一般總使CF為,除非操作數(shù)為。)比較指令CMP格式: CMP OPRD,OPRS功能:完成操作數(shù)OPRD減去操作數(shù)OPRS,運(yùn)算結(jié)果不送到OPRD,但影響標(biāo)志CF,ZF,SF,OF,AF和PF。操作:操作數(shù)(OPRD)操作數(shù)(OPRS)3乘除指令1)無(wú)符號(hào)數(shù)乘法指令MUL格式:MUL OPRD功能:如果OPRD是字節(jié)操作數(shù),則把AL中的無(wú)符號(hào)數(shù)與OPRD相乘,16位結(jié)果送到AX中;如果OPRD是字操作數(shù),則把 AX中的無(wú)符號(hào)數(shù)與OPRD相乘,32 位結(jié)果送到DX和AX中,DX含高16位,AX含低16位。所以由操作數(shù)OP
19、RD決定是字節(jié)相乘,還是字相乘。操作:字節(jié)操作:(AX)(AL)(OPRD) 字操作:(DX,AX)(AX)(OPRD)2)帶符號(hào)數(shù)乘法指令I(lǐng)MUL格式:IMUL OPRD 功能:這條指令把被乘數(shù)和乘數(shù)均作為有符號(hào)數(shù),此外與指令MUL完成類似。操作:字節(jié)操作:(AX )(AL)(OPRD) 字操作:(DX,AX)(AX)(OPRD)3)無(wú)符號(hào)數(shù)除法指令DIV格式:DIV OPRD功能:如果OPRD是字節(jié)操作數(shù),則把AX中的無(wú)符號(hào)除數(shù)以O(shè)PRD,位的商送到AL中,8位的余數(shù)送到AH;如果OPRD是字操作數(shù),則把DX(高16位)和AX中的無(wú)符號(hào)數(shù)除以O(shè)PRD,16位的商送到 AX,16位的余數(shù)送到
20、 DX中。所以由操作數(shù)OPRD決定是字節(jié)除,還是字除。操作:字節(jié)操作:(AL)(AX)(OPRD)的商(AH)(AX)(OPRD)的余數(shù)字操作: (AX)(DX,AX)(OPRD)的商 (DX)(DX,AX)(OPRD)的余數(shù)4)帶符號(hào)數(shù)除法指令I(lǐng)DIV格式:IDIV OPRD功能:這條指令把被除數(shù)和除數(shù)均作為有符號(hào)數(shù),此外與指令DIV完成類似。操作:字節(jié)操作:(AL)(AX)(OPRD)的商(AH)(AX)(OPRD)的余數(shù)字操作:(AX)(DX,AX)(OPRD)的商(DX)(DX,AX)(OPRD)的余數(shù)3.2.3 邏輯運(yùn)算指令 1.邏輯與指令A(yù)ND 格式:AND DST,SRC 功能:
21、對(duì)兩個(gè)操作數(shù)執(zhí)行按位的邏輯與運(yùn)算,即只有相“與”的兩位都是1,結(jié)果才是1;否則,“與”的結(jié)果為0。邏輯與的結(jié)果送到目的操作數(shù)。 操作:(DST) (DST) (SRC)注意以下幾點(diǎn):源操作數(shù)可以是任意尋址方式。目的操作數(shù)只能是立即數(shù)之外的其他尋址方式。兩個(gè)操作數(shù)不能同時(shí)為內(nèi)存尋址方式。所有雙操作數(shù)的邏輯指令均設(shè)置CF=OF=0,根據(jù)結(jié)果設(shè)置SF、ZF和PF狀態(tài),而對(duì)AF未定義。2.邏輯或指令OR 格式:ORDST,SRC 功能:對(duì)兩個(gè)操作數(shù)執(zhí)行按位的邏輯或運(yùn)算,即只要相“或”的兩位有一位是1,結(jié)果就是1。結(jié)果送到目的操作數(shù)。 操作:(DST)(DST)(SRC) 注意事項(xiàng)同邏輯與指令A(yù)ND。3
22、.邏輯異或指令XOR 格式:XORDST,SRC 功能:對(duì)兩個(gè)操作數(shù)執(zhí)行按位的邏輯異或運(yùn)算,相異或的兩位不相同時(shí),結(jié)果就是1,否則,異或的結(jié)果為0。結(jié)果送到目的操作數(shù)。 操作:(DST)(DST)(SRC) 注意事項(xiàng)同邏輯與指令A(yù)ND。4.邏輯非指令NOT 格式:NOT OPR 功能:對(duì)操作數(shù)按位求反,NOT指令是一個(gè)單操作數(shù)指令,結(jié)果送到目的操作數(shù)。 操作:(OPR) (OPR)注意以下幾點(diǎn):源操作數(shù)和目的操作數(shù)可以是任意尋址方式。不影響標(biāo)志位。5.測(cè)試指令TEST 格式:TEST DST,SRC 功能:對(duì)兩個(gè)操作數(shù)執(zhí)行按位的邏輯與運(yùn)算,但結(jié)果不回送目的操作數(shù),只根據(jù)結(jié)果來(lái)設(shè)置狀態(tài)標(biāo)志。 操
23、作:(DST)(SRC)(符號(hào)表示邏輯與)3.2.4 移位指令移位指令包含有邏輯移位、算術(shù)移位和循環(huán)移位3種類型6條指令。1.邏輯左移位 格式:SHLOPR,CNT 功能:SHL指令向左逐位移動(dòng)CNT次,每次逐位移動(dòng)后,最低位用0來(lái)補(bǔ)充,最高位移入CF,如圖3-6所示。注意以下幾點(diǎn):(1)目的操作數(shù)OPR可以是除立即數(shù)外的任何尋址方式。(2)移位次數(shù)CNT=1時(shí),1可以直接寫在指令中,CNT1時(shí),CNT必須放入CL寄存器中。(3)指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值。當(dāng)CF=1時(shí),操作數(shù)左移的最高位的值為1,CF=0;操作數(shù)左移的最高位的值為0。SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。圖3-6
24、邏輯左移2.邏輯右移位 格式:SHROPR,CNT 功能:SHR指令向右逐位移動(dòng)CNT次,每次逐位移動(dòng)后,最高位用0來(lái)補(bǔ)充,最低位移入CF,如圖3-7所示。 注意事項(xiàng)同邏輯左移指令(SHL)中的(1)、(2)。不同的是:指令對(duì)標(biāo)志位的影響,CF=移入的數(shù)值。CF=1,移動(dòng)后操作數(shù)最高位的值補(bǔ)0,最低位的1移走。CF=0,移動(dòng)時(shí)最高位的值補(bǔ)0,最末位的0移走。SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。圖3-7 邏輯右移3.算術(shù)左移 格式:SALOPR,CNT 功能:SAL指令向左逐位移動(dòng)CNT次,每次逐位移動(dòng)后,最低位用0來(lái)補(bǔ)充,最高位移入CF,如圖3-8所示。 注意事項(xiàng)同邏輯左移指令(SHL)中的
25、(1)、(2)。不同的是:指令對(duì)標(biāo)志位的影響,指令對(duì)標(biāo)志位的影響。CF=移入的數(shù)值。當(dāng)CF=1時(shí),操作數(shù)左移的最高位的值為1,操作數(shù)的最高位補(bǔ)1,。CF=0,操作數(shù)左移的最高位的值為0。操作數(shù)的最高位補(bǔ)0,最末位也補(bǔ)0。SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。圖3-8 算術(shù)左移4.算術(shù)右移 格式:SAROPR,CNT 功能:SAR指令向右逐位移動(dòng)CNT次,每次逐位移動(dòng)后,最高位用符號(hào)位來(lái)補(bǔ)充,最低位移入CF,如圖3-9所示。 注意事項(xiàng)同邏輯左移指令(SHL)中的(1)、(2)。不同的是:指令對(duì)標(biāo)志位的影響,CF=移入的數(shù)值。CF=1,移動(dòng)時(shí)操作數(shù)最高位的值補(bǔ)原來(lái)的二進(jìn)制的值,最低位的1移走。CF
26、=0,移動(dòng)時(shí)最高位的值補(bǔ)原來(lái)的二進(jìn)制的值,最末位的0移走。SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。圖3-9 算術(shù)右移5.循環(huán)左移 格式:ROLOPR,CNT 功能:ROL對(duì)由OPR指定的寄存器或存儲(chǔ)器操作數(shù)左移循環(huán)移動(dòng)CNT所指定的次數(shù),每左移一次,把最高位同時(shí)移入CF和操作數(shù)最低位,如圖3-10所示。 注意事項(xiàng)同邏輯左移指令(SHL)中的(1)、(2)。不同的是:指令對(duì)標(biāo)志位的影響,CF=移入的數(shù)值。CF=1,移動(dòng)后操作數(shù)最高位的值1移到操作數(shù)末位,最低位的值向前移動(dòng)。CF=0,移動(dòng)時(shí)最高位的值0移到操作數(shù)末位,最低位的值向前移動(dòng)。SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。圖3-10 循環(huán)左移 6
27、.循環(huán)右移 格式:ROROPR,CNT 功能:ROR 對(duì)由OPR指定的寄存器或存儲(chǔ)器操作數(shù)右移循環(huán)移動(dòng)CNT所指定的次數(shù),每右移一次,把最低位同時(shí)移入CF和操作數(shù)最高位,如圖3-11所示。 注意事項(xiàng)同邏輯左移指令(SHL)中的(1)、(2)。不同的是:指令對(duì)標(biāo)志位的影響,CF=移入的數(shù)值。CF=1,移動(dòng)后操作數(shù)最末位的值1移到操作數(shù)最高位。CF=0,移動(dòng)時(shí)操作數(shù)最高位的值0移到操作數(shù)末位。SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。圖3-11 循環(huán)右移3.2.5 串處理指令1.串傳送指令(MOVS)格式:MOVS DST, SRC (該指令應(yīng)在操作數(shù)中注明傳送的是字節(jié)、字或雙字)MOVSB (字節(jié))
28、 MOVSW(字)MOVSD(雙字)功能:該指令是把指針DS:SI所指向的字節(jié)、字或雙字傳送給指針ES:DI所指向內(nèi)存單元,并根據(jù)標(biāo)志位DF對(duì)寄存器DI和SI作相應(yīng)增減。注意以下幾點(diǎn):該指令的執(zhí)行不影響任何標(biāo)志位。除了指示源串和目的串的地址外,還需指出操作是字節(jié)傳送還是字傳送的。2.串存儲(chǔ)指令(STOS)格式:STOS DSTSTOSB (字節(jié)) STOSW(字)STOSD(雙字)功能:該指令是把寄存器AL、AX或EAX中的值存于以指針ES:DI所指向內(nèi)存單元為起始的一片存儲(chǔ)單元里,并根據(jù)標(biāo)志位DF對(duì)寄存器DI作相應(yīng)增減。注意以下幾點(diǎn):該指令不影響任何標(biāo)志位。除了指出字符串的當(dāng)前地址外,目的操
29、作數(shù)還指示了從相應(yīng)累加器中移動(dòng)出的是字節(jié)還是字。3.串載入指令(LODS)格式:LODS DSTLODSB (字節(jié)) LODSW(字)LODSD(雙字)功能:從指針DS:SI所指向的內(nèi)存單元開始,取一個(gè)字節(jié)、字或雙字進(jìn)入AL、AX或EAX中,并根據(jù)標(biāo)志位DF對(duì)寄存器SI作相應(yīng)增減。注意以下幾點(diǎn):該指令的執(zhí)行不影響任何標(biāo)志位。在指令LODS中,它會(huì)根據(jù)其地址表達(dá)式的屬性來(lái)決定讀取一個(gè)字節(jié)、字或雙字。即:當(dāng)該地址表達(dá)式的屬性為字節(jié)、字或雙字時(shí),將從指針DS:SI處讀一個(gè)字節(jié)到AL中,或讀一個(gè)字到AX,或讀一個(gè)雙字到EAX中,與此同時(shí),SI還將分別增減1,2或4。除了指出字符串的當(dāng)前地址外,源操作數(shù)
30、還指出了送入累加器的是字節(jié)還是字。4.串比較指令(CMPS)格式:CMPSDST, SRCCMPSB (字節(jié)) CMPSW(字) CMPSD(雙字)功能:該指令是把指針DS:SI和ES:DI所指向字節(jié)、字或雙字的值相減,并用所得到的差來(lái)設(shè)置有關(guān)的標(biāo)志位。與此同時(shí),變址寄存器SI和DI也將根據(jù)標(biāo)志位DF的值作相應(yīng)增減。注意以下幾點(diǎn):受影響的標(biāo)志位:AF、CF、OF、PF、SF和ZF。除了指示源串和目的串的地址外,操作數(shù)還指出操作是字節(jié)比較還是字比較。5.串掃描指令(SCAS)格式:SCASDST SCASB (字節(jié)) SCASB(字) SCASD(雙字)功能:該指令是用指針ES:DI所指向字節(jié)、
31、字或雙字的值與相應(yīng)的AL、AX或EAX的值相減,用所得到的差來(lái)設(shè)置有關(guān)標(biāo)志位。與此同時(shí),變址寄存器DI還將根據(jù)標(biāo)志位DF的值進(jìn)行增減。注意以下幾點(diǎn):受影響的標(biāo)志位:AF、CF、OF、PF、SF和ZF。除了指示源串和目的串的地址外,操作數(shù)還指出操作是字節(jié)掃描還是字掃描。6.重復(fù)前綴指令(REP)格式:REPLODS/LODSB/LODSW/LODSDREPSTOS/STOSB/STOSW/STOSDREPMOVS/MOVSB/MOVSW/MOVSD功能:重復(fù)前綴指令是重復(fù)其后的字符串操作指令,重復(fù)的次數(shù)由CX來(lái)決定。每執(zhí)行一次操作,CX減1,直到CX等于0為止。執(zhí)行步驟如下:(1)判斷:CX=0
32、。(2)如果CX=0,則結(jié)束重復(fù)操作,執(zhí)行程序中的下一條指令。(3)否則,CX=CX-1(不影響有關(guān)標(biāo)志位),并執(zhí)行其后的字符串操作指令,在該指令執(zhí)行完后,再轉(zhuǎn)到步驟(1)。 7.條件重復(fù)前綴指令 條件重復(fù)前綴指令與前面的重復(fù)前綴指令功能相類似,所不同的是:其重復(fù)次數(shù)不僅由CX來(lái)決定,而且還會(huì)由標(biāo)志位ZF來(lái)決定。根據(jù)ZF所起的作用又分為:相等重復(fù)前綴指令REPE/REPZ和不等重復(fù)前綴指令REPNE/REPNZ。 1)相等重復(fù)前綴指令 相等重復(fù)前綴指令的一般格式為: REPE/REPZSCAS/SCASB/SCASW/SCASD REPE/REPZCMPS/CMPSB/CMPSW/CMPSD
33、執(zhí)行步驟如下: (1)判斷條件:CX0 且 ZF=1。 (2)如果條件不成立,則結(jié)束重復(fù)操作,執(zhí)行程序中的下一條指令。 (3)否則,CX=CX-1(不影響有關(guān)標(biāo)志位),并執(zhí)行其后的字符串操作指令,在該指令執(zhí)行完后,再轉(zhuǎn)到步驟(1)。2)不等重復(fù)前綴指令不等重復(fù)前綴指令的一般格式為:REPNE/REPNZSCAS/SCASB/SCASW/SCASDREPNE/REPNZCMPS/CMPSB/CMPSW/CMPSD執(zhí)行步驟如下:(1)判斷條件:CX0 且 ZF=0。(2)如果條件不成立,則結(jié)束重復(fù)操作,執(zhí)行程序中的下一條指令。(3)否則,CX=CX-1(不影響有關(guān)標(biāo)志位),并執(zhí)行其后的字符串操作指
34、令,在該指令執(zhí)行完后,再轉(zhuǎn)到步驟(1)。3.2.6 控制轉(zhuǎn)移指令 在80 x86中,程序的執(zhí)行序列是由代碼段寄存器CS和指令指針I(yè)P確定。CS包含當(dāng)前指令在代碼段地址,IP則是要執(zhí)行的下一條指令的偏移地址。程序的執(zhí)行一般是依指令序列順序執(zhí)行,但有時(shí)需要改變程序的流程??刂妻D(zhuǎn)移類指令通過(guò)修改CS和IP寄存器的值來(lái)改變程序的執(zhí)行順序,包括5組指令:無(wú)條件轉(zhuǎn)移指令、有條件轉(zhuǎn)移指令、循環(huán)指令、子程序調(diào)用指令和中斷指令。1.無(wú)條件轉(zhuǎn)移指令1)段內(nèi)直接轉(zhuǎn)移格式:JMP SHORT OPR ;短轉(zhuǎn)移JMP NEAR PTR OPR ;近程轉(zhuǎn)移功能:采用相對(duì)尋址將當(dāng)前IP值與JMP指令中給出的偏移量之和送IP
35、中。操作:(IP) (IP)+8位位移量(IP) (IP)+ 16位位移量注意以下幾點(diǎn):段內(nèi)短轉(zhuǎn)移(SHORT)指令偏移量為8 位,允許轉(zhuǎn)移偏移值的范圍為-128+127。段內(nèi)近程轉(zhuǎn)移(NEAR)指令在16位指令模式下,偏移量為16位,允許轉(zhuǎn)移偏移值范圍為-215+215-1。在32位指令模式下,偏移值范圍為-231+231-1。2)段內(nèi)間接轉(zhuǎn)移格式:JMP WORD PTR OPR功能:段內(nèi)間接轉(zhuǎn)移,該指令地址在存儲(chǔ)器中,默認(rèn)段寄存器根據(jù)參與尋址的通用寄存器來(lái)確定,將指定存儲(chǔ)單元的字取出直接送IP實(shí)現(xiàn)程序轉(zhuǎn)移。操作:(IP) (EA)注意以下幾點(diǎn):EA值由OPR的尋址方式確定,但不能為立即數(shù)
36、。如果指定的是寄存器,則把寄存器的內(nèi)容送到IP或EIP寄存器。如果指定的是存儲(chǔ)器中的一個(gè)字或雙字,則把存儲(chǔ)單元對(duì)應(yīng)的內(nèi)容送到IP或EIP寄存器。3)段間直接轉(zhuǎn)移格式:JMP FAR PTR OPR功能:段間直接轉(zhuǎn)移,F(xiàn)AR PTR說(shuō)明標(biāo)號(hào)OPR具有遠(yuǎn)程屬性。將指令中由OPR指定的段值送CS,偏移地址送IP。操作:(IP) OPR的段內(nèi)偏移地址 (CS) OPR所在的段的段地址注意以下幾點(diǎn):直接尋地方式,指令轉(zhuǎn)移的段地址和偏移地址直接存放在指令的操作數(shù)字段中,所以只要用其中的段地址和偏移地址分別取代CS和IP寄存器中的內(nèi)容就能實(shí)現(xiàn)轉(zhuǎn)移。在匯編格式中OPR可以使用符號(hào)地址,在機(jī)器語(yǔ)言中則要指定段地
37、址和偏移地址。4)段間間接轉(zhuǎn)移格式:JMPDWORD PTR OPR功能:段間間接轉(zhuǎn)移,從存儲(chǔ)單元取雙字作為要轉(zhuǎn)移的目標(biāo)地址。操作:(IP)(EA) (CS)(EA+2)注意以下幾點(diǎn):EA由OPR的尋地方式確定,它可以是除立即數(shù)和寄存器外的任何存儲(chǔ)器。目標(biāo)地址存放在主存中連續(xù)的兩個(gè)字單元中,低位字送到IP中,高位字送到CS中。2.條件轉(zhuǎn)移指令1)單標(biāo)志位條件轉(zhuǎn)移 (1)JZ(或JE) 格式:JZ (或JE)OPR 功能:結(jié)果為零或相等則轉(zhuǎn)移。 條件:ZF=1 (2)JNZ(或JNE) 格式:JNZ(或JNZ)OPR 功能:結(jié)果不為零或不相等則轉(zhuǎn)移。 條件:ZF=0 (3)JS 格式:JS OP
38、R 功能:結(jié)果為負(fù)則轉(zhuǎn)移。 條件:SF=1 (4)JNS 格式:JNSOPR 功能:結(jié)果為正則轉(zhuǎn)移。 條件:SF=0 (5)JO 格式:JOOPR 功能:溢出則轉(zhuǎn)移。 條件:OF=1 (6)JNO 格式:JNOOPR 功能:不溢出則轉(zhuǎn)移。 條件:OF=0 (7)JP 格式:JPOPR 功能:奇偶位為1則轉(zhuǎn)移。 條件:PF=1 (8)JNP 格式:JNPOPR 功能:奇偶位為0則轉(zhuǎn)移。 條件:PF=0 (9)JB(或JC) 格式:JB(或JC)OPR 功能:低于或不高于,或等于,或進(jìn)位為1則轉(zhuǎn)移。 條件:CF=1 (10)JNB(或JNC) 格式:JNB(或JNC)OPR 功能:不低于或高于,或
39、等于,或進(jìn)位為0則轉(zhuǎn)移。 條件:CF=0 2)無(wú)符號(hào)數(shù)比較條件轉(zhuǎn)移 (1)JBE(或JNA) 格式:JBE(或JNA)OPR 功能:低于或等于,或不高于則轉(zhuǎn)移 條件:CF=1或ZF=1 (2)JNB(或JA) 格式:JNB(或JA)OPR 功能:不低于或不等于,且高于則轉(zhuǎn)移 條件:CF=0且ZF=03)帶符號(hào)數(shù)比較條件轉(zhuǎn)移 (1)JL(或JNGE) 格式:JL(或JNGE)OPR 功能:小于,或不大于或等于則轉(zhuǎn)移 條件:SF=1或OF=1 (2)JNL(或JGE) 格式:JNL(或JGE)OPR 功能:不小于,或大于或等于則轉(zhuǎn)移 條件:SF=0或OF=0 (3)JLE(或JNG) 格式:JLE
40、(或JNG)OPR 功能:小于或等于,或不大于則轉(zhuǎn)移 條件:SF和OF異號(hào)或ZF=1 (4)JNLE(或JG) 格式:JNLE(或JG)OPR 功能:不小于或等于,或大于則轉(zhuǎn)移 條件:SF和OF同號(hào)且ZF=0 4)測(cè)試CX條件轉(zhuǎn)移 格式:JCXA 功能:CX寄存器的內(nèi)容為0則轉(zhuǎn)移。 條件:(CS)=03.其他控制指令1)循環(huán)控制指令格式:LOOP cc TARGET功能:將(E)CX內(nèi)容減1,不影響標(biāo)志位,若(E)CX不等于0,且測(cè)試條件CC成立,則轉(zhuǎn)移到目標(biāo)地址TARGET處執(zhí)行程序。轉(zhuǎn)移范圍為-128+127。循環(huán)控制指令如表4-1所示。表4-1循環(huán)控制指令助 記 符循環(huán)條件說(shuō) 明CX0C
41、XCX-1,若CX-1,若CX0則循環(huán)LOOPWCX0CXCX-1,若CX0則循環(huán)LOOPDECX0ECXECX-1,若ECX0則循環(huán)LOOPE/LOOPZCX0且ZF=1CXCX-1,若CX0且ZF=1,則循環(huán)LOOPEW/LOOPZWECX0且ZF=1CXCX-1,若CX0且ZF=1,則循環(huán)LOOPED/LOOPZDECX0且ZF=1ECXECX-1,若ECX0且ZF=1,則循環(huán)LOOPNE/LOOPNZCX0且ZF=0CXCX-1,若CX0且ZF=0,則循環(huán)LOOPNEW/LOOPNZWCX0且ZF=0CXCX-1,若CX0且ZF=0,則循環(huán)LOOPNED/LOOPNZDECX=0且ZF
42、=0ECXECX-1,若ECX0且ZF=0則循環(huán) 2)子程序調(diào)用指令 子程序的調(diào)用和返回是一對(duì)互逆操作,也是一種特殊的轉(zhuǎn)移操作。一方面,當(dāng)調(diào)用一個(gè)子程序時(shí),程序的執(zhí)行順序被改變,CPU將轉(zhuǎn)而執(zhí)行子程序中的指令序列,當(dāng)子程序執(zhí)行完后,還要求CPU能轉(zhuǎn)而執(zhí)行調(diào)用指令下面的指令,它是一種“有去有回”的操作。為了滿足子程序調(diào)用和返回操作的特殊性,在指令系統(tǒng)中設(shè)置了相應(yīng)的調(diào)用和返回特定指令。(1)調(diào)用指令(CALL)格式:CALL OPRD 功能:程序轉(zhuǎn)到OPRD地址處執(zhí)行。 過(guò)程調(diào)用可分為段內(nèi)調(diào)用和段間調(diào)用。尋址方式也可以分為直接尋址和間接尋址。本指令不影響標(biāo)志位。 (2)返回指令(RET) 當(dāng)子程序
43、執(zhí)行完時(shí),需要返回到調(diào)用它的程序之中。為實(shí)現(xiàn)此功能,指令系統(tǒng)提供了一條專用的返回指令。格式:RET/RETN/RETF Imm功能:從堆棧中取出斷點(diǎn)地址,送給PC,并從斷點(diǎn)處開始繼續(xù)執(zhí)行程序。RET應(yīng)放在一般子程序的末尾。3.2.7 處理機(jī)控制指令1標(biāo)志處理指令 這一組指令用來(lái)設(shè)置或清除標(biāo)志位,它們只影響本指令指定的標(biāo)志,而不影響其他標(biāo)志位。CLC(clear carry):進(jìn)位位置0指令,執(zhí)行操作后,CF=0。STC(set carry):進(jìn)位位置1指令,執(zhí)行操作后,CF=1。CMC(complement carry):進(jìn)位位求反指令,執(zhí)行操作后,CF=!CF。CLD(clear direction):方向標(biāo)志位置0指令,執(zhí)行后DF=0。STD(set direction):方向標(biāo)志位置1指令,執(zhí)行后DF=1。CLI(clear interrupt):中斷標(biāo)志置0指令,執(zhí)行后IF=0。STI(set interrupt):中斷標(biāo)志置1指令,執(zhí)行后IF=1。 2.其他指令 1)NOP (no operation) 無(wú)操作指令 格式:NOP 該指令不執(zhí)行任何操作,其機(jī)器碼占有一個(gè)字節(jié)單元,在調(diào)試程序時(shí)往往用這條指令占有一定的存儲(chǔ)單元
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公環(huán)境下的家校協(xié)同教育模式探討
- 新課改下的小學(xué)數(shù)學(xué)教學(xué)策略變化與影響
- 算法優(yōu)化在嵌入式辦公系統(tǒng)中的實(shí)踐案例
- 針對(duì)學(xué)習(xí)障礙學(xué)生的專業(yè)輔導(dǎo)課程設(shè)置
- 個(gè)人倉(cāng)儲(chǔ)租賃合同模板
- 上海市商品買賣合同范本
- 買賣合同爭(zhēng)議解決協(xié)議書模板
- 不動(dòng)產(chǎn)附負(fù)擔(dān)租賃合同
- 個(gè)人培訓(xùn)機(jī)構(gòu)與教師簽訂勞動(dòng)合同的法律效力解析
- 個(gè)人借車合同范本
- 多維閱讀第10級(jí) who is who 看看都是誰(shuí)
- 滑雪運(yùn)動(dòng)介紹
- 高二下學(xué)期英語(yǔ)閱讀限時(shí)訓(xùn)練(一)
- 半導(dǎo)體制造工藝-13薄膜沉積(下)綜述課件
- 大數(shù)據(jù)和人工智能知識(shí)考試題庫(kù)600題(含答案)
- 2021譯林版高中英語(yǔ)選擇性必修一單詞表
- 保健食品經(jīng)營(yíng)環(huán)節(jié)檢查方法
- 民法典關(guān)于監(jiān)護(hù)的規(guī)定解讀
- 幼兒園大班綜合《月亮姑娘做衣裳》微課件
- 顯微外科課件
- 教育哲學(xué)課件第一章-教育哲學(xué)的歷史發(fā)展
評(píng)論
0/150
提交評(píng)論