微機原理指令系統(tǒng)的學習ppt課件_第1頁
微機原理指令系統(tǒng)的學習ppt課件_第2頁
微機原理指令系統(tǒng)的學習ppt課件_第3頁
微機原理指令系統(tǒng)的學習ppt課件_第4頁
微機原理指令系統(tǒng)的學習ppt課件_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微型計算機原理及應(yīng)用微型計算機原理及應(yīng)用第二章第二章 8086/8088 8086/8088指令系統(tǒng)指令系統(tǒng) 2.1 2.1 尋址方式尋址方式 2.2 8086/8088 2.2 8086/8088指令系統(tǒng)指令系統(tǒng) 2.2.1 2.2.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 2.2.2 2.2.2 算術(shù)運算指令算術(shù)運算指令 2.2.3 2.2.3 邏輯運算和移位指令邏輯運算和移位指令 2.2.4 2.2.4 程序控制指令程序控制指令 2.2.5 2.2.5 串操作指令串操作指令 2.2.6 2.2.6 標志處理與標志處理與CPUCPU控制指令控制指令2.1 8086/8088尋址方式尋址方式指令格式:指

2、令格式: 操作碼操作碼 操作數(shù)操作數(shù)操作碼:計算機所要執(zhí)行的操作,或指出操操作碼:計算機所要執(zhí)行的操作,或指出操作類型,是一種助記符。作類型,是一種助記符。操作數(shù):操作的對象,可以是操作數(shù)本身或操作數(shù):操作的對象,可以是操作數(shù)本身或存放操作數(shù)的內(nèi)存存放操作數(shù)的內(nèi)存(I/O端口端口)地址或其它有關(guān)地址或其它有關(guān)操作數(shù)的信息操作數(shù)的信息 。匯編語言是一種符號語言,它用助記符匯編語言是一種符號語言,它用助記符來表示操作碼,用符號或符號地址來表來表示操作碼,用符號或符號地址來表示操作數(shù)或操作數(shù)地址,它與機器指令示操作數(shù)或操作數(shù)地址,它與機器指令是一一對應(yīng)的。是一一對應(yīng)的。尋址方式:是指令中用于說明如何

3、尋找尋址方式:是指令中用于說明如何尋找操作數(shù)的方法。操作數(shù)的方法。計算機中操作數(shù)常存放在以下幾個地方:計算機中操作數(shù)常存放在以下幾個地方:指令代碼中,存放常量;指令代碼中,存放常量;MOV AX, 2070H寄存器中:寄存器中:MOV AX, BX內(nèi)存中:內(nèi)存中: MOV AX, 2000HI/O端口中僅對端口中僅對IN/OUT指令):指令): IN AL, 40H80868088的基本尋址方式有六種:的基本尋址方式有六種:寄存器尋址寄存器尋址 ;操作數(shù)存放在寄存器中;操作數(shù)存放在寄存器中立即尋址立即尋址 ;操作數(shù)存放在內(nèi)存代碼段;操作數(shù)存放在內(nèi)存代碼段直接尋址直接尋址 ;操作數(shù)存放在內(nèi)存;操

4、作數(shù)存放在內(nèi)存寄存器間接尋址;操作數(shù)存放在內(nèi)存寄存器間接尋址;操作數(shù)存放在內(nèi)存變址尋址變址尋址 ;操作數(shù)存放在內(nèi)存;操作數(shù)存放在內(nèi)存基址加變址尋址基址加變址尋址 ;操作數(shù)存放在內(nèi)存;操作數(shù)存放在內(nèi)存一、一、 寄存器尋址寄存器尋址操作數(shù)放在操作數(shù)放在CPU內(nèi)部的寄存器中,可以是內(nèi)部的寄存器中,可以是8位位或或16位寄存器,注意源操作數(shù)和目的操作數(shù)的位寄存器,注意源操作數(shù)和目的操作數(shù)的位數(shù)應(yīng)一致。位數(shù)應(yīng)一致。MOV AX, BX ;將將 BX中的內(nèi)容傳送到中的內(nèi)容傳送到AX中去中去MOV AL, BH ;將將 BH中的內(nèi)容傳送到中的內(nèi)容傳送到AL中去中去MOV CL, AX錯誤錯誤! 不匹配不匹配

5、二、二、 立即尋址立即尋址操作數(shù)直接放在指令中,緊跟在操作碼的后面,操作數(shù)直接放在指令中,緊跟在操作碼的后面,與操作碼一起放在存儲器的代碼段中與操作碼一起放在存儲器的代碼段中8/16位)。位)。MOV AX, 2030H 對應(yīng)機器碼對應(yīng)機器碼: B8H 2030H4004H4003H4002H4001H4000H20H30HB8H4004H4003H4002H4001H4000H20H30HB8H內(nèi)存偏移內(nèi)存偏移地址地址單元內(nèi)容單元內(nèi)容注意注意別錯別錯!高字節(jié)高字節(jié) 高地址高地址低字節(jié)低字節(jié) 低地址低地址AXAHAL20H30H三、三、 直接尋址直接尋址 操作數(shù)存放在內(nèi)存中,在指令中給出存放單

6、元的操作數(shù)存放在內(nèi)存中,在指令中給出存放單元的偏移地址,如果不加說明,操作數(shù)默認在數(shù)據(jù)段。偏移地址,如果不加說明,操作數(shù)默認在數(shù)據(jù)段。MOV AX, 0020H;將將 數(shù)據(jù)段偏移地址為數(shù)據(jù)段偏移地址為0020H的地址中的內(nèi)容傳的地址中的內(nèi)容傳送到送到AX中去,相當于中去,相當于: MOV AX, DS:0020H留意:書寫時加方括號。留意:書寫時加方括號。物理地址物理地址: (DS)16指令中給的指令中給的16位偏移地址位偏移地址12H34H56H碼段碼段堆棧段堆棧段數(shù)據(jù)段數(shù)據(jù)段0000H0001H0020H0021H0022HDS:0000H偏移地址偏移地址內(nèi)存內(nèi)容內(nèi)存內(nèi)容MOV AX, 0

7、020HAXAHAL3412AX: 3412H也可以指向內(nèi)存中其他段的數(shù)據(jù),這時要在相也可以指向內(nèi)存中其他段的數(shù)據(jù),這時要在相應(yīng)的偏移地址前加段超越符和應(yīng)的偏移地址前加段超越符和“ :”。MOV AL, ES:0020H;將將 擴展段中偏移地址為擴展段中偏移地址為0020H單元中的內(nèi)容傳單元中的內(nèi)容傳送到送到AL中去中去MOV SS:0100H, BX;將將 BX中的內(nèi)容傳送到堆棧段中偏移地址為中的內(nèi)容傳送到堆棧段中偏移地址為0100H、0101H的單元中去的單元中去四、四、 寄存器間接尋址寄存器間接尋址操作數(shù)存放在內(nèi)存中,但其偏移地址存放在指令操作數(shù)存放在內(nèi)存中,但其偏移地址存放在指令中給出

