第3章 尋址方式和指令系統(tǒng)(創(chuàng)新142)_第1頁
第3章 尋址方式和指令系統(tǒng)(創(chuàng)新142)_第2頁
第3章 尋址方式和指令系統(tǒng)(創(chuàng)新142)_第3頁
第3章 尋址方式和指令系統(tǒng)(創(chuàng)新142)_第4頁
第3章 尋址方式和指令系統(tǒng)(創(chuàng)新142)_第5頁
已閱讀5頁,還剩105頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第3 3章章 尋址方式與指令系統(tǒng)尋址方式與指令系統(tǒng)3.1 指令格式與尋址方式指令格式與尋址方式3.2 8086 指令系統(tǒng)指令系統(tǒng)3.3 80X86 與與Pentium 擴(kuò)充和增加的指令擴(kuò)充和增加的指令先看一個例子例:先看一個例子例:(分別以語言和匯編語言編寫)(分別以語言和匯編語言編寫)#include stdio.h int main(int argc, char* argv) int a,b,c; a=1; b=2; c=a+b; printf(“c=%dn,c); return 0; 編譯后的目標(biāo)文編譯后的目標(biāo)文件達(dá)到件達(dá)到3.59KB語言編寫語言編寫data segmenta db

2、?b db ?c db ?string db c=$data endscode segmentmain proc far assume cs:code, ds:data, es:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,axmov a,1 mov b,2 mov al,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 int 21h mov dl,0ah int 21h mov dl,0dh in

3、t 21h retmain endpcode ends end start匯編后的目匯編后的目標(biāo)文件只有標(biāo)文件只有208208字節(jié)字節(jié)匯編語言編寫匯編語言編寫指令構(gòu)成指令構(gòu)成 指令由操作碼和操作數(shù)兩部分構(gòu)成指令由操作碼和操作數(shù)兩部分構(gòu)成操作碼操作碼說明計算機要執(zhí)行哪種操作,如傳送、運算、說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。分。操作數(shù)操作數(shù)是指令執(zhí)行的參與者,即各種操作的對象。是指令執(zhí)行的參與者,即各種操作的對象。有些指令不需要操作數(shù),通常的指令都有一個或兩有些指令不需要操作數(shù),通常的指令都有一個或兩

4、個操作數(shù),也有個別指令有個操作數(shù),也有個別指令有3 3個甚至個甚至4 4個操作數(shù)。個操作數(shù)。操作碼操作碼操作數(shù)操作數(shù)指令中的操作碼和操作數(shù)指令中的操作碼和操作數(shù) 每種指令的每種指令的操作碼操作碼: 用一個唯一的助記符表示(英文縮寫),用一個唯一的助記符表示(英文縮寫), 對應(yīng)著一個二進(jìn)制編碼的機器指令。對應(yīng)著一個二進(jìn)制編碼的機器指令。 指令中的指令中的操作數(shù)操作數(shù): 可以是一個具體的數(shù)值(立即數(shù));可以是一個具體的數(shù)值(立即數(shù)); 可以是存放數(shù)據(jù)的寄存器;可以是存放數(shù)據(jù)的寄存器; 可以用多種方式指明尋址單元在存儲器中的地址??梢杂枚喾N方式指明尋址單元在存儲器中的地址。尋址方式尋址方式 指令系統(tǒng)

5、設(shè)計了多種操作數(shù)的來源,尋找操作數(shù)的過程就是操作數(shù)的尋址方式。 操作數(shù)采取哪一種尋址方式,會影響機器運行的速度和效率。如何尋址一個操作數(shù)對程序的設(shè)計來講很重要。數(shù)據(jù)尋址數(shù)據(jù)尋址 形式地址形式地址 指令字中的地址指令字中的地址 有效地址有效地址 操作數(shù)的真實地址操作數(shù)的真實地址 約定約定 指令字長指令字長 = 存儲字長存儲字長 = 機器字長機器字長形式地址形式地址 A尋址特征尋址特征3.1 尋址方式尋址方式3.1.1 立即數(shù)尋址立即數(shù)尋址立即數(shù)立即數(shù),操作數(shù)直接包含在指令中,作為指令的操作數(shù)直接包含在指令中,作為指令的一部分存放在代碼段中一部分存放在代碼段中OP A立即尋址特征立即尋址特征立即數(shù)

6、立即數(shù) 可正可負(fù)可正可負(fù) 補碼補碼立即數(shù)可以是立即數(shù)可以是8位或位或16位的,在位的,在80386以上的以上的CPU中,還可以是中,還可以是32位的位的3.1.1 立即數(shù)尋址立即數(shù)尋址例例3-1立即數(shù)尋址立即數(shù)尋址MOV AX,2004H ;(AH)=20H,(AL)=04HMOV BL, 5AH ;(BL)=5AHMOV EAX,22334455H ;(EAX)=22334455H, (AX)=4455H立即數(shù)常用于給寄存器賦初值,只能作源立即數(shù)常用于給寄存器賦初值,只能作源操作數(shù),不能作目的操作數(shù)操作數(shù),不能作目的操作數(shù) 3.1.2 寄存器尋址寄存器尋址 操作數(shù)存放在指令指定的操作數(shù)存放在

7、指令指定的8位、位、16位或位或32位通用寄存器中。位通用寄存器中。 對于對于16位的操作數(shù),寄存器可以位的操作數(shù),寄存器可以是是AX、BX、CX、DX、SI、DI、SP和和BP等等 為避免指令執(zhí)行時間過長,雙操為避免指令執(zhí)行時間過長,雙操作數(shù)指令一般必須有一個操作數(shù)使作數(shù)指令一般必須有一個操作數(shù)使用寄存器尋址。用寄存器尋址。EA = RiOPRi尋址特征尋址特征操作數(shù)操作數(shù)R0RiRn寄存器寄存器有效地址即為寄存器編號有效地址即為寄存器編號3.1.2 3.1.2 寄存器尋址寄存器尋址例例3-2 寄存器尋址寄存器尋址MOV AX,BX ; 將將BX中的內(nèi)容送入中的內(nèi)容送入AX中,中, BX中的

8、內(nèi)容保持不變中的內(nèi)容保持不變MOV SI,DI ;將;將DI中的內(nèi)容送入中的內(nèi)容送入S I中,中, DI中的內(nèi)容保持不變中的內(nèi)容保持不變MOV EAX,EBX ;將;將EBX中的內(nèi)容送入中的內(nèi)容送入EAX3.1.3 3.1.3 直接尋址直接尋址 直接尋址指的是操作數(shù)在存儲器中的有直接尋址指的是操作數(shù)在存儲器中的有效地址效地址EA直接包含在指令中,書寫時直接包含在指令中,書寫時有效地址加上中括號有效地址加上中括號 EA = A操作數(shù)操作數(shù)主存主存尋址特征尋址特征LDAAAACC3.1.3 3.1.3 直接尋址直接尋址例例3-3 存儲器直接尋址存儲器直接尋址MOV AX,1000H ;將;將DS段

