




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 指令系統指令系統 一組指令的集合一組指令的集合第第3章章 80 x86的指令系統和尋址方式的指令系統和尋址方式 操作碼操作碼 操作數操作數 . 操作數操作數指令指令 尋址方式尋址方式 與數據有關的尋址方式與數據有關的尋址方式 與轉移地址有關的尋址方式與轉移地址有關的尋址方式21. 8086的尋址方式的尋址方式 與數據有關的尋址方式與數據有關的尋址方式:以以 MOV 指令為例指令為例 立即尋址立即尋址 MOV AX , 3069H寄存器尋址寄存器尋址 MOV AL , BH直接尋址直接尋址 MOV AX , 2000H 寄存器間接尋址寄存器間接尋址 MOV AX , BX 寄存器相對尋址寄存
2、器相對尋址 MOV AX , COUNT SI 基址變址尋址基址變址尋址 MOV AX , BP DI 相對基址變址尋址相對基址變址尋址 MOV AX , MASK BX SI 存儲器尋址存儲器尋址3(1) 立即尋址方式立即尋址方式* 操作數在指令中給出操作數在指令中給出 指令格式: MOV AL, 5 MOV AX, 3064H MOV AL, A* 只能用于只能用于 SRC 字段字段 MOV 40H, AL * SRC 和和 DST 的字長一致的字長一致 MOV AH, 3064H 4(2) 寄存器尋址方式寄存器尋址方式* 操作數在指定的寄存器中操作數在指定的寄存器中 MOV AX, BX
3、 MOV AL, BH MOV AX, 3064H* 字節寄存器只有字節寄存器只有 AH AL BH BL CH CL DH DL* SRC 和和 DST 的字長一致的字長一致 MOV AH, BX * CS 不能用不能用 MOV 指令改變指令改變 MOV CS, AX 5(3) 直接尋址方式直接尋址方式* 有效地址有效地址EA由指令直接給出由指令直接給出 例例:MOV AX, 2000H EA=2000H, 假設假設(DS)=3000H, 那么那么PA=32000H* 隱含的段為數據段隱含的段為數據段 DS* 可使用段跨越前綴可使用段跨越前綴 MOV AX, ES: 2000H* 操作數地址
4、可由變量(符號地址)表示操作數地址可由變量(符號地址)表示, 但要注意但要注意VALUE DB 10 變量的屬性變量的屬性MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE 5030 32000AH AL3050(AX) = 3050H6(4) 寄存器間接尋址寄存器間接尋址* EA 在基址寄存器在基址寄存器(BX/BP) 或變址寄存器或變址寄存器(SI/DI) 中中 MOV AX, BX PA = 16d (DS) + (BX) MOV AX, ES:BX PA = 16d (ES) + (BX) MOV AX, BP PA = 16d (SS
5、) + (BP) * 不允許使用不允許使用AX、CX、DX 存放存放 EA MOV AX, CX * SRC 和和 DST 的字長一致的字長一致 MOV DL, BX ; BX指示一個字節單元指示一個字節單元 MOV DX, BX ; BX指示一個字單元指示一個字單元 * 適于數組、字符串、表格的處理適于數組、字符串、表格的處理7 有效地址有效地址 =(BX)(BP) 8位位(SI) 16位位(DI)+位移量位移量(5) 寄存器相對尋址方式寄存器相對尋址方式* 指令格式指令格式: MOV AX, COUNTSI MOV AX, COUNTSI 或或 MOV AX, COUNT+SI MOV A
6、X, COUNT+SI 假設假設 (DS)=3000H, (SI)=2000H, COUNT=3000H(DS)=3000H, (SI)=2000H, COUNT=3000H, 則則: PA = 35000HPA = 35000H 假設假設(35000H)=1234H, (35000H)=1234H, 那那么么 (AX)=1234H(AX)=1234H* 適于數組、字符串、表格的處理適于數組、字符串、表格的處理8(6) 基址變址尋址方式基址變址尋址方式*指令格式:指令格式: MOV AX, BX DIMOV AX, BX DI MOV AX, BX+DI MOV AX, BX+DI MOV A
7、X, ES:BX SI MOV AX, ES:BX SI* 適于數組、字符串、表格的處理適于數組、字符串、表格的處理* 必須是一個基址寄存器和一個變址寄存器的組合必須是一個基址寄存器和一個變址寄存器的組合 MOV AX, BX BP MOV AX, SI DI 有效地址有效地址 =(BX) (SI)(BP) (DI)+9( 7 ) 相對基址變址尋址方式相對基址變址尋址方式 MOV AX, MASK BX SI 或或 MOV AX, MASK BX+SI 或或 MOV AX, MASK+BX+SI 有效地址有效地址 =(BX) (SI) 8位位(BP) (DI) 16位位+位移量位移量1080
8、x86 新增的尋址方式新增的尋址方式 EA= = (基址寄存器基址寄存器) + (變址寄存器變址寄存器) 比例因子比例因子 + 位移量位移量( 1 ) 比例變址尋址方式比例變址尋址方式 例:例:MOV EAX, COUNT ESI 4 11(2) 基址比例變址尋址方式基址比例變址尋址方式 例:例:MOV ECX, EAX EDI 4 (3) 相對基址比例變址尋址方式相對基址比例變址尋址方式 例:例:MOV EAX, TABLE EBP EDI 4 16 16位和位和3232位尋址的差異位尋址的差異地址成分地址成分 1616位尋址位尋址 3232位尋址位尋址基址寄存器基址寄存器 BXBX、BP
9、BP 任何任何3232位通用寄存器位通用寄存器變址寄存器變址寄存器 SISI、DI DI 除除ESPESP外的任何外的任何3232位通用寄存器位通用寄存器比例因子比例因子 1 11 1、2 2、4 4、8 8 12與轉移地址有關的尋址方式:與轉移地址有關的尋址方式: 段內尋址段內尋址 段內直接尋址段內直接尋址 JMP NEAR PTR NEXT 段內間接尋址段內間接尋址 JMP TABLE BX 段間尋址段間尋址 段間直接尋址段間直接尋址 JMP FAR PTR NEXT 段間間接尋址段間間接尋址 JMP DWORD PTR BX 用來確定轉移指令及轉子指令的轉向地址用來確定轉移指令及轉子指令
10、的轉向地址。13 數據傳送指令數據傳送指令 算術指令算術指令 邏輯指令邏輯指令 串處理指令串處理指令 控制轉移指令控制轉移指令 處理機控制與雜項操作指令處理機控制與雜項操作指令2. 8086的指令系統的指令系統14數據傳送指令數據傳送指令: 通用數據傳送指令通用數據傳送指令 MOV、PUSH、POP、XCHG 累加器專用傳送指令累加器專用傳送指令 IN、OUT、XLAT 地址傳送指令地址傳送指令 LEA、LDS、LES 標志寄存器傳送指令標志寄存器傳送指令 LAHF、SAHF、PUSHF、POPF 類型轉換指令類型轉換指令 CBW、CWD 15傳送指令:傳送指令: MOV DST, SRC執行
11、操作:執行操作: (DST) (SRC)注意注意: * DST、SRC 不能同時為段寄存器不能同時為段寄存器 MOV DS, ES * 立即數不能直接送段寄存器立即數不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即數和不能是立即數和CS* DST、SRC 不能同時為存儲器尋址不能同時為存儲器尋址* 不影響標志位不影響標志位 通用數據傳送指令通用數據傳送指令MOV AX, DSEGMOV DS, AX16 進棧指令:進棧指令: PUSH SRC 執行操作:執行操作: (SP) (SP) 2 ( (SP)+1, (SP) ) (SRC) 出棧指令:出棧指令: POP DST
12、執行操作:執行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2堆棧:堆棧:先進后出先進后出的存儲區,段地址存放在的存儲區,段地址存放在SSSS中,中, SP在任何時候都指向棧頂,進出棧后自動修改在任何時候都指向棧頂,進出棧后自動修改SPSP。 注意注意: * 堆棧操作必須以字為單位。堆棧操作必須以字為單位。 * 不影響標志位不影響標志位 * 不能用立即尋址方式不能用立即尋址方式 PUSH 1234H * DST不能是不能是CS POP CS 17 交換指令:交換指令: XCHG OPR1, OPR2 執行操作:執行操作: (OPR1) (OPR2)注意注意: *
13、 不影響標志位不影響標志位 * 不允許使用段寄存器不允許使用段寄存器 例:例:XCHG BX, BP+SI XCHG AL, BH18 累加器專用傳送指令累加器專用傳送指令(只限使用(只限使用AX或或AL) 輸入指令輸入指令 IN (I/O CPU) 長格式:長格式: IN AL, PORT (字節)(字節) IN AX, PORT (字)(字) 執行操作:執行操作:(AL) ( PORT ) (字節)(字節) (AX) ( PORT+1, PORT )(字)(字) 短格式:短格式: IN AL, DX (字節)(字節) IN AX, DX (字)(字) 執行操作:執行操作:(AL) ( (D
14、X) ) (字節)(字節) (AX) ( (DX)+1, (DX) )(字)(字) 19輸出指令輸出指令 OUT (CPU I/O)長格式:長格式: OUT PORT, AL (字節)(字節) OUT PORT, AX (字)(字)執行操作:執行操作:( PORT ) (AL) (字節)(字節) ( PORT+1, PORT ) (AX)(字)(字)短格式:短格式: OUT DX, AL (字節)(字節) OUT DX, AX (字)(字)執行操作:執行操作:( (DX) ) (AL) (字節)(字節) ( (DX)+1, (DX) ) (AX)(字)(字)20注意注意: * 不影響標志位不影
15、響標志位* 前前256個端口號個端口號00HFFH可直接在指令中指定(長格式)可直接在指令中指定(長格式)* 如果如果端口號端口號 256,端口號端口號 DX(短格式)(短格式)例:例: IN AX, 28H IN AX, 28H MOV DATA_WORD, AX MOV DATA_WORD, AX例:例: MOV DX, 3FCH MOV DX, 3FCH IN AX, DX IN AX, DX例:例: OUT 5, AL OUT 5, AL例:測試某狀態寄存器(端口號例:測試某狀態寄存器(端口號27H27H)的第)的第2 2位是否為位是否為1 1 IN AL, 27H IN AL, 27
16、H TEST AL, 00000100B TEST AL, 00000100B JNZ ERROR JNZ ERROR ;若第2位為1,轉ERROR處理21(BX) 30 H F004031 H F0041 (AL) = 3 32 H F0042 33 H F0043TABLE(DS)=F000H換碼指令:換碼指令:XLAT 或或XLAT OPR執行操作:執行操作:(AL) ( (BX) + (AL) )例:例:MOV BX, OFFSET TABLE ; (BX)=0040H MOV AL, 3 XLAT TABLE 指令執行后指令執行后 (AL)=33H注意注意: * 不影響標志位不影響標
17、志位* 字節表格字節表格(長度不超過長度不超過256) 首地址首地址 (BX)* 需轉換的代碼位移量需轉換的代碼位移量 (AL)22 地址傳送指令地址傳送指令 有效地址送寄存器指令:有效地址送寄存器指令: LEA REG, SRC 執行操作:執行操作: (REG) SRC 指針送寄存器和指針送寄存器和DS指令:指令: LDS REG, SRC 執行操作:執行操作: (REG) (SRC) (DS) (SRC+2) 相繼二字相繼二字 寄存器、寄存器、DS 指針送寄存器和指針送寄存器和ES指令:指令: LES REG, SRC 執行操作:執行操作: (REG) (SRC) (ES) (SRC+2)
18、 相繼二字相繼二字 寄存器、寄存器、ES 23例:例:LEA BX, BX+SI+0F62H LDS SI, 10H LES DI, BX40 H00 H00 H30 H TABLE(DS):1000HMOV BX, TABLE ; (BX)=0040HMOV BX, OFFSET TABLE ; (BX)=1000HLEA BX, TABLE ; (BX)=1000HLDS BX, TABLE ; (BX)=0040H ; (DS)=3000HLES BX, TABLE ; (BX)=0040H ; (ES)=3000H注意注意: * 不影響標志位不影響標志位 * REG 不能是段寄存器不能
19、是段寄存器 * SRC 必須為存儲器尋址方式必須為存儲器尋址方式24 標志寄存器傳送指令標志寄存器傳送指令 標志送標志送AH指令:指令: LAHF 執行操作:執行操作: (AH) (FLAGS的低字節的低字節) AH送標志寄存器指令:送標志寄存器指令: SAHF 執行操作:執行操作: (FLAGS的低字節的低字節) (AH) 標志進棧指令:標志進棧指令: PUSHF 執行操作:執行操作: (SP) (SP) - 2 ( (SP)+1, (SP) ) (FLAGS) 標志出棧標志出棧指令:指令: POPF 執行操作:執行操作: (FLAGS) ( (SP)+1, (SP) ) (SP) (SP)
20、 + 2* 影響標志位影響標志位25 類型轉換指令類型轉換指令 CBW AL AX 執行操作:執行操作: 若若(AL)的最高有效位為的最高有效位為0,則,則(AH)= 00H 若若(AL)的最高有效位為的最高有效位為1,則,則(AH)= FFH CWD AX (DX,AX) 執行操作:若執行操作:若(AX)的最高有效位為的最高有效位為0,則,則(DX)= 0000H 若若(AX)的最高有效位為的最高有效位為1,則,則(DX)= FFFFH 例:例:(AX) = 0BA45H CBW ; (AX)=0045H CWD ; (DX)=0FFFFH (AX)=0BA45H注意注意: * 無操作數指令
21、無操作數指令 * 隱含對隱含對AL 或或AX 進行符號擴展進行符號擴展 * 不影響條件標志位不影響條件標志位26算術指令:算術指令: 加法指令加法指令 ADD、ADC、INC 減法指令減法指令 SUB、SBB、DEC、NEG、CMP 乘法指令乘法指令 MUL、IMUL 除法指令除法指令 DIV、IDIV 十進制調整指令十進制調整指令 DAA、DAS、 AAA、AAS、AAM、AAD27 加法指令加法指令 加法指令:加法指令: ADD DST, SRC 執行操作:執行操作: (DST) (SRC) + (DST) 帶進位加法指令:帶進位加法指令: ADC DST, SRC 執行操作:執行操作:
22、(DST) (SRC) + (DST) + CF 加加1指令:指令: INC OPR 執行操作:執行操作: (OPR) (OPR) + 1注意注意: * 除除INC指令不影響指令不影響CF標志外,均對條件標志位有影響。標志外,均對條件標志位有影響。28加法指令對加法指令對條件標志位條件標志位的影響的影響CF 位表示位表示 無符號數無符號數 相加的溢出。相加的溢出。OF 位表示位表示 帶符號數帶符號數 相加的溢出。相加的溢出。1 結果為負結果為負0 否則否則SF=1 結果為結果為00 否則否則ZF=1 和的最高有效位和的最高有效位 有有 向高位的進位向高位的進位0 否則否則CF=1 兩個操作數符
23、號相同,而結果符號與之相反兩個操作數符號相同,而結果符號與之相反0 否則否則OF=29舉例舉例: n=8 bit 帶符號數帶符號數(-128127) , 無符號數無符號數(0255) 0 0 0 0 0 1 0 0 + 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1帶:帶:(+4)+(+11)=+15 OF=0無:無:4+11=15 CF=0帶符號數和無符號數都不溢出帶符號數和無符號數都不溢出 0 0 0 0 1 0 0 1 + 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 帶帶: (+9)+(+124)=-123 OF=1 無無: 9+124=133 CF=
24、0帶符號數溢出帶符號數溢出無符號數溢出無符號數溢出 0 0 0 0 0 1 1 1 + 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0帶:帶:(+7)+(-5)=+2 OF=0無:無:7+251=2 CF=1帶符號數和無符號數都溢出帶符號數和無符號數都溢出 1 0 0 0 0 1 1 1 + 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0帶:帶:(-121)+(-11)=+124 OF=1無:無:135+245=124 CF=130 減法指令減法指令減法指令:減法指令: SUB DST, SRC 執行操作:執行操作: (DST) (DST) - (SRC
25、)帶借位減法指令:帶借位減法指令: SBB DST, SRC 執行操作:執行操作: (DST) (DST) - (SRC) - CF減減1指令:指令: DEC OPR 執行操作:執行操作: (OPR) (OPR) - 1求補指令:求補指令: NEG OPR 執行操作:執行操作: (OPR) - (OPR)比較指令:比較指令: CMP OPR1, OPR2 執行操作:執行操作: (OPR1) - (OPR2)注意注意: * 除除DEC指令不影響指令不影響 CF標志外,均對條標志外,均對條 件標志位有影響。件標志位有影響。31減法指令對條件標志位(減法指令對條件標志位(CF/OF/ZF/SF)的影
26、響:)的影響:CF 位表示位表示 無符號數無符號數 減法的溢出。減法的溢出。OF 位表示位表示 帶符號數帶符號數 減法的溢出。減法的溢出。1 被減數的最高有效位被減數的最高有效位 有有 向高位的借位向高位的借位0 否則否則CF=1 兩個操作數符號相反,而結果的符號與減數相同兩個操作數符號相反,而結果的符號與減數相同0 否則否則OF=1 減法轉換為加法運算時減法轉換為加法運算時 無無 進位進位0 否則否則CF=或或32例:例:x、y、z 均為雙精度數,分別存放在地址為均為雙精度數,分別存放在地址為X, X+2; Y, Y+2;Z, Z+2的存儲單元中,用指令序列實現的存儲單元中,用指令序列實現
27、w x + y + 24 - z ,并用,并用W, W+2單元存放單元存放wMOV AX, XMOV AX, XMOV DX, X+2MOV DX, X+2ADD AX, YADD AX, YADC DX, Y+2 ; x+yADC DX, Y+2 ; x+yADD AX, 24ADD AX, 24ADC DX, 0 ; x+y+24ADC DX, 0 ; x+y+24SUB AX, ZSUB AX, ZSBB DX, Z+2 ; x+y+24-zSBB DX, Z+2 ; x+y+24-zMOV W, AXMOV W, AXMOV W+2, DX ; MOV W+2, DX ; 結果存入結果
28、存入W, W+2W, W+2單元單元33 乘法指令乘法指令 無符號數乘法指令:無符號數乘法指令: MUL SRC 帶符號數乘法指令:帶符號數乘法指令: IMUL SRC 執行操作:執行操作: 字節操作數字節操作數 (AX) (AL) * (SRC) 字操作數字操作數 (DX, AX) (AX) * (SRC)注意注意: * AL (AX) 為隱含的乘數寄存器。為隱含的乘數寄存器。* AX (DX,AX) 為隱含的乘積寄存器。為隱含的乘積寄存器。* SRC不能為立即數。不能為立即數。* 除除CF和和OF外,對條件標志位無定義。外,對條件標志位無定義。34乘法指令對乘法指令對 CF/OF 的影響:
29、的影響:例:例:(AX) = 16A5H,(BX) = 0611H (1) IMUL BL ; (AX) (AL) * (BL) ; A5*11 5B*11=060B F9F5 ; (AX) = 0F9F5H CF=OF=1 (2) MUL BX ; (DX, AX) (AX) * (BX) ; 16A5*0611=0089 5EF5 ; (DX)=0089H (AX)=5EF5H CF=OF=100 乘積的高一半為零乘積的高一半為零11 否則否則MUL指令指令: CF,OF =00 乘積的高一半是低一半的符號擴展乘積的高一半是低一半的符號擴展11 否則否則 IMUL指令指令: CF,OF =
30、35 除法指令除法指令 無符號數除法指令:無符號數除法指令: DIV SRC 帶符號數除法指令:帶符號數除法指令: IDIV SRC 執行操作:執行操作: 字節操作字節操作 (AL) (AX) / (SRC) 的商的商 (AH) (AX) / (SRC) 的余數的余數 字操作字操作 (AX) (DX, AX) / (SRC) 的商的商 (DX) (DX, AX) / (SRC) 的余數的余數注意注意: * AX (DX,AX) 為隱含的被除數寄存器。為隱含的被除數寄存器。 * AL (AX) 為隱含的商寄存器。為隱含的商寄存器。 * AH (DX) 為隱含的余數寄存器。為隱含的余數寄存器。 *
31、 SRC不能為立即數。不能為立即數。 * 對所有條件標志位均無定義。對所有條件標志位均無定義。如何判別結果有效?如何判別結果有效?36例:例:x , y , z , v 均為均為16位帶符號數,計算位帶符號數,計算 ( v - ( x*y + z 540 ) ) / xMOV AX, X MOV AX, X IMUL Y ; xIMUL Y ; x* *y y (DX,AXDX,AX)MOV CX, AXMOV CX, AXMOV BX, DXMOV BX, DXMOV AX, ZMOV AX, ZCWD CWD ;Z Z (DXDX,AXAX)ADD CX, AXADD CX, AXADC
32、BX, DX ; xADC BX, DX ; x* *y+z y+z (BXBX,CXCX)SUB CX, 540 SUB CX, 540 SBB BX, 0 ; xSBB BX, 0 ; x* *y+z-540y+z-540MOV AX, VMOV AX, VCWD CWD ;V V (DXDX,AXAX)SUB AX, CXSUB AX, CXSBB DX, BX ; v-(xSBB DX, BX ; v-(x* *y+z-540)y+z-540)IDIV X ; (v-(xIDIV X ; (v-(x* *y+z-540)/xy+z-540)/x(AXAX) 余數余數 (DXDX)37
33、十進制調整指令十進制調整指令BCD碼:用二進制編碼的十進制數,碼:用二進制編碼的十進制數,又稱又稱二二-十進制數十進制數壓縮的壓縮的BCD碼:用碼:用 4 位二進制數表示位二進制數表示 1 位十進制數位十進制數 例:例:( 59 )10 ( 0101 1001 )BCD非壓縮的非壓縮的BCD碼:用碼:用 8 位二進制數表示位二進制數表示 1 位十進制數位十進制數 例:例:( 59 )10 ( 0000 0101 0000 1001 )BCD數字的數字的 ASCII 碼是一種碼是一種 非壓縮的非壓縮的 BCD 碼碼 DIGIT ASCII BCD030H0011 0000131H0011 000
34、1232H0011 0010 939H0011 100138例:寫出例:寫出( 3590 )10的壓縮的壓縮 BCD 碼和非壓縮碼和非壓縮BCD碼,并分碼,并分 別別 把它們存入數據區把它們存入數據區 PAKED 和和 UNPAK壓縮壓縮BCD:( 3590 )10( 0011 0101 1001 0000 )BCD非壓縮非壓縮BCD: ( 3590 )10( 00000011 00000101 00001001 00000000 )BCD PAKED 90H 35H UNPAK 00H 09H 05H 03H39(1)壓縮的)壓縮的BCD碼調整指令碼調整指令 DAA 加法的十進制調整指令加法
35、的十進制調整指令 DAS 減法的十進制調整指令減法的十進制調整指令 (2)非壓縮的)非壓縮的BCD碼調整指令碼調整指令 AAA 加法的加法的ASCII碼調整指令碼調整指令 AAS 減法的減法的ASCII碼調整指令碼調整指令 AAM 乘法的乘法的ASCII碼調整指令碼調整指令 AAD 除法的除法的ASCII碼調整指令碼調整指令40邏輯指令:邏輯指令: 邏輯運算指令邏輯運算指令 AND、OR、NOT、XOR、TEST 移位指令移位指令 SHL、SHR 、 SAL 、SAR、 ROL、ROR、RCL、RCR41邏輯非指令:邏輯非指令:NOT OPR * OPR不能為立即數不能為立即數執行操作:執行操
36、作: (OPR) (OPR) * 不影響標志位不影響標志位 邏輯與指令:邏輯與指令:AND DST, SRC執行操作:執行操作: (DST) (DST) (SRC)邏輯或指令:邏輯或指令:OR DST, SRC執行操作:執行操作: (DST) (DST) (SRC)異或指令:異或指令: XOR DST, SRC執行操作:執行操作: (DST) (DST) (SRC)測試指令:測試指令: TEST OPR1, OPR2執行操作:執行操作: (OPR1) (OPR2)CF OF SF ZF PF AF 0 0 * * * 無定義無定義 根據運算結果設置根據運算結果設置 邏輯運算指令邏輯運算指令42
37、例:屏蔽例:屏蔽AL的第的第0、1兩位兩位 AND AL, 0FCH例:置例:置AL的第的第5位為位為1 OR AL, 20H 例:使例:使AL的第的第0、1位變反位變反 XOR AL, 3例:測試某些位是例:測試某些位是0是是1 TEST AL, 1 JZ EVEN * * * * * * * * OR 0 0 1 0 0 0 0 0 * * 1 * * * * * * * * * * * 0 1 XOR 0 0 0 0 0 0 1 1 * * * * * * 1 0 * * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0 * * * * *
38、* * * AND 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 *43邏輯左移邏輯左移 SHL OPR, CNT邏輯右移邏輯右移 SHR OPR, CNT算術左移算術左移 SAL OPR, CNT(同邏輯左移)(同邏輯左移)算術右移算術右移 SAR OPR, CNT CF 0 0 CFCF 移位指令移位指令44循環左移循環左移 ROL OPR, CNT循環右移循環右移 ROR OPR, CNT帶進位循環左移帶進位循環左移 RCL OPR, CNT帶進位循環右移帶進位循環右移 RCR OPR, CNTCF CFCFCF45注意注意: * OPR可用除立即數以外的任何尋址方式可用除
39、立即數以外的任何尋址方式 * CNT=1,SHL OPR, 1 CNT1,MOV CL, CNT SHL OPR, CL ; 以以SHL為例為例* 條件標志位:條件標志位: CF = 移入的數值移入的數值 1 CNT=1時,最高有效位的值發生變化時,最高有效位的值發生變化 0 CNT=1時,最高有效位的值不變時,最高有效位的值不變 移位指令:移位指令: SF、ZF、PF 根據移位結果設置,根據移位結果設置,AF無定義無定義 循環移位指令:循環移位指令: 不影響不影響 SF、ZF、PF、AFOF =46串處理指令:串處理指令: 設置方向標志指令設置方向標志指令 CLD、STD 串處理指令串處理指
40、令 串重復前綴串重復前綴 MOVSB / MOVSW REP STOSB / STOSW REPE / REPZ LODSB / LODSW REPNE / REPNZ CMPSB / CMPSW SCASB / SCASW 47與與 REP 配合工作的配合工作的 MOVS / STOS / LODS REP 執行操作:執行操作:(1) 如如 (CX)=0 則退出則退出 REP,否則轉,否則轉(2)(2) (CX) (CX) -1(3) 執行執行 MOVS / STOS / LODS(4) 重復重復 (1) (3)48MOVS 串傳送指令:串傳送指令:MOVS DST, SRCMOVSB (字
41、節)(字節)MOVSW (字)(字)例:例:MOVS ES: BYTE PTR DI, DS: SI 執行操作:執行操作: (1) (DI) (SI) (2) 字節操作:字節操作:(SI)(SI)1, (DI)(DI)1 字操作:字操作: (SI)(SI)2, (DI)(DI)2 方向標志方向標志 DF=0 時用時用 + ,DF=1 時用時用 - 。 REP MOVS:將數據段中的整串數據傳送到附加段中。:將數據段中的整串數據傳送到附加段中。 源串(數據段)源串(數據段) 目的串(附加段)目的串(附加段)49執行執行 REP MOVS 之前,應先做好:之前,應先做好:(1) 源串首地址(末地址
42、)源串首地址(末地址) SI(2) 目的串首地址(末地址)目的串首地址(末地址) DI(3) 串長度串長度 CX(4) 建立方向標志建立方向標志 ( CLD 使使 DF=0,STD 使使 DF=1 ) 50STOS 存入串指令:存入串指令:STOS DSTSTOSB (字節)(字節)STOSW (字)(字)執行操作:執行操作: 字節操作:字節操作:(DI)(AL), (DI)(DI)1 字操作:字操作:(DI)(AX), (DI)(DI)2例:把例:把 附加段附加段 中的中的 10 個字節緩沖區置為個字節緩沖區置為 20Hlea di, mess2lea di, mess2mov al, 20
43、Hmov al, 20Hmov cx, 10mov cx, 10cldcldrep stosbrep stosblea di, mess2lea di, mess2mov ax, 2020Hmov ax, 2020Hmov cx, 5mov cx, 5cldcldrep stoswrep stosw51LODS 從串取指令:從串取指令: LODS SRC LODSB (字節)(字節) LODSW (字)(字)執行操作:執行操作: 字節操作:字節操作:(AL)(SI), (SI)(SI)1 字操作:字操作:(AX)(SI), (SI)(SI)2注意注意: * LODS 指令一般不與指令一般不與
44、REP 聯用聯用* 源串一般在數據段中(允許使用段跨越前綴來修改),源串一般在數據段中(允許使用段跨越前綴來修改), 目的串必須在附加段中目的串必須在附加段中* 不影響條件標志位不影響條件標志位52與與 REPE / REPZ(REPNE / REPNZ)配合工作的)配合工作的 CMPS 和和 SCAS REPE / REPZ REPNE / REPNZ 執行操作:執行操作: (1) 如如 (CX)=0 或或 ZF=0 (ZF=1) 則退出串操作,則退出串操作, 否則轉否則轉(2) (2) (CX)(CX) -1 (3) 執行執行 CMPS / SCAS (4) 重復重復 (1) (3)53C
45、MPS 串比較指令:串比較指令: CMPS SRC, DST CMPSB (字節)(字節) CMPSW (字)(字) 執行操作:執行操作: (1) (SI) - (DI) 根據比較結果置條件標志位:相等根據比較結果置條件標志位:相等 ZF=1 不等不等 ZF=0 (2) 字節操作:字節操作:(SI)(SI)1, (DI)(DI)1 字操作:字操作: (SI)(SI)2, (DI)(DI)254SCAS 串掃描指令:串掃描指令: SCAS DST SCASB (字節)(字節) SCASW (字)(字)執行操作:執行操作: 字節操作:字節操作:(AL) - (DI), (DI)(DI)1 字操作:
46、字操作: (AX) - (DI), (DI)(DI)255 控制轉移指令:控制轉移指令: 無條件轉移指令無條件轉移指令 JMP 條件轉移指令條件轉移指令JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、JLE / JNLE、 JCXZ 循環指令循環指令 LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE 子程序調用和返回指令子程序調用和返回指令 CALL、RET 中斷與中斷返回指令中斷與中斷返回指令 INT、INTO、IRET56無條件轉移指令:無條件轉移指令:段內
47、直接短轉移:段內直接短轉移:JMP SHORT OPR 執行操作:執行操作:(IP) (IP) + 8位位移量位位移量段內直接近轉移:段內直接近轉移:JMP NEAR PTR OPR 執行操作:執行操作:(IP) (IP) + 16位位移量位位移量段內間接轉移:段內間接轉移: JMP WORD PTR OPR 執行操作:執行操作: (IP) (EA)57段間直接遠轉移:段間直接遠轉移:JMP FAR PTR OPR 執行操作:執行操作:(IP) OPR 的段內偏移地址的段內偏移地址 (CS) OPR 所在段的段地址所在段的段地址段間間接轉移:段間間接轉移: JMP DWORD PTR OPR
48、執行操作:執行操作: (IP) (EA) (CS) (EA+2)58條件轉移指令:條件轉移指令:注意:只能使用段內直接尋址的注意:只能使用段內直接尋址的8 位位移量位位移量(1) 根據單個條件標志的設置情況轉移根據單個條件標志的設置情況轉移 格式格式 測試條件測試條件JZ(JE) OPR ZF = 1JNZ(JNE) OPR ZF = 0JS OPR SF = 1JNS OPR SF = 0JO OPR OF = 1JNO OPR OF = 0JP OPR PF = 1JNP OPR PF = 0JC OPR CF = 1JNC OPR CF = 059(2) 比較兩個無符號數,并根據比較結果
49、轉移比較兩個無符號數,并根據比較結果轉移* 格式格式 測試條件測試條件 JB (JNAE,JC) OPR CF = 1 JNB (JAE,JNC) OPR CF = 0 JBE (JNA) OPR CFZF = 1 JNBE (JA) OPR CFZF = 0* 適用于地址或雙精度數低位字的比較適用于地址或雙精度數低位字的比較60(3) 比較兩個帶符號數,并根據比較結果轉移比較兩個帶符號數,并根據比較結果轉移* 格式格式 測試條件測試條件 JL (JNGE) OPR SF OF = 1 JNL (JGE) OPR SF OF = 0 JLE (JNG) OPR (SF OF)ZF = 1 JN
50、LE (JG) OPR (SF OF)ZF = 0* 適用于帶符號數的比較適用于帶符號數的比較(4) 測試測試 CX 的值為的值為 0 則轉移則轉移 格式格式 測試條件測試條件 JCXZ OPR (CX)=061循環指令:循環指令:注意:注意:* CX 中存放循環次數中存放循環次數* 只能使用段內直接尋址的只能使用段內直接尋址的8 位位移量位位移量LOOPLOOPZ / LOOPELOOPNZ / LOOPNE 執行步驟:執行步驟: (1) (CX) (CX) - 1 (2) 檢查是否滿足測試條件,如滿足則檢查是否滿足測試條件,如滿足則 (IP) (IP) + 8位位移量,實行循環;位位移量,
51、實行循環; 不滿足則不滿足則 IP 不變,退出循環。不變,退出循環。62循環指令:循環指令:LOOP OPR測試條件:測試條件:(CX) 0為零或相等時循環指令:為零或相等時循環指令:LOOPZ(LOOPE) OPR測試條件:測試條件:ZF=1 且且 (CX) 0不為零或不相等時循環指令:不為零或不相等時循環指令:LOOPNZ(LOOPNE) OPR測試條件:測試條件:ZF=0 且且 (CX) 0LOOP AGAIN DEC CX JNZ AGAIN63子程序調用和返回指令:子程序調用和返回指令:code1 segmentcode1 segmentmain proc main proc far
52、far callcall far ptr subp far ptr subp ret retmain endpmain endpcode1 endscode1 endscode2 segmentcode2 segmentsubp proc subp proc farfar retretsubp endpsubp endpcode2 endscode2 ends 段間調用和返回段間調用和返回code segmentcode segmentmain proc main proc farfar call call subp subp ret retmain endpmain endpsubp pro
53、c subp proc nearnear retretsubp endpsubp endpcode endscode ends 段內調用和返回段內調用和返回64 CALL 調用指令調用指令段內直接近調用:段內直接近調用:CALL DST執行操作:執行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (IP) + 16位位移量位位移量段內間接近調用:段內間接近調用:CALL DST執行操作:執行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (EA)65段間直接遠調用:段間直接遠調用:CALL DST執行操作:執行操作
54、: (SP) (SP) - 2 ( (SP)+1,(SP) ) (CS) (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) 偏移地址偏移地址 (CS) 段地址段地址段間間接遠調用:段間間接遠調用:CALL DST執行操作:執行操作: (SP) (SP) - 2 ( (SP)+1,(SP) ) (CS) (SP) (SP) - 2 ( (SP)+1,(SP) ) (IP) (IP) (EA) (CS) (EA+2)66RET 返回指令返回指令段內近返回:段內近返回:RET執行操作:執行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2段內帶
55、立即數近返回:段內帶立即數近返回:RET EXP段間遠返回:段間遠返回:RET執行操作:執行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2 (CS) ( (SP)+1,(SP) ) (SP) (SP) + 2段間帶立即數遠返回:段間帶立即數遠返回:RET EXP67中斷指令:中斷指令: 類型類型0的的(IP) 類型類型0的的(CS) 類型類型1的的(IP) 類型類型1的的(CS) 類型類型N的的(IP) 類型類型N的的(CS) 類型類型255的的(IP) 類型類型255的的(CS)0000000004 4*N003FC中斷向量表中斷向量表中斷向量:中斷向量:中斷例行程序的入口地址,中斷例行程序的入口地址,存放于中斷向量區。存放于中斷向量區。 00000H003FFHA0000HC0000HF0000H640K (RAM)640K (RAM)128K (RAM)128K (RAM)192K (ROM)192K (ROM) 64K (ROM) 64K (ROM)68中斷指令:中斷指令: INT TYPE 或或 INT執行操作:執行操作: (SP) (SP) - 2 ( (SP)+1,(SP) )
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省佛山市順德區容桂中學2023-2024學年中考數學全真模擬試卷含解析
- 2025年公司級安全培訓考試試題及答案完美版
- 2025公司項目部安全培訓考試試題帶答案(研優卷)
- 賓館安全管理課件
- 2025項目管理人員安全培訓考試試題(完整)
- 2024-2025新入職工入職安全培訓考試試題答案新
- 2025年承包商入廠安全培訓考試試題及一套參考答案
- 2025年員工安全培訓考試試題附答案【輕巧奪冠】
- 2025年工廠職工安全培訓考試試題及參考答案(典型題)
- 2025年安全管理員安全培訓考試試題答案4A
- 羊水過少護理查房
- 萊鋼集團公司績效考核與薪酬系統優化設計研究的中期報告
- 借款分期還款合同
- 新型活頁式、工作手冊式教材編寫理論依據和編寫體例
- 微信支付交易明細證明賬單文件修改
- 氣管切開患者的管理和康復治療指南
- 辦公用品、耗材采購服務投標方案
- GB/T 17640-2023土工合成材料長絲機織土工布
- 混凝土攪拌站安全培訓資料(正式)課件
- 園區安全生產管理協議書范本
- 國際工程英語(常用)
評論
0/150
提交評論