8、的寄存器中。中給出的寄存器中。MOV AX, BXBX中存放操作中存放操作數(shù)的偏移地址數(shù)的偏移地址其中,作為間接尋址的寄存器只能有其中,作為間接尋址的寄存器只能有4個:個:BX, SI, DI, BP,其他寄存器無此功能。,其他寄存器無此功能。1、對、對DI、SI、BX間接尋址間接尋址2、對、對BP間接尋址間接尋址留意:用留意:用BP間接尋址,操作數(shù)默認在堆棧段,間接尋址,操作數(shù)默認在堆棧段,用其余用其余3個寄存器時,操作數(shù)默認在數(shù)據(jù)段。個寄存器時,操作數(shù)默認在數(shù)據(jù)段。物理地址物理地址: (DS)16DI/SI/BX中給的中給的16位偏移地址位偏移地址物理地址物理地址: (SS)16BP中給的

9、中給的16位偏移地址位偏移地址78H00H56H碼段碼段堆棧段堆棧段數(shù)據(jù)段數(shù)據(jù)段0000H0001H1100H1101H1102HDS:0000H偏移地址偏移地址內(nèi)存內(nèi)容內(nèi)存內(nèi)容MOV AX, BXAXAHAL0078AX: 0078HMOV BX, 1100H例例1:MOV AX, ES:BX;傳送的操作數(shù)在附加段中,偏移地址存放在傳送的操作數(shù)在附加段中,偏移地址存放在BX中。中。例例2:MOV BP, BX;將將BX中的內(nèi)容傳送到堆棧段中,其目的地的偏中的內(nèi)容傳送到堆棧段中,其目的地的偏移地址存放在移地址存放在BP中。中。例例3: MOV CX, 2000H;錯,不能對錯,不能對CX間接尋

10、址間接尋址五、五、 變址尋址變址尋址操作數(shù)在內(nèi)存中,由指定的寄存器內(nèi)容,加上指操作數(shù)在內(nèi)存中,由指定的寄存器內(nèi)容,加上指令中給出的令中給出的8位或位或16位偏移量作為操作數(shù)的偏移地位偏移量作為操作數(shù)的偏移地址,計算方法:址,計算方法:偏移地址寄存器內(nèi)容指令中給定的偏移量偏移地址寄存器內(nèi)容指令中給定的偏移量同樣,作為變址的寄存器只能有同樣,作為變址的寄存器只能有4個:個:BX, SI, DI, BP,其他寄存器無此功能。,其他寄存器無此功能。1、對、對DI、SI、BX變址尋址變址尋址2、對、對BP變址尋址變址尋址物理地址物理地址: (DS)16計算出的偏移地址計算出的偏移地址物理地址物理地址:

11、(SS)16計算出的偏移地址計算出的偏移地址留意:用留意:用BP變址尋址,操作數(shù)默認在堆棧段,變址尋址,操作數(shù)默認在堆棧段,用其余用其余3個寄存器時,操作數(shù)默認在數(shù)據(jù)段。個寄存器時,操作數(shù)默認在數(shù)據(jù)段。MOV AX, TABDI變址尋址可以有多種格式:變址尋址可以有多種格式:MOV AX, BX+0A00H如:如:MOV AX, 0200H+BX假設(shè)假設(shè)DS:3000H, BX: 1000H 則操作數(shù)所在地址:則操作數(shù)所在地址:高高8位:位: 31201H 低低8位:位: 31200HMOV DH, SI+0200H;此時傳送的操作數(shù)在數(shù)據(jù)段中,其偏移地址是此時傳送的操作數(shù)在數(shù)據(jù)段中,其偏移地

12、址是SI寄存器中的內(nèi)容加上寄存器中的內(nèi)容加上0200H六、六、 基址加變址尋址基址加變址尋址操作數(shù)存放在內(nèi)存中,但其偏移地址是由三部分操作數(shù)存放在內(nèi)存中,但其偏移地址是由三部分相加而成:相加而成: 基址寄存器內(nèi)容變址寄存器內(nèi)容偏移量基址寄存器內(nèi)容變址寄存器內(nèi)容偏移量基址寄存器只有基址寄存器只有2個:個:BX,默認的操作數(shù)在數(shù)據(jù)段;,默認的操作數(shù)在數(shù)據(jù)段;BP,默認的操作數(shù)在堆棧段。,默認的操作數(shù)在堆棧段。 變址寄存器只有變址寄存器只有2個:個:SI和和DI。 偏移量同樣由指令給出。偏移量同樣由指令給出。1、BX作為基地址作為基地址2、BP作為基地址作為基地址物理地址物理地址: (DS)16計算

13、出的偏移地址計算出的偏移地址物理地址物理地址: (SS)16計算出的偏移地址計算出的偏移地址MOV AX, VALBX+SIMOV AX, 0200HBXSIMOV AX, 0200HBXBP;錯誤;錯誤MOV AX, 0200HSIDI;錯誤;錯誤MOV AX, COUNTBP+SI;欲取的數(shù)據(jù)在堆棧段欲取的數(shù)據(jù)在堆棧段MOV AX, BX+SI+0200H;欲傳送的操作數(shù)在數(shù)據(jù)段中,其偏移地址是欲傳送的操作數(shù)在數(shù)據(jù)段中,其偏移地址是BX寄寄存器中的內(nèi)容加上存器中的內(nèi)容加上SI寄存器中的內(nèi)容加上寄存器中的內(nèi)容加上0200H12H34H56H78H9AHBCHDEHF0H21000H21001

14、H21002H21003H21004H21005H21006H21007H10H20H30H40H50H60H70H80H23000H23001H23002H23003H23004H23005H23006H23007H1AH2AH3AH4AH5AH6AH7AH8AH31000H31001H31002H31003H31004H31005H31006H31007H1BH2BH3BH4BH5BH6BH7BH8BH33000H33001H33002H33003H33004H33005H33006H33007HDS= 2000H SS=3000H BX=1000H BP=3000H MOV AX, BX