9、的段的1000H和和1001H兩個兩個 單元的內(nèi)容送入單元的內(nèi)容送入AX寄存器中寄存器中MOV EAX,ES:2000H ;將;將ES段段的的2000H2003H四個單元的內(nèi)容送入四個單元的內(nèi)容送入EAX寄存中,其中寄存中,其中ES為段超越前綴為段超越前綴MOV AX,BUF ;將;將DS段內(nèi)以有效地址段內(nèi)以有效地址BUF(符號地址)(符號地址)起始的兩個單元的內(nèi)容送入起始的兩個單元的內(nèi)容送入AX寄存器中寄存器中間接尋址間接尋址EA =(A) 有效地址由形式地址間接提供有效地址由形式地址間接提供OPA尋址特征尋址特征AEA主存主存EAA1EA A1主存主存 EA10OPA尋址特征尋址特征A一次

10、間址一次間址多次間址多次間址操作數(shù)操作數(shù)操作數(shù)操作數(shù) 子程序子程序主程序主程序8081201202調(diào)用子程序調(diào)用子程序調(diào)用子程序調(diào)用子程序間接尋址編程舉例間接尋址編程舉例(A) = 81(A) = 202 間址特征間址特征JMP A 3.1.4 3.1.4 寄存器間接尋址寄存器間接尋址 操作數(shù)的有效地址操作數(shù)的有效地址EA存放在基址寄存存放在基址寄存器器BX、BP,或變址寄存器,或變址寄存器SI、DI中中 如果指定的寄存器是如果指定的寄存器是BX、SI、DI,則,則操作數(shù)默認(rèn)在數(shù)據(jù)段中;如果使用操作數(shù)默認(rèn)在數(shù)據(jù)段中;如果使用BP,默,默認(rèn)在堆棧段中認(rèn)在堆棧段中 允許段超越。允許段超越。 書寫時