15、MOV AX, 3000HMOV AX, BXMOV AL, BPMOV SI, 0002HMOV CX, BXSIMOV DL, BX+06HAX= 1000HAX= 2019HAX= 3412HAL= 1BHSI= 0002HCX= 7856HDL= DEH2.2 8086/8088指令系統(tǒng)指令系統(tǒng)8088/8086指令系統(tǒng)可以分為以下六個功能組:指令系統(tǒng)可以分為以下六個功能組: 數(shù)據(jù)傳送數(shù)據(jù)傳送(Data Transter) 算術(shù)運算算術(shù)運算(Arithmetic) 邏輯運算邏輯運算(Logic) 程序控制程序控制(Program Control) 串操作串操作(String Menip

16、ulation) 標志處理標志處理 和和CPU控制控制(Processor Control)一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令1. 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令格式:格式:MOV OPRD1, OPRD2功能:功能: (OPRD2) OPRD1CPU內(nèi)部寄存器之間數(shù)據(jù)的傳送內(nèi)部寄存器之間數(shù)據(jù)的傳送(除除CS、IP)立即數(shù)傳送至立即數(shù)傳送至CPU內(nèi)部的通用寄存器組內(nèi)部的通用寄存器組CPU內(nèi)部的寄存器內(nèi)部的寄存器(除除CS、IP)與存儲器與存儲器(所有尋址所有尋址方式方式)之間之間能實現(xiàn)用立即數(shù)給存儲單元賦值能實現(xiàn)用立即數(shù)給存儲單元賦值CS,IP不能作為目的操作數(shù)不能作為目的操作數(shù) MOV CS

17、, AX兩個段寄存器間不能直接傳送兩個段寄存器間不能直接傳送 MOV SS, DS立即數(shù)不能直接傳送給段寄存器立即數(shù)不能直接傳送給段寄存器 MOV DS,2000H內(nèi)存單元間不能直接傳送內(nèi)存單元間不能直接傳送 MOV SI, 2000H立即數(shù)不能作為目的操作數(shù)立即數(shù)不能作為目的操作數(shù) MOV 1000H, AX留意:留意:MOV BL, AXMOV 100, CXMOV SI, DIMOV CS, AXMOV SI, DIMOV BH, 2DIMOV AX, CSMOV SS, 2400HMOV BP+4, AX錯誤,不匹配錯誤,不匹配錯誤,立即數(shù)不能賦值錯誤,立即數(shù)不能賦值正確正確錯誤,錯誤

18、,CS不能賦值不能賦值錯誤,內(nèi)存間不能直接傳送錯誤,內(nèi)存間不能直接傳送正確正確正確正確錯誤,段寄存器不能賦立即數(shù)錯誤,段寄存器不能賦立即數(shù)正確正確2. 堆棧指令堆棧指令 堆棧是按先進后出的原則組織的一段內(nèi)存區(qū)堆棧是按先進后出的原則組織的一段內(nèi)存區(qū)域,一般作臨時存儲器用域,一般作臨時存儲器用(倉庫倉庫)。其指針。其指針SP為為16位位的寄存器,始終指向棧頂?shù)募拇嫫鳎冀K指向棧頂(貨物堆放的位置貨物堆放的位置)。堆棧。堆棧的空間大小可用戶指定。如:的空間大小可用戶指定。如:SS的值為的值為 2000H 表示堆棧從表示堆棧從20000H處開始處開始20000H假設(shè)用戶定義堆棧為假設(shè)用戶定義堆棧為10

19、0個字節(jié),個字節(jié),則則SP自動設(shè)置為自動設(shè)置為0064H20194H100個字節(jié)個字節(jié)SP:0064H1、格式:、格式:PUSH OPRD 功能功能: (OPRD)入棧入棧 FFH20000H20194H100個字節(jié)個字節(jié)SP(1) SP-1SP AHSPSP12H(2) SP-1SP ALSPSP34H先減指針先減指針, 再壓數(shù)據(jù)再壓數(shù)據(jù), 先高后低先高后低(1) SPBL SP+1SP(2) SPBH SP+1SP先出數(shù)據(jù)先出數(shù)據(jù), 再加指針再加指針,先低后高先低后高彈出低字節(jié)彈出低字節(jié)彈出高字節(jié)彈出高字節(jié)SPSP堆棧的操作有兩種堆棧的操作有兩種:入棧入棧/出棧出棧例:例: MOV AX,

20、 1234H PUSH AX;入棧;入棧2、格式:、格式:POP OPRD 功能功能: 棧頂內(nèi)容送棧頂內(nèi)容送OPRD留意:留意:只能對只能對16位數(shù)進行操作,一次壓入彈出一個字位數(shù)進行操作,一次壓入彈出一個字PUSH AH;錯;錯必須對寄存器的內(nèi)容或內(nèi)存單元的內(nèi)容進行操作必須對寄存器的內(nèi)容或內(nèi)存單元的內(nèi)容進行操作PUSH 2000H;錯;錯 PUSH 2000H; 對對例:設(shè)例:設(shè)SP為為0100H,SS為為2000H, PUSH BX后,后,棧頂?shù)奈锢淼刂肥牵簵m數(shù)奈锢淼刂肥牵?20190H2H=200FEH而執(zhí)行而執(zhí)行POP BX后,棧頂?shù)奈锢淼刂肥牵汉?,棧頂?shù)奈锢淼刂肥牵?0190H2H

21、=20192HMOV AX, 1000HPUSH AXMOV BX, AXPUSH BX POP 1002HPOP BX12H34H56H78H9AHBCHDEHF0H21000H21001H21002H21003H21004H21005H21006H21007H30000H30001H30060H30061H30062H30063H30064H例:設(shè)例:設(shè)DS 2000H SS3000H SP0064H,執(zhí)行下列程序:,執(zhí)行下列程序:SP10H00HBX 1000H34H12H34H12HBX1000HSPSPSP3. 交換指令交換指令XCHG格式:格式:XCHG OPRD1, OPRD2功

22、能功能:(OPRD1) (OPRD2) 完成通用寄存器之間,通用寄存器與累加器之完成通用寄存器之間,通用寄存器與累加器之間、與存儲器之間間、與存儲器之間8位,位,16位數(shù)據(jù)的相互交換。位數(shù)據(jù)的相互交換。例如:例如:XCHG BL, AHXCHG AX, BX 內(nèi)存之間的數(shù)據(jù)、累加器之間不可相互交換內(nèi)存之間的數(shù)據(jù)、累加器之間不可相互交換 CS,IP不能參與交換不能參與交換 段寄存器和立即數(shù)不能作為一個操作數(shù)段寄存器和立即數(shù)不能作為一個操作數(shù)4. 累加器專用指令累加器專用指令(只與只與AX或或AL有關(guān),與有關(guān),與AH無關(guān)無關(guān))1)輸入輸出指令輸入輸出指令CPU存儲器存儲器輸入輸入輸出輸出INOUT

23、AX或或AL格式:格式:IN AL , PORT IN AX, PORT功能:從功能:從PORT口輸入數(shù)據(jù)到口輸入數(shù)據(jù)到AL(AX)。格式:格式:OUT PORT , AL OUT PORT, AX功能:將功能:將AL(AX)中的內(nèi)容從中的內(nèi)容從PORT口輸出??谳敵觥N AL, 40H OUT 40H , AL IN AX, 40H OUT 40H , AX8位位16位位(40H) AL(41H) AHAL (40H) AH (41H)當端口地址大于當端口地址大于8位位(0FFH)時,要用時,要用DX間接尋址間接尋址MOV DX, 352HIN AL, DXMOV DX, 400HOUT

24、DX, ALIN, OUT只能對只能對AL, AX操作,若傳送的數(shù)據(jù)為操作,若傳送的數(shù)據(jù)為16位,位,則端口地址只能取偶數(shù)。則端口地址只能取偶數(shù)。2) 換碼查表指令換碼查表指令 XLAT將累加器將累加器AL中的內(nèi)容變換為存儲器默認數(shù)據(jù)段表格中的內(nèi)容變換為存儲器默認數(shù)據(jù)段表格中的某一個值,常用來實現(xiàn)編碼碼制的轉(zhuǎn)換。中的某一個值,常用來實現(xiàn)編碼碼制的轉(zhuǎn)換。要求:要求:BX指向表的首地指向表的首地址的偏移地址,址的偏移地址,AL中的中的內(nèi)容為表中某一項與首內(nèi)容為表中某一項與首地址之間的偏移量。地址之間的偏移量。 在執(zhí)行查表指令時,在執(zhí)行查表指令時,CPU將將BX與與AL的值相的值相加作為偏移地址,將

25、它加作為偏移地址,將它所對應(yīng)單元中的內(nèi)容取所對應(yīng)單元中的內(nèi)容取出送到出送到AL中去。中去。DS段段表格首地址表格首地址11H20H33H22HBX AL+BX+0BX+ALBX+2BX+1AL留意:使用該指令前,應(yīng)先建立一張表,該表的留意:使用該指令前,應(yīng)先建立一張表,該表的最大容量為最大容量為256字節(jié)。(默認在數(shù)據(jù)段)字節(jié)。(默認在數(shù)據(jù)段)例例: 將十進制數(shù)將十進制數(shù)09轉(zhuǎn)換成七段數(shù)碼管的顯示編碼轉(zhuǎn)換成七段數(shù)碼管的顯示編碼+5Vabcdefgabcdefgabcdefg0100 00000abcdefg0111 1001 140H79H40H79H24H30H19H12H02H78H00H

26、10H0123456789例例: 從從5號端口輸入十進制數(shù),轉(zhuǎn)換為顯示編碼號端口輸入十進制數(shù),轉(zhuǎn)換為顯示編碼后從后從20號端口輸出。號端口輸出。40H79H24H30H19H12H02H78H00H10H01234567892000H2019H2019H2019H2019H2019H2019H2019H2019H2009HDS段段MOV BX, 2000HIN AL, 5HXLATOUT 20H, AL如果改為:如果改為: MOV BX, 2000H MOV AL, 5H;不同?;不同? XLAT OUT 20H, AL例:向端口例:向端口40H送字符送字符35的顯示編碼。的顯示編碼。40H7

27、9H24H30H19H12H02H78H00H10H01234567892000H2019H2019H2019H2019H2019H2019H2019H2019H2009HDS段段MOV BX, 2000HMOV AL, 3XLATOUT 40H, ALMOV AL, 5XLATOUT 40H, AL5. 地址傳送指令地址傳送指令1) 取偏移地址指令取偏移地址指令 LEA格式:格式:LEA OPRD1,OPRD2功能:將源操作數(shù)的偏移地址送到目的操作數(shù)中。功能:將源操作數(shù)的偏移地址送到目的操作數(shù)中。要求源操作數(shù)必須為存儲器操作數(shù),目的操作數(shù)必須為一要求源操作數(shù)必須為存儲器操作數(shù),目的操作數(shù)必須

28、為一個個16位的通用寄存器。位的通用寄存器。該指令通常用來使一個寄存器作為地址指針。該指令通常用來使一個寄存器作為地址指針。LEA BX, TAB ; 將將TAB標號所指位置的偏移地址送標號所指位置的偏移地址送 BXMOV AL, BX ; 以以BX為地址指針取一個數(shù)據(jù)為地址指針取一個數(shù)據(jù)2) LDS 將指定內(nèi)存中的將指定內(nèi)存中的4個字節(jié)個字節(jié)(32位位)分別裝入指定的寄分別裝入指定的寄存器和段寄存器存器和段寄存器DS中。中。30H19H79H40H24H2133H2134H2131H2130H2132HDS段段例:數(shù)據(jù)段例:數(shù)據(jù)段2130H2133H單元中存放一個地址單元中存放一個地址213

29、0H 2131H 為該地址的偏移地址為該地址的偏移地址2132H 2133H 為該地址的段地址為該地址的段地址LDS DI, 2130H執(zhí)行后:執(zhí)行后:DI 7940H DS 3024H3) LES將指定內(nèi)存中的將指定內(nèi)存中的4個字節(jié)個字節(jié)(32位位)分別裝入指定的寄分別裝入指定的寄存器和段寄存器存器和段寄存器ES中。中。例:例:DS1000H DI 0400H 10400H=FFH 10401H=00H 10402H=AAH 10403H=00H LEA SI, DI; SI= 0400HLES AX, DI; AX= 00FFH ES=00AAH6. 標志寄存器傳送指令標志寄存器傳送指令1

30、)LAHF(Load AH with Flags):讀取標志:讀取標志 標志寄存器標志寄存器PSW中的低中的低8位位AHOF DF IF TF SF ZFAFPFCF15 14 13 12 11 109876543210D7 D6D4D2D0AH2)SAHF(Set Flags with AH): 設(shè)置標志設(shè)置標志 AH標志寄存器中的低標志寄存器中的低8位位3)PUSHF: 標志寄存器入棧命令標志寄存器入棧命令4)POPF:將棧頂內(nèi)容送標志寄存器:將棧頂內(nèi)容送標志寄存器PSW留意:這個命令將改變留意:這個命令將改變PSW的內(nèi)容。的內(nèi)容。二、算術(shù)運算指令二、算術(shù)運算指令 80868088提供加、