11、對間接尋址的寄存器加上中括號。書寫時對間接尋址的寄存器加上中括號。操作數(shù)的物理地址為:操作數(shù)的物理地址為:(DS)16(SI/DI/BX)或(或(SS)16(BP)EA = ( Ri )操作數(shù)操作數(shù)主存主存OPRi尋址特征尋址特征地址地址R0RiRn寄存器寄存器有效地址在寄存器中有效地址在寄存器中例例3-4 寄存器間接尋址,假定(寄存器間接尋址,假定(DS)2000H,(SI)=3600H,(,(23600H)=6022HMOV AX,SI ;先將先將DS中的值左移中的值左移4位,然后與位,然后與SI中的值相加,中的值相加, 形成物理地址是形成物理地址是23600H,再將該物理地址中的,再將該

12、物理地址中的 數(shù)據(jù)數(shù)據(jù)6022H送入送入AX寄存器中寄存器中例例3-5 寄存器間接尋址,假定(寄存器間接尋址,假定(SS)=3000H,(BP)=1100H,(31100H)=5E28HMOV BX,BP ;先將先將SS中的值左移中的值左移4位,然后與位,然后與BP中的值相加,中的值相加, 形成物理地址形成物理地址31100H,再將該物理地址中的,再將該物理地址中的 數(shù)據(jù)數(shù)據(jù)5E28H送入送入BX寄存器中寄存器中例例3-6 偏移量為偏移量為32位時的寄存器間接尋址位時的寄存器間接尋址MOV EAX,ECX ;從數(shù)據(jù)段的從數(shù)據(jù)段的DS:ECX地址處開始取四地址處開始取四個存儲單元的內(nèi)容送入個存儲

13、單元的內(nèi)容送入EAX寄存器中寄存器中MOV EAX,DX ;從從DS:DX地址處開始取四個存儲單元地址處開始取四個存儲單元 的內(nèi)容送入的內(nèi)容送入EAX中中3.1.5 寄存器相對尋址寄存器相對尋址操作數(shù)的有效地址是一個基址寄存器或變址寄操作數(shù)的有效地址是一個基址寄存器或變址寄存器中存放的數(shù)據(jù)加上指令中給出的存器中存放的數(shù)據(jù)加上指令中給出的8位或位或16位偏移量位偏移量其物理地址為:其物理地址為:(DS)16(SI/DI/BX)8位或位或16位偏移量位偏移量 或或 (SS)16(BP)8位或位或16 位偏移量位偏移量實際上就是在寄存器間接尋址的基礎(chǔ)上,再加實際上就是在寄存器間接尋址的基礎(chǔ)上,再加上

14、一個偏移量上一個偏移量 3.1.5 寄存器相對尋址寄存器相對尋址例例3-7寄存器相對尋址,假定(寄存器相對尋址,假定(DS)=2000H,(SS)=3000H,(SI)=3600H,(BP)=1100H,COUNT=10H,(23620H)=8A76H,(31110H)=4567H MOV AX ,SI+20H ;2000H16+3600H+20H=23620H, 將從將從23620H開始的物理地址中的開始的物理地址中的 數(shù)據(jù)數(shù)據(jù)8A76H送入送入AX寄存器中寄存器中3.1.5 寄存器相對尋址寄存器相對尋址指令指令MOV BX,BP+COUNT書書寫有下面的等效形式:寫有下面的等效形式: MO

15、V BX,BP+COUNT MOV BX,COUNTBPMOV BX ,BP+COUNT ;3000H161100H+10H=31110H, 將從將從31110H開始的物理地址中的開始的物理地址中的 數(shù)據(jù)數(shù)據(jù)4567H送入送入BX寄存器中寄存器中基址尋址基址尋址(1) 采用專用寄存器作基址寄存器采用專用寄存器作基址寄存器EA = ( BR ) + ABR 為基址寄存器為基址寄存器OPA操作數(shù)操作數(shù)主存主存尋址特征尋址特征ALUBR(2) 采用通用寄存器作基址寄存器采用通用寄存器作基址寄存器操作數(shù)操作數(shù)主存主存尋址特征尋址特征ALUOPR0AR0 作基址寄存器作基址寄存器 由用戶指定哪個通用寄存

16、器作為基址寄存器由用戶指定哪個通用寄存器作為基址寄存器通用寄存器通用寄存器R0Rn-1R1 基址寄存器的內(nèi)容由操作系統(tǒng)確定基址寄存器的內(nèi)容由操作系統(tǒng)確定 在程序的執(zhí)行過程中在程序的執(zhí)行過程中 R0 內(nèi)容不變,形式地址內(nèi)容不變,形式地址 A 可變可變變址尋址變址尋址EA = ( IX ) +AOPA操作數(shù)操作數(shù)主存主存尋址特征尋址特征ALUIXIX 為變址寄存器(專用)為變址寄存器(專用)通用寄存器也可以作為變址寄存器通用寄存器也可以作為變址寄存器例例 設(shè)數(shù)據(jù)塊首地址為設(shè)數(shù)據(jù)塊首地址為 D,求求 N 個數(shù)的平均值個數(shù)的平均值直接尋址直接尋址變址尋址變址尋址LDA DADD D + 1ADD D

17、+ 2ADD D + ( N -1 )DIV # NSTA ANSLDA # 0LDX # 0INXCPX # NBNE MDIV # NSTA ANS共共 N + 2 條指令條指令共共 8 條指令條指令A(yù)DD X, DMX 為變址寄存器為變址寄存器D 為形式地址為形式地址(X) 和和 #N 比較比較(X) +1 X結(jié)果不為零則轉(zhuǎn)結(jié)果不為零則轉(zhuǎn)3.1.6 基址變址尋址基址變址尋址操作數(shù)的有效地址是一個基址寄存器和一操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容之和個變址寄存器的內(nèi)容之和 段寄存器一般由基址寄存器決定,使用段寄存器一般由基址寄存器決定,使用BX默認(rèn)段寄存器默認(rèn)段寄存器DS

18、;使用;使用BP,默認(rèn)段寄存,默認(rèn)段寄存器器SS允許段超越允許段超越其物理地址為:其物理地址為:(DS)16(BX)()(SI/DI)或(或(SS)16+(BP)+(SI/DI)3.1.6 基址變址尋址基址變址尋址例例3-8基址變址尋址,假定(基址變址尋址,假定(DS)=2000H,(,(SS)3000H,(,(BX)=1800H,(BP)=2080H ,(DI)=1000H,(SI)=0800H, (22800H)=80CFH,(32880H)=067AHMOV AX,BXDI ;(AX) ((DS)16(BX)+(DI)) 將從將從22800H開始的物理地址的兩個存儲單開始的物理地址的兩個

19、存儲單元元之中的數(shù)據(jù)之中的數(shù)據(jù)80CFH送到送到AX寄存器中寄存器中MOV AX,BP+SI ;(AX)(SS)16(BP)+(SI)將(將(32880H)中的數(shù)據(jù))中的數(shù)據(jù)067AH送入送入AX中中相對尋址相對尋址 EA = ( PC ) + AA 是相對于當(dāng)前指令的位移量(可正可負(fù),補碼)是相對于當(dāng)前指令的位移量(可正可負(fù),補碼)操作數(shù)操作數(shù)尋址特征尋址特征ALUOPA相對距離相對距離 A1000PC 主存主存1000AOP3.1.7 基址變址相對尋址基址變址相對尋址操作數(shù)的有效地址是一個基址寄存器內(nèi)操作數(shù)的有效地址是一個基址寄存器內(nèi)容和一個變址寄存器的內(nèi)容和容和一個變址寄存器的內(nèi)容和8位

20、或位或16位偏移量相加之和位偏移量相加之和其物理地址為:其物理地址為: 3.1.7 基址變址相對尋址基址變址相對尋址例例3-9基址變址相對尋址基址變址相對尋址MOV AX, BX+SI+100HMOV 20H BP+SI, AXMOV CX,DS:BX+SI+NUMMOV DX,SS: NUMDIBP例例3-10 32位偏移量的寄存器比例尋址位偏移量的寄存器比例尋址MOV EAX,DAT EBX+ESIMOV EAX,NUM EBP+EDI3.1.8 寄存器比例尋址寄存器比例尋址 形成存儲器操作數(shù)的有效地址可以采用:形成存儲器操作數(shù)的有效地址可以采用:(1)變址寄存器的內(nèi)容乘以比例因子,再)變

21、址寄存器的內(nèi)容乘以比例因子,再加上偏移量,稱為比例變址方式加上偏移量,稱為比例變址方式(2)變址寄存器的內(nèi)容乘以比例因子,再)變址寄存器的內(nèi)容乘以比例因子,再加上基址寄存器的內(nèi)容,稱為基址比例變加上基址寄存器的內(nèi)容,稱為基址比例變址方式址方式(3)變址寄存器的內(nèi)容乘以比例因子,再)變址寄存器的內(nèi)容乘以比例因子,再加上基址寄存器的內(nèi)容和偏移量,稱為基加上基址寄存器的內(nèi)容和偏移量,稱為基址比例變址偏移方式址比例變址偏移方式比例因子可以是比例因子可以是1、2、4、8,默認(rèn)情況為,默認(rèn)情況為13.1.8 寄存器比例尋址寄存器比例尋址 例例3-11 寄存器比例尋址寄存器比例尋址MOV EAX,XEDI*

22、4 ;EA=(EDI)*4+X, 其中X是8位或32位偏移量MOV EBX,EDI*8EBX ;EA=(EDI)*8+(EBX)MOV EAX,XESI*4EBP ;EA=(ESI)*4+(EBP)+X, 其中X是8位或32位偏移量 (1) 相對尋址舉例相對尋址舉例M 隨程序所在存儲空間的位置不同而不同隨程序所在存儲空間的位置不同而不同EA = ( M+3 ) 3 = M 3*LDA # 0LDX # 0ADD X, DINXCPX # NBNE MDIV # NSTA ANSMM+1M+2M+3而指令而指令 BNE 與與 指令指令 ADD X, D 相對位移量不變相對位移量不變 3* 指令指

23、令 BNE操作數(shù)的有效地址為操作數(shù)的有效地址為 3* 相對尋址特征相對尋址特征*(2) 按字節(jié)尋址的相對尋址舉例按字節(jié)尋址的相對尋址舉例OP位移量位移量2000 H2008 H8JMP * + 8OP06 H2000 H2008 H8設(shè)設(shè) 當(dāng)前指令地址當(dāng)前指令地址 PC = 2000H轉(zhuǎn)移后的目的地址為轉(zhuǎn)移后的目的地址為 2008H因為因為 取出取出 JMP * + 8 后后 PC = 2002H二字節(jié)指令二字節(jié)指令故故 JMP * + 8 指令指令 的第二字節(jié)為的第二字節(jié)為 2008H - 2002H = 06H10. 堆棧尋址堆棧尋址(1) 堆棧的特點堆棧的特點堆棧堆棧硬堆棧硬堆棧軟堆棧軟

24、堆棧多個寄存器多個寄存器指定的存儲空間指定的存儲空間先進(jìn)后出先進(jìn)后出(一個入出口)(一個入出口) 棧頂?shù)刂窏m數(shù)刂?由由 SP 指出指出 11FFFH +12000 H進(jìn)棧進(jìn)棧 (SP) 1 SP出棧出棧 (SP)+ 1 SP棧頂棧頂棧底棧底2000 HSP2000 H1FFF HSP1FFFH棧頂棧頂棧底棧底進(jìn)棧進(jìn)棧出棧出棧 1FFF H棧頂棧頂 2000 H棧頂棧頂(2) 堆棧尋址舉例堆棧尋址舉例15200HACCSPX棧頂棧頂200H棧底棧底主存主存151FFHACCSP15棧頂棧頂200H棧底棧底主存主存X1FFHPUSH A 前前PUSH A 后后POP A 前前POP A 后后Y1

25、FFHACCSPX棧頂棧頂200H棧底棧底主存主存151FFH15200HACCSP棧頂棧頂200H棧底棧底主存主存X15(3) SP 的修改與主存編址方法有關(guān)的修改與主存編址方法有關(guān) 按按 字字 編址編址進(jìn)棧進(jìn)棧出棧出棧(SP) 1 SP(SP)+ 1 SP 按按 字節(jié)字節(jié) 編址編址存儲字長存儲字長 16 位位進(jìn)棧進(jìn)棧出棧出棧(SP) 2 SP(SP)+ 2 SP存儲字長存儲字長 32 位位進(jìn)棧進(jìn)棧出棧出棧(SP) 4 SP(SP)+ 4 SP表表3-1 8086 CPU常用指令一覽表常用指令一覽表 3.2.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令用于寄存器、存儲單元和輸入輸數(shù)據(jù)傳送指令用于

26、寄存器、存儲單元和輸入輸出端口之間傳送數(shù)據(jù)或地址。除出端口之間傳送數(shù)據(jù)或地址。除SAHF和和POPF外,對標(biāo)志無影響外,對標(biāo)志無影響1通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令(1)基本的傳送指令)基本的傳送指令格式:格式:MOV DEST , SRC功能:將源操作數(shù)的內(nèi)容傳送到目的操作數(shù)中功能:將源操作數(shù)的內(nèi)容傳送到目的操作數(shù)中3.2.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令例3-12 基本的傳送指令MOV AL,30H ;立即數(shù)傳送到寄存器MOV AL, BL ;寄存器之間傳送字節(jié)數(shù)據(jù)MOV SI, BX+62H ;寄存器和存儲器之間傳送數(shù)據(jù)例3-13下列指令是不合法的。MOV 6234H,AX ;立即數(shù)不能用

27、于目的操作數(shù)MOV CS,AX ;CS不能用于目的操作數(shù)MOV IP,AX;IP不能用于目的操作數(shù)MOV DS,4234H ;立即數(shù)不能直接傳送給段寄存器MOV AL,BX ;源操作數(shù)與目的操作數(shù)的位數(shù)必須一致MOV BUF1,BUF2 ;不能在兩個存儲器單元之間傳送數(shù)據(jù)MOV DS,ES ;不能在兩個段寄存器之間傳送數(shù)據(jù)(2)交換指令)交換指令格式:格式:XCHG DEST,SRC功能:將源操作數(shù)與目的操作數(shù)的內(nèi)容交換功能:將源操作數(shù)與目的操作數(shù)的內(nèi)容交換(Exchange)例3-14 交換指令XCHG AL,CL ;字節(jié)交換XCHG BX,SI ;字交換XCHG AX,BX+SI ;寄存器

28、和存儲器之間交換數(shù)據(jù)例3-15 下列指令是非法的XCHG AX,6234H ;寄存器與立即數(shù)之間不能交換XCHG BUF1,BUF2 ;存儲器單元與存儲器單元之間不能交換XCHG ADDR,4234H ;存儲器單元與立即數(shù)之間不能交換XCHG CS,DATBX ;不能與CS(或IP)寄存器進(jìn)行交換(3)堆棧操作指令)堆棧操作指令堆棧是按堆棧是按“先進(jìn)后出先進(jìn)后出”原則工作的一段存儲器原則工作的一段存儲器區(qū)域區(qū)域 格式:格式:PUSH SRC POP DEST功能:PUSH指令的執(zhí)行是先將SP (SP)-2,然后將16位源操作數(shù)壓入堆棧,SRC可以是寄存器或存儲器 : POP指令的執(zhí)行是先從棧頂

29、彈出16位操作數(shù)到目的操作數(shù)中,同時SP (SP)+2,DEST可以是寄存器(CS除外)或存儲器例例3-16 將將16位通用寄存器位通用寄存器CX的內(nèi)容壓入堆棧,然后,彈出棧頂至的內(nèi)容壓入堆棧,然后,彈出棧頂至CX中,已知:(中,已知:(SS)=0200H,(SP)=0008H,(CX)=12FAH,其,其示意圖見圖示意圖見圖3-1和圖和圖3-2。 12FAH+216存儲器SS段首地址新棧頂原棧頂圖圖3-2 POP CX指令的操作過指令的操作過程示意圖程示意圖CXSPSS020012FA0008200620072008FA122000+-2020012FA162006200712FAH2000

30、存儲器SS段首地址新棧頂原棧頂12圖圖3-1 PUSH CX指令的操作過指令的操作過程示意圖程示意圖0008SSCXSP2008FA+(4)換碼指令)換碼指令格式:格式:XLAT功能:這是一條專門用于功能:這是一條專門用于AL和字節(jié)表中某一存儲單元之間執(zhí)行數(shù)據(jù)傳和字節(jié)表中某一存儲單元之間執(zhí)行數(shù)據(jù)傳送的指令。執(zhí)行(送的指令。執(zhí)行(AL) BX+AL的操作,使的操作,使AL中的一個值變換中的一個值變換為內(nèi)存表格中的某一個值,實現(xiàn)編碼的轉(zhuǎn)換。為內(nèi)存表格中的某一個值,實現(xiàn)編碼的轉(zhuǎn)換。 例3-17 在內(nèi)存的數(shù)據(jù)段中存放有一張數(shù)值09的ASCII碼轉(zhuǎn)換表,首地址為Hex_table,如圖3-3所示?,F(xiàn)要把

31、數(shù)值8轉(zhuǎn)換成對應(yīng)的ASCII碼,可用以下幾條指令實現(xiàn):LEA BX,Hex_table ;(BX)表首偏移地址MOV AL, 8 ; (AL)8XLAT ;查表轉(zhuǎn)換注意:由于要查找元素的序號放在注意:由于要查找元素的序號放在AL中,所以表格的最大中,所以表格的最大長度不能超過長度不能超過256個字節(jié)個字節(jié)2地址傳送指令地址傳送指令(1)有效地址傳送指令)有效地址傳送指令格式:格式:LEA DEST,SRC功能:這是一條取有效地址的指令(功能:這是一條取有效地址的指令(Load effective address)。)。它用來將源操作數(shù)的偏移地址傳送到通用寄存器、指針或變址它用來將源操作數(shù)的偏移

32、地址傳送到通用寄存器、指針或變址寄存器中寄存器中 Hex_table+0Hex_table+1Hex_table+2Hex_table+8Hex_table+90128930H31H32H38H39H圖圖3-3 09的換碼表的換碼表例3-18 有效地址傳送指令MOV BX,3200H ;將3200H單元的內(nèi)容送BXLEA BX,3200H ;將有效地址3200H送BXLEA SI,ADDR ;將ADDR的有效地址送SI(2)地址指針傳送指令)地址指針傳送指令格式:格式:LDS DEST,SRC LES DEST,SRC功能:將源操作數(shù)指定的連續(xù)功能:將源操作數(shù)指定的連續(xù)4個存儲器單元中存放的個

33、存儲器單元中存放的32位地址指針位地址指針(包括一個段地址和一個偏移地址)傳送到兩個(包括一個段地址和一個偏移地址)傳送到兩個16位寄存器位寄存器 例3-19 地址指針傳送指令POINT DD 55663344H ;設(shè)定POINT的段地址和偏移地址 LDS BX,POINT ;(BX)=3344H,(DS)=5566H LES BX,POINT ;(BX)=3344H,(ES)=5566H地址傳送指令的寄存器不能使用段寄存器,地址傳送指令的寄存器不能使用段寄存器,且操作數(shù)必須使用存儲器尋址方式。且操作數(shù)必須使用存儲器尋址方式。3標(biāo)志傳送指令標(biāo)志傳送指令(1)標(biāo)志讀寫指令)標(biāo)志讀寫指令格式:格式