31、減、乘、除四種基本算術(shù)提供加、減、乘、除四種基本算術(shù)操作。這些操作都可用于字節(jié)或字的運算,也可操作。這些操作都可用于字節(jié)或字的運算,也可以用于帶符號數(shù)與無符號數(shù)的運算。以用于帶符號數(shù)與無符號數(shù)的運算。 帶符號數(shù)用帶符號數(shù)用補碼表示。補碼表示。 同時同時80868088也提供了各種校正操作,故可也提供了各種校正操作,故可以進行十進制算術(shù)運算。以進行十進制算術(shù)運算。 參與加、減運算的操作數(shù)可如圖所示。參與加、減運算的操作數(shù)可如圖所示。 1、加法指令、加法指令1) 不帶進位的加法不帶進位的加法格式:格式:ADD OPRD1, OPRD2功能:功能:(OPRD1) + (OPRD2)OPRD1 結(jié)果影

32、響標志位結(jié)果影響標志位ADD BX+DI, 2000H;錯;錯 ADD BX+DI, 2000H;存儲器與立即數(shù)相加;存儲器與立即數(shù)相加 ADD DX, 50HBX+SI;通用寄存器與存;通用寄存器與存 儲單元內(nèi)容相加儲單元內(nèi)容相加 設(shè)設(shè) BX=C588H, 執(zhí)行執(zhí)行 ADD BH, BL后后? 11000101+10001000 101001101 CF=1, OF=1, ZF=0, SF=0, PF=1, AF=0MOV AL, 49HADD AL, 0D7H 01001001+11010111 100100000結(jié)果:結(jié)果:CF=1, OF=0, ZF=0, SF=0, PF=0, AF

33、=12) 帶進位的加法帶進位的加法格式:格式:ADC OPRD1, OPRD2功能:功能:(OPRD1) + (OPRD2)+CFOPRD1 結(jié)果影響標志位結(jié)果影響標志位該指令主要用于多字節(jié)數(shù)相加該指令主要用于多字節(jié)數(shù)相加例:兩個四字節(jié)無符號數(shù)相加,這兩個數(shù)分別放在數(shù)據(jù)段例:兩個四字節(jié)無符號數(shù)相加,這兩個數(shù)分別放在數(shù)據(jù)段以以2000H和和3000H開始的存儲單元內(nèi),高位在高地址,低開始的存儲單元內(nèi),高位在高地址,低位在低地址,要求運算結(jié)果放在位在低地址,要求運算結(jié)果放在2000H開始的單元內(nèi)。開始的單元內(nèi)。40H79H24H30H2000H2019H2019H2019H40HB9HA4H30H

34、3000H3001H3002H3003HCLCMOV SI, 2000HSIMOV AX, SI ADD AX, 3000HMOV SI, AXMOV AX, SI+2ADC AX, 3000H2MOV SI+2, AX3) 增量指令增量指令格式:格式:INC OPRD功能:功能:(OPRD) +1OPRD不影響不影響CF, 影響影響AF, OF, PF, SF和和ZFINC ALINC BXMOV AL, 0FFH; ZF=12、 減法指令減法指令1) 不帶借位的減法不帶借位的減法格式:格式:SUB OPRD1, OPRD2功能:功能: (OPRD1) ( OPRD2) OPRD1 結(jié)果影響

35、標志位結(jié)果影響標志位SUB BX+DI, 2000H;錯;錯SUB BX, DX; 通用寄存器之間通用寄存器之間 SUB AL, BX+SI; 累加器和存儲器之間累加器和存儲器之間 MOV CX, 5049HSUB CX, 0E2D7H 5 0 4 9-E 2 D7 6 D 7 2結(jié)果:結(jié)果:CF=1, OF=0, ZF=0, SF=0, PF=1, AF=02) 帶借位的減法帶借位的減法格式:格式:SBB OPRD1, OPRD2功能:功能: (OPRD1)(OPRD2)CFOPRD1 結(jié)果影響標志位結(jié)果影響標志位LEA BX, BUFFSUB AL, BXSBB AH, BX+1該指令主要

36、用于多字節(jié)數(shù)相減該指令主要用于多字節(jié)數(shù)相減3) 減量指令減量指令格式:格式:DEC OPRD功能:功能:(OPRD) - 1OPRD不影響不影響CF, 影響影響AF, OF, PF, SF和和ZFMOV CX, 1 DEC CX; ZF=14) 求補指令求補指令格式:格式:NEG OPRD; 對操作數(shù)取補碼后送回對操作數(shù)取補碼后送回功能:功能:0 (OPRD) OPRDNEG ALNEG COUNT指令影響標志位指令影響標志位AF,CF,OF,PF,SF和和ZF, 此指令執(zhí)行此指令執(zhí)行時時, 只有當操作數(shù)為只有當操作數(shù)為0時時, CF為為0, 否則否則CF總為總為1。若操作數(shù)為若操作數(shù)為80H

37、或或8000H,執(zhí)行求補指令后,結(jié)果,執(zhí)行求補指令后,結(jié)果沒有變化,但沒有變化,但OF置置1。5) 比較指令比較指令格式:格式:CMP OPRD1, OPRD2 功能:功能:(OPRD1) - (OPRD2) 不送回結(jié)果,只影響標志位不送回結(jié)果,只影響標志位 CMP AX, 2000H; 將將AX內(nèi)容與內(nèi)容與2000H相比較相比較CMP AX, BX+DI+100; 將將AX內(nèi)容與存儲單元內(nèi)容與存儲單元的值相比較的值相比較比較結(jié)果影響標志位比較結(jié)果影響標志位AF,CF,OF,PF,SF和和ZF。 比較指令主要用于比較兩個數(shù)之間的關(guān)系比較指令主要用于比較兩個數(shù)之間的關(guān)系 若兩者相等,相減以后結(jié)果

38、為零,若兩者相等,相減以后結(jié)果為零,ZFZF標志為標志為1 1,否則為否則為0 0。 大小的比較(大小的比較( 假設(shè)假設(shè)CMP AX,BX CMP AX,BX ) 對無符號數(shù),若結(jié)果沒有產(chǎn)生借位對無符號數(shù),若結(jié)果沒有產(chǎn)生借位(CF=0)(CF=0),則,則AXBXAXBX;若產(chǎn)生了借位;若產(chǎn)生了借位CFCF1 1),則),則AXAXBXBX。 對帶符號數(shù),則可根據(jù)對帶符號數(shù),則可根據(jù)OF與與SF異或運算的結(jié)果來異或運算的結(jié)果來判斷,結(jié)果為判斷,結(jié)果為1,則,則AXBX,結(jié)果為,結(jié)果為0,則,則AXBX3、乘法指令、乘法指令商定:商定:兩個兩個8位數(shù)相乘,有一個乘數(shù)在位數(shù)相乘,有一個乘數(shù)在AL中