34、:LAHF/SAHF功能:功能:LAHF用于將標(biāo)志寄存器的低用于將標(biāo)志寄存器的低8位送位送AH,即將標(biāo)志寄存器,即將標(biāo)志寄存器FLAGS中的中的SF(符號標(biāo)志)、(符號標(biāo)志)、ZF(零標(biāo)志)、(零標(biāo)志)、AF(半加進(jìn)位標(biāo)(半加進(jìn)位標(biāo)志)、志)、PF(奇偶標(biāo)志)和(奇偶標(biāo)志)和CF(進(jìn)位標(biāo)志進(jìn)位標(biāo)志)5個標(biāo)志位分別傳送到累加器個標(biāo)志位分別傳送到累加器AH的對應(yīng)位的對應(yīng)位 D7 D0 D15 OF DF IF TF D0SF ZF AF PF CFAH圖圖3-4 LAHF指令操作示意圖指令操作示意圖FLAGS(2)標(biāo)志入棧出棧指令)標(biāo)志入棧出棧指令格式:格式:PUSHF/POPF功能:功能:PUS

35、HF指令是將標(biāo)志寄存器中的內(nèi)容壓入堆棧,指令的操指令是將標(biāo)志寄存器中的內(nèi)容壓入堆棧,指令的操作為作為SP-1(FLAGSH),SP-2(FLAGSL),(SP)(SP)-2POPF指令是將棧頂?shù)淖謫卧獌?nèi)容彈出到標(biāo)志寄存器中,同時指令是將棧頂?shù)淖謫卧獌?nèi)容彈出到標(biāo)志寄存器中,同時SP(SP)+2SAHF和和POPF將直接影響標(biāo)志寄存器的內(nèi)容,利用這一特性,可將直接影響標(biāo)志寄存器的內(nèi)容,利用這一特性,可以非常方便地改變標(biāo)準(zhǔn)寄存器中指定位的狀態(tài)以非常方便地改變標(biāo)準(zhǔn)寄存器中指定位的狀態(tài)4輸入輸出指令輸入輸出指令格式:格式:IN DEST,SRC OUT DEST,SRC功能:專門用于累加器和功能:專門用

36、于累加器和I/O端口之間執(zhí)行數(shù)據(jù)傳送端口之間執(zhí)行數(shù)據(jù)傳送例3-20 輸入輸出指令I(lǐng)N AL,28H ;從端口28H輸入一個字節(jié)到ALOUT 15,AL ;從AL輸出一個字節(jié)到端口15MOV DX,0362H ;先將端口地址送入DXIN AX,DX ;從端口0362H輸入一個字到AX3.2.2 算術(shù)運算指令算術(shù)運算指令1加法指令加法指令(1)不帶進(jìn)位加法指令)不帶進(jìn)位加法指令格式:格式:ADD DEST, SRC功能:將源操作數(shù)與目的操作數(shù)相加,結(jié)果送入原存放目的操作數(shù)的地方。功能:將源操作數(shù)與目的操作數(shù)相加,結(jié)果送入原存放目的操作數(shù)的地方。該指令對標(biāo)志位有影響。該指令對標(biāo)志位有影響。例3-21

37、 不帶進(jìn)位加法指令A(yù)DD CL,20H ;(CL)(CL)+20HADD AX,SI ;(AX)(AX)+(SI)ADD DATA BX,AL ;(BX)+DATA)(BX)+DATA)+(AL)ADD DX,BX+SI ;(DX)(DX)+(BX)+(SI)(2)帶進(jìn)位加法指令)帶進(jìn)位加法指令格式:格式:ADC DEST,SRC功能:將源操作數(shù)和目的操作數(shù)相加,同時加上進(jìn)位標(biāo)志的現(xiàn)行值功能:將源操作數(shù)和目的操作數(shù)相加,同時加上進(jìn)位標(biāo)志的現(xiàn)行值CF,結(jié)果送入原存放目的操作數(shù)的地方,結(jié)果送入原存放目的操作數(shù)的地方例3-22 帶進(jìn)位加法指令A(yù)DC AX,SI ;(AX)(AX)+(SI)+CFAD

38、C BX,3000H ;(BX)(BX)+3000H+CFADC AX,DATSI ;(AX)(AX)+(SI+DAT)+CF(3)加)加1指令指令格式:格式:INC DEST功能:將目的操作數(shù)中的內(nèi)容加功能:將目的操作數(shù)中的內(nèi)容加1,然后送回該操作數(shù)。目的操作數(shù)可以,然后送回該操作數(shù)。目的操作數(shù)可以是寄存器或存儲器。該指令一般用在循環(huán)程序中修改指針和循環(huán)次數(shù)是寄存器或存儲器。該指令一般用在循環(huán)程序中修改指針和循環(huán)次數(shù)例3-23 加1指令I(lǐng)NC BX ;(BX)(BX)+1INC BYTE PTR DI+100H ;將(DI)100H所指的字節(jié) 單元內(nèi)容加1(4)BCD碼加法十進(jìn)制調(diào)整指令碼加