39、,另一個乘數(shù)中,另一個乘數(shù)在寄存器或內(nèi)存中,乘積在在寄存器或內(nèi)存中,乘積在AX中;中;兩個兩個16位數(shù)相乘,有一個乘數(shù)在位數(shù)相乘,有一個乘數(shù)在AX中,另一個乘中,另一個乘數(shù)在寄存器或內(nèi)存中,乘積的高數(shù)在寄存器或內(nèi)存中,乘積的高16位在位在DX中,中,低低16位在位在AX中。中。乘法有有符號數(shù)和無符號數(shù)兩套指令乘法有有符號數(shù)和無符號數(shù)兩套指令8位數(shù)位數(shù)8位數(shù)位數(shù) 16位數(shù)位數(shù)16位數(shù)位數(shù)16位數(shù)位數(shù) 32位數(shù)位數(shù) 無符號數(shù)乘法指令無符號數(shù)乘法指令格式:格式:MUL OPRD; 不出現(xiàn)不出現(xiàn) AL 或或 AX功能:功能:AL/AXOPRD AX / DX, AXMUL BL; AL BL AXMU

40、L CX; AX CX DX(高位高位) , AX(低位低位)MUL BYTE PTR DI; AL ? AXMUL WORD PTR SI; AX ? ?2) 有符號數(shù)乘法指令有符號數(shù)乘法指令格式:格式:IMUL OPRD; 不出現(xiàn)不出現(xiàn) AL 或或 AXIMUL BL; AL BL AXIMUL CX; AX CX DX(高位高位) , AX(低位低位)IMUL BYTE PTR DI; 功能上與功能上與MUL相似相似, 要求兩個乘數(shù)必須為有符號數(shù)要求兩個乘數(shù)必須為有符號數(shù)乘法運算時,結(jié)果影響乘法運算時,結(jié)果影響CF和和OF,AF, PF, SF, ZF標標志位無意義。志位無意義。對對MU

41、L指令指令:當乘積的高半部分不為當乘積的高半部分不為0,CF=1, OF=1;否則,否則,CF=0, OF=0 。對對IMUL指令:指令:當乘積的高半部分是低半部分最高位的擴展,乘當乘積的高半部分是低半部分最高位的擴展,乘積的高半部分每位與低半部分最高位相同時:積的高半部分每位與低半部分最高位相同時:CF=0, OF=0;否則,否則,CF=1, OF=1 。CF=1, OF=1表示高半部表示高半部分包含有結(jié)果的有效數(shù)分包含有結(jié)果的有效數(shù)例例:MOV AL, 0FBHMOV BH, 02HIMUL BH結(jié)果:結(jié)果:AX=0FFF6H, 即即-10, CF=0, OF=0MOV AL, 0FBHM

42、OV BH, 02HMUL BH結(jié)果:結(jié)果:AX=01F6H, 即即502, CF=1, OF=14、除法指令、除法指令商定:除數(shù)必須為被除數(shù)的一半字長商定:除數(shù)必須為被除數(shù)的一半字長被除數(shù)為被除數(shù)為16位,放在位,放在AX中,除數(shù)為中,除數(shù)為8位,在寄存器位,在寄存器或內(nèi)存中,或內(nèi)存中, 8位商在位商在AL中中, 8位余數(shù)位余數(shù)AH中;中;被除數(shù)為被除數(shù)為32位,放在位,放在DX(高位高位), AX(低位低位)中,除數(shù)中,除數(shù)為為16位,在寄存器或內(nèi)存中,位,在寄存器或內(nèi)存中, 16位商在位商在AX中中, 16位余數(shù)位余數(shù)DX中。中。除法有有符號數(shù)和無符號數(shù)兩套指令除法有有符號數(shù)和無符號數(shù)兩

43、套指令16位數(shù)位數(shù)8位數(shù)位數(shù) 8位數(shù)位數(shù)32位數(shù)位數(shù) 16位數(shù)位數(shù) 16位數(shù)位數(shù)1無符號數(shù)除法指令無符號數(shù)除法指令格式:格式:DIV OPRD; 不出現(xiàn)不出現(xiàn) AX 或或 DX AX功能:功能:DX,AX/AX OPRD AX/AL,DX/AHDIV BL; AXBL AL(商商) , AH(余數(shù)余數(shù))DIV CX; ? CXAX(商商) , DX(余數(shù)余數(shù))DIV BYTE PTR DI; AX? AL(商商) AH(余余數(shù)數(shù))2) 有符號數(shù)乘法指令有符號數(shù)乘法指令I(lǐng)DIV OPRD; 不出現(xiàn)不出現(xiàn) AX 或或 DX AX功能上與功能上與DIV相似相似, 要求被除數(shù),除數(shù)必須為有符要求被除數(shù)

44、,除數(shù)必須為有符號數(shù)。號數(shù)。IDIV BL; AXBL AL(商商) , AH(余數(shù)余數(shù))留意留意:除法運算后,所有的標志位都是不確定的,沒有除法運算后,所有的標志位都是不確定的,沒有意義;意義;用用IDIV指令時,如果是雙字除以一個字,則商的指令時,如果是雙字除以一個字,則商的范圍為范圍為-3276832767,如果是一個字除以一個,如果是一個字除以一個字節(jié),則商的范圍為字節(jié),則商的范圍為-128127。如果超出這個。如果超出這個范圍,會作為除數(shù)為范圍,會作為除數(shù)為0來處理,產(chǎn)生來處理,產(chǎn)生0號中斷;號中斷; 8086系統(tǒng)規(guī)定余數(shù)的符號和被除數(shù)相同;系統(tǒng)規(guī)定余數(shù)的符號和被除數(shù)相同;當當8位數(shù)

45、除以位數(shù)除以8位數(shù),位數(shù),16位數(shù)除以位數(shù)除以16位數(shù)時,必須位數(shù)時,必須對被除數(shù)進行擴展。對被除數(shù)進行擴展。將字節(jié)擴展成字的指令:將字節(jié)擴展成字的指令:CBW將將AL中的符號位擴展到中的符號位擴展到AH中。當中。當AL=80H時,時,AH=0FFH。當遇到兩個字節(jié)或字相除時,要預(yù)先執(zhí)行當遇到兩個字節(jié)或字相除時,要預(yù)先執(zhí)行CBW指指令或令或CWD指令,擴展被除數(shù),否則不能正確執(zhí)行指令,擴展被除數(shù),否則不能正確執(zhí)行除法操作。除法操作。將將AX中的符號位擴展到中的符號位擴展到DX中。當中。當AX=8000H時時,DX=0FFFFH。將字擴展成雙字的指令:將字擴展成雙字的指令:CWD5、十進制調(diào)整指