39、法十進(jìn)制調(diào)整指令 未組合BCD碼的加法調(diào)整指令 格式:AAA功能:將AL的內(nèi)容調(diào)整為一位非組合型的十進(jìn)制數(shù) 例3-24 兩個未組合BCD碼的加法運算,設(shè)(AH)=0MOV AL,08 ;(AL) 08 (AL)=00001000ADD AL,09 ;(AL) 08+09 (AL)=00010001=11HAAA ;AF=1,(AH)(AH)+01,AL(AL+6),AL高4位為0,(AL)=00000111,結(jié)果(AX)=0107 AF=1 CF=1 組合組合BCD碼的加法調(diào)整指令碼的加法調(diào)整指令格式:格式:DAA功能:將功能:將AL的內(nèi)容調(diào)整為兩位組合型的二進(jìn)制數(shù)的內(nèi)容調(diào)整為兩位組合型的二進(jìn)

40、制數(shù)例3-25 兩個組合BCD碼的加法運算MOV AL,37 ;(AL)37MOV BL,35 ;(BL)35ADD AL,BL ;(AL)=6CH,AF=0,CF=0DAA ;因為AL中的低4位大于9,所以(AL)(AL)+06, 結(jié)果(AL)=72,AF=1,CF=0 2減法指令減法指令(1)不帶借位的減法指令)不帶借位的減法指令格式:格式:SUB DEST, SRC功能:將目的操作數(shù)減去源操作數(shù),結(jié)果送入目的操作數(shù)。功能:將目的操作數(shù)減去源操作數(shù),結(jié)果送入目的操作數(shù)。例3-26 不帶借位的減法指令SUB AX,3000H ;(AX)(AX)-3000HSUB BX,SI+100H ;(B

41、X)(BX)-SI+100H(2)帶借位的減法指令)帶借位的減法指令格式:格式:SBB DEST, SRC功能:將目的操作數(shù)減去源操作數(shù),還要減去功能:將目的操作數(shù)減去源操作數(shù),還要減去CF的值,結(jié)果送入的值,結(jié)果送入目的操作數(shù)目的操作數(shù)例3-27 帶借位的減法指令SBB AX,BX ;(AX)(AX)-(BX)-CFSBB WORD PTR SI,1068H ;(SI)(SI)-1068H-CF(3)減)減1指令指令格式:格式:DEC DEST功能:將目的操作數(shù)的內(nèi)容減功能:將目的操作數(shù)的內(nèi)容減1,然后送回目的操作數(shù)。,然后送回目的操作數(shù)。例3-28 減1指令DEC BL ;(BL)(BL)

42、-1DEC BYTE PTRDI+2 ;DI+2DI+2-1(4)求補指令)求補指令格式:格式:NEG DEST功能:對目的操作數(shù)取補碼,即用零減去此操作數(shù),結(jié)果功能:對目的操作數(shù)取補碼,即用零減去此操作數(shù),結(jié)果送回此操作數(shù)中。送回此操作數(shù)中。例3-29設(shè)(AX)=020H,(BX)2212HNEG AX ;(AX)0-(AX),結(jié)果(AX)=0E0HNEG BX ;(BX)0-(BX),結(jié)果(BX)=DDEEH(5)比較指令)比較指令格式:格式:CMP DEST,SRC功能:將目的操作數(shù)減去源操作數(shù),結(jié)果不送回目的操作數(shù),二操作功能:將目的操作數(shù)減去源操作數(shù),結(jié)果不送回目的操作數(shù),二操作數(shù)原

43、值不變,只是影響狀態(tài)標(biāo)志位。其余同數(shù)原值不變,只是影響狀態(tài)標(biāo)志位。其余同SUB指令。指令。這條指令后邊一般跟條件轉(zhuǎn)移指令,以判斷二操作數(shù)是否滿足某種關(guān)這條指令后邊一般跟條件轉(zhuǎn)移指令,以判斷二操作數(shù)是否滿足某種關(guān)系。根據(jù)比較結(jié)果對標(biāo)志位的影響來實現(xiàn)程序的分支。系。根據(jù)比較結(jié)果對標(biāo)志位的影響來實現(xiàn)程序的分支。(6)BCD碼減法十進(jìn)制調(diào)整指令碼減法十進(jìn)制調(diào)整指令 未組合未組合BCD碼的減法調(diào)整指令碼的減法調(diào)整指令格式:格式:AAS功能:與功能:與AAA指令類似是將指令類似是將AL的內(nèi)容調(diào)整為一位非組合型的十進(jìn)制數(shù)的內(nèi)容調(diào)整為一位非組合型的十進(jìn)制數(shù)例3-30 兩個未組合BCD碼的減法運算MOV AX,

44、0608H ;AX0608HSUB AL, 09H ;AL0FFHAAS ;AL09H,AH05H 組合組合BCD碼的減法調(diào)整指令碼的減法調(diào)整指令格式:格式:DAS功能:與功能:與DAA指令類似,是將指令類似,是將AL 的內(nèi)容轉(zhuǎn)換成兩位組合型的十進(jìn)制數(shù)的內(nèi)容轉(zhuǎn)換成兩位組合型的十進(jìn)制數(shù)例3-31:兩個組合BCD碼的減法運算MOV AL,73H ;AL73HSUB AL,27H ;AL4CHDAS ;AL46H3乘法指令乘法指令在乘法指令中,操作數(shù)只是乘數(shù),被乘數(shù)為累加器,在乘法指令中,操作數(shù)只是乘數(shù),被乘數(shù)為累加器,隱含為目的操作數(shù)。隱含為目的操作數(shù)。(1)無符號數(shù)乘法指令)無符號數(shù)乘法指令格式

45、:格式:MUL SRC功能:字節(jié)相乘時,功能:字節(jié)相乘時,AL與源操作數(shù)相乘,乘積為與源操作數(shù)相乘,乘積為16位送入位送入AX中;中;字相乘時,字相乘時,AX與源操作數(shù)相乘,乘積為與源操作數(shù)相乘,乘積為32位,高位,高16位送位送DX,低,低16位送位送AX。對標(biāo)志位影響:若乘積的高半部分(字節(jié)相乘時為對標(biāo)志位影響:若乘積的高半部分(字節(jié)相乘時為AH,字相乘時,字相乘時為為DX)不為零,則)不為零,則CF1,OF1;否則;否則CF=0,OF=0。其它標(biāo)。其它標(biāo)志位為任意值。志位為任意值。例3-32 無符號數(shù)乘法指令MUL DL ;AXAX*DLMUL CX ;DX:AXAX*CXMUL BYT

46、E PTR SI+8 ;AXAL*SI+8(2)有符號數(shù)乘法指令)有符號數(shù)乘法指令格式:格式:IMUL SRC功能:與功能:與MUL的功能相同,只是要求兩乘數(shù)都必須為有符號數(shù)。的功能相同,只是要求兩乘數(shù)都必須為有符號數(shù)。例3-33兩個有符號數(shù)的乘法MOV AL,F(xiàn)EH ;ALFEH,F(xiàn)EH看作有符號數(shù)-2MOV CL,11H ;CL11H,11H看作有符號數(shù)17IMUL CL ;AXFFDEH,執(zhí)行02H*11H, 將乘積結(jié)果取補碼得FFDEH=-34(3)非組合)非組合BCD碼乘法調(diào)整指令碼乘法調(diào)整指令格式:格式:AAM功能:用于將非組合功能:用于將非組合BCD碼乘法的結(jié)果(在碼乘法的結(jié)果(

47、在AL中)轉(zhuǎn)換成兩個非組合中)轉(zhuǎn)換成兩個非組合型型BCD碼(碼(AH和和AL中)中)例3-34 兩個非組合BCD碼的乘法運算。MOV AL,,06H ;AL06HMOV BL,07H ;BL07HMUL BL ;AX002AHAAM ;AX0402H4除法指令除法指令(1)無符號數(shù)除法指令)無符號數(shù)除法指令格式:格式:DIV SRC功能:功能:a.字節(jié)除法:將字節(jié)除法:將AX/SRC的商送入的商送入AL,將,將AX/SRC的余數(shù)送入的余數(shù)送入AHb.字除法:將字除法:將DX:AX/SRC的商送入的商送入AX,將,將DX:AX/SRC的余數(shù)送入的余數(shù)送入DX例3-35 無符號數(shù)除法指令DIV C

48、L ;AX中的16位數(shù)除以CL中的8位數(shù), 商送AL,余數(shù)送AHDIV CX ;DX和AX中的32位數(shù)除以CX中的16位數(shù), 商送AX,余數(shù)送DX(2)有符號數(shù)除法指令)有符號數(shù)除法指令格式:格式:IDIV SRC功能:與功能:與DIV指令相比只有兩點不同:指令相比只有兩點不同:a.兩個操作數(shù)均為有符號數(shù)。兩個操作數(shù)均為有符號數(shù)。b.如果被除數(shù)不是除數(shù)的兩倍長度,對被除數(shù)要用專門的指令進(jìn)行符號如果被除數(shù)不是除數(shù)的兩倍長度,對被除數(shù)要用專門的指令進(jìn)行符號擴(kuò)展,以產(chǎn)生雙倍長度表示的被除數(shù)。擴(kuò)展,以產(chǎn)生雙倍長度表示的被除數(shù)。 (3)非組合)非組合BCD碼除法調(diào)整指令碼除法調(diào)整指令格式:格式:AAD功

49、能:功能:AAD指令常用于指令常用于DIV指令之前,將指令之前,將AX中的兩位非組合中的兩位非組合BCD碼變?yōu)榇a變?yōu)槎M(jìn)制數(shù)二進(jìn)制數(shù)例3-36 兩個非組合BCD碼的除法運算。MOV AX, 0605H ;AX0605HMOV BL,07H ;BL07HAAD ;AX0041HDIV BL ;商值A(chǔ)L09,余數(shù)AH02H(4)有符號擴(kuò)展指令)有符號擴(kuò)展指令格式:格式:CBW CWD功能:功能:CBW為字節(jié)擴(kuò)展指令,將為字節(jié)擴(kuò)展指令,將AL中有符號數(shù)的符號位擴(kuò)展到中有符號數(shù)的符號位擴(kuò)展到AH中中例3-37MOV AL,12H ;AL12HCBW ;AX0012H,AH=00HMOV AX,BBA3

50、HCWD ;DXFFFFH,AXBBA3H3.2.3 邏輯運算與移位指令邏輯運算與移位指令邏輯運算指令主要用于對寄存器或存儲器單元中某些位的邏輯運算指令主要用于對寄存器或存儲器單元中某些位的測試、置位、復(fù)位等操作測試、置位、復(fù)位等操作邏輯運算指令對操作數(shù)都是按位進(jìn)行操作,對相應(yīng)的標(biāo)志邏輯運算指令對操作數(shù)都是按位進(jìn)行操作,對相應(yīng)的標(biāo)志位產(chǎn)生影響,操作數(shù)可以是字節(jié)或字位產(chǎn)生影響,操作數(shù)可以是字節(jié)或字1邏輯運算指令邏輯運算指令格式格式:AND DEST,SRC ;邏輯與,(DEST)(DEST)(SRC)OR DEST,SRC ;邏輯或,(DEST(DEST)(SRC)NOT DEST ;邏輯非,(

51、DEST) ( )XOR DEST,SRC ;邏輯異或,(DEST) (DEST) + (SRC)TEST DEST,SRC;測試,(DEST)(SRC)DEST(1)AND、OR、和、和XOR指令將目的操作數(shù)與源操作數(shù)指令將目的操作數(shù)與源操作數(shù)按位進(jìn)行與、或、異或運算,結(jié)果送回目的操作數(shù)按位進(jìn)行與、或、異或運算,結(jié)果送回目的操作數(shù)例例3-38AND AL,0FH ;AL中的內(nèi)容和中的內(nèi)容和OFH相與,結(jié)果在相與,結(jié)果在AL中中AND AX,BX ;AX和和BX中的內(nèi)容相與,結(jié)果在中的內(nèi)容相與,結(jié)果在AX中中AND DX,BX+SI ;DX和和2個存儲單元的內(nèi)容相與,個存儲單元的內(nèi)容相與, 單

52、元地址由單元地址由BX+SI和和BX+SI+1指出,結(jié)果在指出,結(jié)果在DX中中OR AX,00F0H ;AX和和00F0相或,結(jié)果在相或,結(jié)果在AX中中XOR AL,0FH ;AL和和0FH相異或,結(jié)果在相異或,結(jié)果在AL中中XOR AX,AX ;AX的內(nèi)容本身進(jìn)行異或,結(jié)果的內(nèi)容本身進(jìn)行異或,結(jié)果AX清零清零(2)TEST指令和指令和AND指令執(zhí)行同樣的操作,但指令執(zhí)行同樣的操作,但TEST指指令不送回操作結(jié)果,而僅僅影響標(biāo)志位。令不送回操作結(jié)果,而僅僅影響標(biāo)志位。例例3-39TEST AX,8000H ;如果;如果AX的最高位為的最高位為1,則,則ZF0, 否則否則ZF=1TEST AL,

53、01H ;如果;如果AL的最低位為的最低位為1,則,則ZF=0, 否則否則ZF=1(3)NOT指令將操作數(shù)的每一位進(jìn)行求反,再指令將操作數(shù)的每一位進(jìn)行求反,再送回目的操作數(shù)。送回目的操作數(shù)。例例3-40NOT AL ;AL中內(nèi)容求反碼,結(jié)果在中內(nèi)容求反碼,結(jié)果在AL中中NOT BX ;BX中內(nèi)容求反碼,結(jié)果在中內(nèi)容求反碼,結(jié)果在BX中中NOT WORD PTR 1000H ;1000H和和1001H 2個單元中個單元中 的內(nèi)容求反碼,再送回這的內(nèi)容求反碼,再送回這2個單元中個單元中例例3-41AND AL,0FH ;AL中的高中的高4位請零位請零OR AL,0FH ;AL中的低中的低4位置位置

54、1XOR AL,0FH ;AL中的低中的低4位求反位求反TEST AL,0FH ;檢查;檢查AL中的低中的低4位是否全為零位是否全為零2移位指令移位指令移位指令可以對寄存器或存儲器單元按字節(jié)或字進(jìn)行操作,移位指令可以對寄存器或存儲器單元按字節(jié)或字進(jìn)行操作,移位指令包括:算術(shù)左移指令移位指令包括:算術(shù)左移指令SAL(Shift Arithmetic Left)、算術(shù)右、算術(shù)右移指令移指令SAR(Shift Arithmetic Right)、邏輯左移指令、邏輯左移指令SHL(Shift Logic Left)、邏輯右移指令、邏輯右移指令SHR(Shift Logic Right)式中式中COUN

55、T表示移位數(shù),其值或是表示移位數(shù),其值或是1,或大于,或大于1,當(dāng)大于,當(dāng)大于1時其值由時其值由CL寄存器的值確定寄存器的值確定功能:將目的操作數(shù)中的內(nèi)容按功能:將目的操作數(shù)中的內(nèi)容按COUNT的值進(jìn)行左(右)移位,的值進(jìn)行左(右)移位,最低位補最低位補0,最高位進(jìn)入,最高位進(jìn)入CF但但SAR指令移位時,最高位返回原位指令移位時,最高位返回原位 最高位最低位CF0最高位最低位CF0最高位最低位CF0最高位最低位CF圖圖3-5 非循環(huán)移位指令功能示意圖非循環(huán)移位指令功能示意圖a)算術(shù)左移指令SALd)邏輯右移指令SHRb)邏輯左移指令SHLc)算術(shù)右移指令SAR例例3-42將將AL寄存器中的數(shù)據(jù)