46、令、十進制調(diào)整指令壓縮壓縮BCD碼碼: 一個字節(jié)中有兩一個字節(jié)中有兩位位BCD碼碼 0100 0101非壓縮非壓縮BCD碼:一個字節(jié)只用碼:一個字節(jié)只用低低4位表示一位位表示一位BCD碼,高碼,高4位位為為0。 0000 0100 0000 0101BCD碼:用二進制形式表示的十進制碼。每一位十進制碼:用二進制形式表示的十進制碼。每一位十進制數(shù)用數(shù)用4位二進制表示,運算規(guī)則是逢十進一。位二進制表示,運算規(guī)則是逢十進一。十進制十進制BCD碼碼00000100012001030011401005010160110701118100091001BCD碼運算時,先用一般的二進制碼運算時,先用一般的二進

47、制運算,然后再進行運算,然后再進行BCD碼調(diào)整。碼調(diào)整。BCD碼加法十進制調(diào)整指令碼加法十進制調(diào)整指令1) 非壓縮的非壓縮的BCD碼加法調(diào)整指令碼加法調(diào)整指令 AAA兩個非壓縮的兩個非壓縮的BCD碼相加,結(jié)果在碼相加,結(jié)果在AL中,執(zhí)行該中,執(zhí)行該指令后將結(jié)果調(diào)整為十進制,放在指令后將結(jié)果調(diào)整為十進制,放在AX中。中。MOV AL, 7HADD AL, 5HAAA; AL: 0CH; AX: 0102H CF=AF=1調(diào)整原則:在調(diào)整前若調(diào)整原則:在調(diào)整前若AL低半部包含的數(shù)值大于低半部包含的數(shù)值大于9或或AF=1, 則則AAA完成下列操作:完成下列操作: AL加加6,AF和和CF置置1,AL

48、的高的高4位清零。位清零。7+5=12 用非壓縮的用非壓縮的BCD碼表示運算過程:碼表示運算過程:0000 01110000 0101 0000 1100BCD碼逢十進一,碼逢十進一,16進制逢進制逢16進進1,因為低,因為低4位大位大于于9,所以在個位上加,所以在個位上加6,使其產(chǎn)生進位,同時,使其產(chǎn)生進位,同時AF=1,CF=1。0000 11000000 0110 0001 001016進制加法進制加法AAA指令調(diào)整為指令調(diào)整為10進制結(jié)果進制結(jié)果2) 壓縮壓縮BCD碼加法調(diào)整指令碼加法調(diào)整指令 DAA兩個壓縮的兩個壓縮的BCD碼相加,結(jié)果在碼相加,結(jié)果在AL中,執(zhí)行該指中,執(zhí)行該指令后

49、將結(jié)果調(diào)整為十進制,放在令后將結(jié)果調(diào)整為十進制,放在AL中。中。MOV AL, 56HADD AL, 47HDAA; AL: 9DH; AL: 03H CF=1調(diào)整原則:調(diào)整原則:如果如果AF=1或或AL的低的低4位大于位大于9, 則則AL加加06H并置并置AF=1如果如果CF=1或或AL的高的高4位大于位大于9, 則則AL加加60H并置并置CF=1。如果滿足上述如果滿足上述2條條, 則則AL加加66H, 并置并置AF=1,CF=1。MOV AX, 1234HMOV BX, 5678HADD AL, BLDAAMOV CL, ALMOV AL, AHADC AL, BHDAAMOV AH, A

50、LMOV AL, CL; AL : ACH; AL : 12H CF=1; CL : 12H; AL : 12H; AL : 69H; AL : 69H CF=0; AX :6912H CF=0BCD碼減法調(diào)整指令與加法調(diào)整指令類似,只是碼減法調(diào)整指令與加法調(diào)整指令類似,只是分別將加分別將加06H, 60H, 66H改為減改為減 06H, 60H, 66H。AAS: 對非壓縮的對非壓縮的BCD碼減法調(diào)整碼減法調(diào)整DAS: 對壓縮的對壓縮的BCD碼減法調(diào)整碼減法調(diào)整留意:調(diào)整指令使用時,必須緊跟在相對應(yīng)的留意:調(diào)整指令使用時,必須緊跟在相對應(yīng)的加減法指令后進行。加減法指令后進行。BCD碼乘法十進

51、制調(diào)整指令碼乘法十進制調(diào)整指令 AAM1) BCD碼均為無符號數(shù),故只有用碼均為無符號數(shù),故只有用MUL乘法指令乘法指令才能調(diào)整;才能調(diào)整;2) BCD碼乘法調(diào)整指令只能對非壓縮的碼乘法調(diào)整指令只能對非壓縮的BCD碼相碼相乘結(jié)果進行調(diào)整;乘結(jié)果進行調(diào)整;MOV AL, 05HMOV BH, 06HMUL BHAAM; AX : 001EH ; AX : 0300H 1) BCD碼均為無符號數(shù),故只有用碼均為無符號數(shù),故只有用DIV除法指令除法指令才能調(diào)整,并且在兩個數(shù)相除前進行調(diào)整;才能調(diào)整,并且在兩個數(shù)相除前進行調(diào)整;2) BCD碼除法調(diào)整指令只能對非壓縮的碼除法調(diào)整指令只能對非壓縮的BCD

52、碼相碼相乘結(jié)果進行調(diào)整;乘結(jié)果進行調(diào)整;MOV AX, 0300HMOV BL, 05HAADDIV BL; AX : 001EH ; AX : 0006H BCD碼除法十進制調(diào)整指令碼除法十進制調(diào)整指令 AAD三、邏輯運算指令三、邏輯運算指令1) NOT格式:格式:NOT OPRD 功能:功能:OPRD按位取反按位取反設(shè):設(shè):AX=73H DX= 85HMOV AX, DXNOT AX0000 0000 1000 01011111 1111 0111 1010 對標志位沒有影響對標志位沒有影響2) AND、 OR、XOR格式:格式:ANDOR/XOR) OPRD1, OPRD2功能功能:OP

53、RD1 AND(OR/XOR) OPRD2 OPRD1 這三條指令執(zhí)行后,這三條指令執(zhí)行后,CF=0, OF=0, SF, PF, ZF發(fā)生發(fā)生變化。變化。MOV AX, 2050HAND AX, 0FFH;??;取AX的低的低8位位 AX0050H PF=1, SF=0, ZF=0OR AL, 0FH; 結(jié)果?結(jié)果? AL=5FHAL: 00001111XOR AL, 0FFH0000 11111111 11111111 0000XOR AL, 00H0000 11110000 00000000 1111與與0異或,狀態(tài)不變;與異或,狀態(tài)不變;與1異或,狀態(tài)相反。異或,狀態(tài)相反。對某些位置對某