56、左移寄存器中的數(shù)據(jù)左移1位,位,BL寄存器中的數(shù)據(jù)右移寄存器中的數(shù)據(jù)右移4位位 MOV AL,52H ;AL52H MOV BL,63H ;BL63H MOV CL,04H ;CL04HSHL AL,1 ;ALA4H SHR BL,CL ;BL0CH3循環(huán)移位指令循環(huán)移位指令循環(huán)移位指令包括:不含進(jìn)位位的循環(huán)左移指令循環(huán)移位指令包括:不含進(jìn)位位的循環(huán)左移指令ROL(Rotate Left)、)、不含進(jìn)位位的循環(huán)右移指令不含進(jìn)位位的循環(huán)右移指令ROR(Rotate Right)、含進(jìn)位位的循環(huán)左移、含進(jìn)位位的循環(huán)左移指令指令RCL(Rotate through CF Left)、含進(jìn)位位的循環(huán)右

57、移指令、含進(jìn)位位的循環(huán)右移指令RCR(Rotate through CF Right)功能:循環(huán)移位是將目的操作數(shù)從一端移出的位返回到另一端形成循環(huán),功能:循環(huán)移位是將目的操作數(shù)從一端移出的位返回到另一端形成循環(huán),它可以分成不帶進(jìn)位的循環(huán)移位和帶進(jìn)位的循環(huán)移位它可以分成不帶進(jìn)位的循環(huán)移位和帶進(jìn)位的循環(huán)移位 圖圖3-6 循環(huán)移位指令的功能循環(huán)移位指令的功能c)不帶CF的循環(huán)右移指令ROR最高位最低位CF最高位最低位CF最高位最低位CF0最高位最低位CFa)不帶CF的循環(huán)左移指令ROLb)帶CF的循環(huán)左移指令RCLd)帶CF的循環(huán)右移指令RCR 例例3-43 將將AX的最高位移入的最高位移入DX的

58、最低位的最低位 RCL AX,1 ;將;將AX的最高位移位的最高位移位CF RCL DX,1 ;將;將CF移入移入DX的最低位的最低位 例例3-44 將將AX00A2H,BX=00B4H, 裝配在一起形成裝配在一起形成AXA2B4H MOV CL,8 ;(CL)移位數(shù)移位數(shù)8 ROL AX,CL ;AX循環(huán)左移循環(huán)左移8位,(位,(AX)=A200HADD AX,BX 3.2.4 串操作指令串操作指令1基本串操作指令基本串操作指令基本串操作指令中的源操作數(shù)地址由基本串操作指令中的源操作數(shù)地址由DS:SI提供,目的操作提供,目的操作數(shù)地址由數(shù)地址由ES:DI提供。提供。串操作的方向是遞增還是遞減

59、由標(biāo)志位串操作的方向是遞增還是遞減由標(biāo)志位DF確定,確定,DF=1,按遞,按遞減方向進(jìn)行;減方向進(jìn)行;DF=0,按遞增方向進(jìn)行,按遞增方向進(jìn)行 (1)串傳送指令)串傳送指令格式:格式:MOVS 目的串,源串目的串,源串MOVSB ;字節(jié)傳送,字節(jié)傳送,ES:DIDS:SI, SISI1,DIDI 1MOVSW ;字傳送,;字傳送,ES:DIDS:SI, SISI 2,DIDI 2功能:將數(shù)據(jù)段存儲單元的一個字節(jié)或字,傳送到附加段存儲功能:將數(shù)據(jù)段存儲單元的一個字節(jié)或字,傳送到附加段存儲單元中。單元中。 (2)取串指令)取串指令格式:格式:LODS 源串源串LODSB ;字節(jié)傳送,字節(jié)傳送,AL

60、DS:SI,SISI 1LODSW ;字傳送,字傳送,AXDS:SI,SISI 2功能:將存儲器單元源串中的一個字節(jié)或字內(nèi)容送入到功能:將存儲器單元源串中的一個字節(jié)或字內(nèi)容送入到AL或或AX中中(3)存串指令)存串指令格式:格式:STOS 目的串目的串STOSB ;字節(jié)傳送,字節(jié)傳送,ES:DIAL,DIDI 1STOSW ;字傳送,字傳送,ES:DIAX,DIDI 2.功能:將累加器功能:將累加器AL或或AX中的內(nèi)容存入到存儲單元的附加段中中的內(nèi)容存入到存儲單元的附加段中(4)串比較指令)串比較指令格式:格式:CMP 源串,目的串源串,目的串CMPSB ;字節(jié)傳送字節(jié)傳送ES:SI-DS:D

溫馨提示

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

最新文檔

評論

0/150

提交評論