54、些位置1用用OR;對某些位清零用;對某些位清零用AND;對某些位取反用對某些位取反用XOR。3) TEST格式:格式:TEST OPRD1, OPRD2功能:功能:(OPRD1) AND (OPRD2) 結(jié)果影響標志結(jié)果影響標志TEST CX, 0FFFFHJZ P1TEST AL, 01HJNZ AGAIN; 檢驗檢驗CX是否為零是否為零; 若標志若標志ZF=1即即CX為為0,轉(zhuǎn)向,轉(zhuǎn)向 P1; 檢驗檢驗AL最低位是否為零最低位是否為零; 不為零則轉(zhuǎn)移不為零則轉(zhuǎn)移4) 移位指令移位指令非循環(huán)移位指令非循環(huán)移位指令(3條條)格式:格式:SAL OPRD, M: 功能:功能:OPRD算術(shù)左移算術(shù)

55、左移M位位格式:格式:SHL OPRD, M: 功能:功能:OPRD邏輯左移邏輯左移M位位0CF左移一位進左移一位進CF,右邊補,右邊補0,相當于乘,相當于乘2。影響標志。影響標志若移位后最高位與若移位后最高位與CF不同,則不同,則OF=1,表示移位前,表示移位前后數(shù)據(jù)變號。后數(shù)據(jù)變號。若移位位數(shù)大于若移位位數(shù)大于1,所移的位數(shù)用,所移的位數(shù)用CL存放。存放。MOV AL, 02HSAL AL, 1;AL: 0000 0010;AL: 0000 0100MOV AL, 02HSAL AL, 4 ;錯錯MOV AL, 02HMOV CL, 4SHL AL, CL;AL: 0000 0010;AL

56、: 0010 0000格式:格式:SAR OPRD, M: 功能:功能:OPRD算術(shù)右移算術(shù)右移M位位CF最低位進最低位進CF, 左邊重復(fù)最高位左邊重復(fù)最高位, 即操作數(shù)符號不變。即操作數(shù)符號不變。一般用于有符號數(shù)的右移,符號擴展。一般用于有符號數(shù)的右移,符號擴展。若移位位數(shù)大于若移位位數(shù)大于1,所移的位數(shù)用,所移的位數(shù)用CL存放。存放。MOV AL, -4SAR AL, 1;AL: 1111 1100;AL: 1111 1110-2格式:格式:SHR OPRD, M: 功能:功能:OPRD邏輯右移邏輯右移M位位CF最低位進最低位進CF, 左邊補左邊補0。一般用于無符號數(shù)的右移。一般用于無符號

57、數(shù)的右移。若移位位數(shù)大于若移位位數(shù)大于1,所移的位數(shù)用,所移的位數(shù)用CL存放。存放。MOV AL, 8SHR AL, 1;AL: 0000 1000;AL: 0000 010040MOV AL, 48HMOV AH, AL AND AL, 0FH MOV CL, 4SHR AH, CLMOV NUM, AX;AL: 0100 1000;AL: 0000 1000;AH: 0000 0100; NUM: 0000 1000 NUM+1: 0000 0100該程序的功能:完成了將該程序的功能:完成了將AL中的壓縮中的壓縮BCD碼碼變成非壓縮變成非壓縮BCD碼存放在碼存放在NUM開始的存區(qū)。開始的存

58、區(qū)。試分析下面程序完成什么任務(wù)?試分析下面程序完成什么任務(wù)? 設(shè)設(shè)DL)=12H,(BL)=34HMOV CL, 4SHL DL, CLSHR BL, CLOR DL, BL該程序的功能:完成了將原該程序的功能:完成了將原DL中的低中的低4位與原位與原BL中的高中的高4位拼起來放在位拼起來放在DL中中 。 此時,(此時,(DL) 23H 循環(huán)移位指令循環(huán)移位指令(4條條)格式:格式:ROL OPRD,M : 功能:不帶進位循環(huán)左移功能:不帶進位循環(huán)左移CF若移位后最高位與若移位后最高位與CF不同,則不同,則OF=1,表示移位前,表示移位前后數(shù)據(jù)變號。后數(shù)據(jù)變號。若移位位數(shù)大于若移位位數(shù)大于1,

59、所移的位數(shù)用,所移的位數(shù)用CL存放。存放。格式:格式:ROR OPRD,M : 功能:不帶進位循環(huán)右移功能:不帶進位循環(huán)右移CF若移位位數(shù)大于若移位位數(shù)大于1,所移的位數(shù)用,所移的位數(shù)用CL存放。存放。格式:格式:RCL OPRD,M : 功能:帶進位循環(huán)左移功能:帶進位循環(huán)左移CF可實現(xiàn)多字節(jié)的移位,將可實現(xiàn)多字節(jié)的移位,將DX, AX左移左移1位位SAL AX, 1RCL DX, 1CFAX0CFDXCF格式:格式:RCR OPRD,M : 功能:帶進位循環(huán)右移功能:帶進位循環(huán)右移CF同樣可實現(xiàn)多字節(jié)的移位。同樣可實現(xiàn)多字節(jié)的移位。四、程序控制指令四、程序控制指令所有的程序控制轉(zhuǎn)移類指令均

60、不影響標志位所有的程序控制轉(zhuǎn)移類指令均不影響標志位JMP LL64KB內(nèi)內(nèi)段內(nèi)轉(zhuǎn)移:段內(nèi)轉(zhuǎn)移:目標指令與目標指令與轉(zhuǎn)移指令在轉(zhuǎn)移指令在同一代碼段同一代碼段中,只改變中,只改變IP的值的值LL:新新CS :IP分為兩種情況:分為兩種情況:段內(nèi)轉(zhuǎn)移和段間段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移轉(zhuǎn)移CS:IPJMP LL可以超過可以超過64KB段間轉(zhuǎn)移,目標指令段間轉(zhuǎn)移,目標指令與轉(zhuǎn)移指令分別在不與轉(zhuǎn)移指令分別在不同的代碼段,轉(zhuǎn)移時同的代碼段,轉(zhuǎn)移時需要改變需要改變CS和和IP的值的值CS:IPLL:新新CS:IP1、無條件轉(zhuǎn)移指令、無條件轉(zhuǎn)移指令格式:格式:JMP OPRD功能:程序轉(zhuǎn)向由功能:程序轉(zhuǎn)向由OPRD指向的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論