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

下載本文檔

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

文檔簡介

1、AL操作碼字節(jié)80H程序存儲器指令碼操作碼字節(jié)12H程序存儲器AL指令碼AH34H12H34H80H80H12H34HMOV AL, 80HMOV AX, 1234H89C1程序存儲器AXCX指令碼(包括操作數(shù))DS:20000H20000H21064H21064HAL操作碼641045代碼段數(shù)據(jù)段4545+ 1064H50MAL505040MAX 寄存器間接尋址 MOV AX, SI MOV BX, AL30000HDS:30000HSI: 2000H+32000H32000H4050504030000HDS:30000HBX: 1000H+31000H31000H5022064H22064

2、H641045代碼段數(shù)據(jù)段操作碼CL4545+ 1064H21000HBX: 1000HDS:20000H20000HEA=(BX)(BP)(DI)(SI)+8位 disp16位 dispMOV CL, BX+1064H56HMAHBP: 2000H+43200H43200HSI: 1200H56H56H 基址加變址相對尋址MOV BX+DI+1234H, AHEA=(BX)(BP)+(DI)(SI)+8位 disp16位 disp3412代碼段數(shù)據(jù)段操作碼45AH40000HDS:40000HBX: 0200H+DI: 0010H1234H454541444H41444H4)I/O端口尋址方

3、式 直接端口尋址方式IN AL, 21H21HAL操作碼21H代碼段8001H02HI/O接口8080 間接端口尋址方式OUT DX, AL0001H0002HI/O接口80AL1234DX1234H8080指出下列指令中,源操作數(shù)及目的操作數(shù)的尋指出下列指令中,源操作數(shù)及目的操作數(shù)的尋址方式址方式SUB BX,BP+35 MOV AX,2030H SCASB IN AL,40H MOV DI+BX,AX ADD AX,50HDI MOV AL,1300H MUL BL 已知(已知(DS)= 1000H,(,(SI)= 0200H,(,(BX)= 0100H,(10100H)= 11H,(,(

4、10101H)= 22H,(,(10600H)= 33H,(10601H)= 44H,(,(10300H)= 55H,(,(10301H)= 66H,(10302H)= 77H,(,(10303H)= 88H,試分析下列各條指令執(zhí)行完后試分析下列各條指令執(zhí)行完后AX寄存器的內(nèi)容。寄存器的內(nèi)容。MOV AX,2500H (AX)= MOV AX,300H (AX)=MOV AX,BX (AX)=MOV AX,500HBX (AX)=MOV AX,BXSI (AX)=MOV AX,BX+SI+2 (AX)=設(shè)(設(shè)(DS)= 1000H,(,(ES)= 2000H,(,(SS)= 3000H,(SI

5、)= 0080H,(,(BX)= 02D0H,(,(BP)= 0060H,試指出下列指令的源操作數(shù)字段是什么尋址方式?它的物理地試指出下列指令的源操作數(shù)字段是什么尋址方式?它的物理地址是多少?址是多少?MOV AX,0CBHMOV AX,100HMOV AX,BX MOV AX,BP MOV AX,50HBPMOV AX,BXSI+當(dāng)前IPEA有效轉(zhuǎn)移地址opcode位移量PM(CS) 10H + EA位移量opcodePM段地址偏移量IPCSopcodemodregr/mdispdata操作碼部分操作數(shù)部分一字節(jié)指令二字節(jié)指令三字節(jié)指令四字節(jié)指令五字節(jié)指令WDOPCODE7 6 5 4 3

6、2 1 0017 2目的操作數(shù)源操作數(shù)源操作數(shù)目的操作數(shù)D=1D=0000001010011100101110111regW=0 W=1寄存器尋址BX+SI+disp8BX+ DI+disp8BP+SI+disp8BP+DI+disp8SI+disp8DI+disp8BP+disp8BX+disp8BX+SI+disp16BX+ DI+disp16BP+SI+disp16BP+DI+disp16SI+disp16DI+disp16BP+disp16BX+disp16BX+SIBX+ DIBP+SIBP+DISIDIdisp16BX000001010011100101110111W=0W=1寄存

7、器尋址mod=11modr / m存儲器尋址有效地址的計算公式mod=00mod=01mod=10雙操作數(shù)指令中各字段定義OPCODE D W modr/mregdisp8100010010010010 011111010000000DWmodr/mregDisp-L000000 1 10010011010001000Disp-H000010004.3.1數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送指令的主要功能是傳送數(shù)據(jù)、地址和標(biāo)志??煞譃橥ㄓ脭?shù)據(jù)傳送指令、輸入輸出指令、地址傳送指令和標(biāo)志傳送指令。 1.通用數(shù)據(jù)傳送指令 通用數(shù)據(jù)傳送指令可完成字節(jié)或字?jǐn)?shù)據(jù)的傳送。它可分為數(shù)據(jù)傳送指令、堆棧操作指令、數(shù)據(jù)交換指令

8、和字節(jié)轉(zhuǎn)換指令。 (1)數(shù)據(jù)傳送指令 指令格式:MOV dst,src ;(dst)(src)src表示源操作數(shù)(字/字節(jié)) 立即數(shù)操作數(shù) 寄存器操作數(shù)(包括段寄存器) 存儲器操作數(shù)dst表示目的操作數(shù)(字/字節(jié)) 寄存器操作數(shù)(不包括IP,CS段寄存器) 存儲器操作數(shù)段寄存器CS DS SS ES存儲器通用存儲器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DIAL BL CL DLAL BL CL DLAH BH CH DHAH BH CH DHMOV指令數(shù)據(jù)傳送方向16位8/16位8/16位16位8/16位 指令功能:將源操作數(shù)傳送(復(fù)制)到目的操作

9、數(shù)。 傳送方向:如下圖所示。 立即數(shù)使用使用MOVMOV指令時,應(yīng)注意(一)指令時,應(yīng)注意(一)源操作數(shù)和目的操作數(shù)類型必須匹配,即必須同為字節(jié)類型或字類型。以下哪些是錯誤的?MOV AL,BLMOV SI,2C9BHMOV AX,BLMOV AL,3824H使用使用MOVMOV指令時,應(yīng)注意(二)指令時,應(yīng)注意(二)通用寄存器與存儲單元之間的數(shù)據(jù)傳送時,傳送數(shù)據(jù)類型由通用寄存器決定。例如:MOV 1000H,AL 只送到1000H單元MOV 1000H,AX 送到1000H、1001H單元MOV BX,2000H 取2000H、2001H單元MOV BH,2000H 只取2000H單元使用使

10、用MOVMOV指令時,應(yīng)注意(三指令時,應(yīng)注意(三 )目的操作數(shù)不能為寄存器CS、IP和立即數(shù)。目的操作數(shù)和源操作數(shù)不能同時為存儲器尋址,即MOV指令不允許在兩個存儲器之間傳送數(shù)據(jù),可改為用通用寄存器作橋梁。例如:MOV AR1,AR2 (如何修改?)使用使用MOVMOV指令時,應(yīng)注意(四)指令時,應(yīng)注意(四)目的操作數(shù)和源操作數(shù)不能同時為段寄存器,可改為用通用寄存器作橋梁。例如:MOV ES,DS (如何修改?)不能將一個立即數(shù)直接送到段寄存器中,可改為用通用寄存器作橋梁。例如:MOV ES,1234H (如何修改?)使用使用MOVMOV指令時,應(yīng)注意(五)指令時,應(yīng)注意(五)立即數(shù)傳送到存

11、儲單元時,當(dāng)存儲單元的類型不確定時,必須用byte ptr 或 word ptr 屬性操作符來指定存儲單元的類型。例如:mov byte ptr 2000h,12hmov word ptr 2000h,1234hmov 0010h,10 ? src表示源操作數(shù)(字) 寄存器操作數(shù)(包括段寄存器) 存儲器操作數(shù) 注意:堆棧指令的操作數(shù)只能是字操作數(shù)(即16位操作數(shù)),且不能是立即數(shù)。 進(jìn)棧操作(PUSH):先移后進(jìn) 出棧操作( POP):先出后移 彈出堆棧指令 指令格式及操作: POP dst ;(dst)(SP)+1:(SP), ;(SP)(SP)+2dst表示目的操作數(shù)(字) 寄存器操作數(shù)(

12、不包括IP,CS段寄存器) 存儲器操作數(shù)例如:例如: XCHG AX,BX 執(zhí)行前:執(zhí)行前:(AX)=1 ,(BX)=0FFFFH 執(zhí)行后:執(zhí)行后:(AX)=0FFFFH,(BX)=1。06H5BH77H7CH3FH71H0AHAL77H61000H61001H61002H6100AH6100BH6100FH60000HDS:60000HBX: 1000HAX: 000AH+6100AHHex_table+0Hex_table+1Hex_table+2Hex_table+AHex_table+BHex_table+F段碼表EA6100AH77H段碼表Hex_table=1000H數(shù)字段碼數(shù)字段

13、碼03FH967H106HA77H25BHB7CH34FHC39H466HD5EH56DHE79H67DHF71H707H87FH七段數(shù)碼管顯示字形段碼表:七段數(shù)碼管顯示字形段碼表:34H12H00H40H2130H2132HDMDIDS1234H4000H1234H4000H4.3.2 算術(shù)運算類指令數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)范圍數(shù)據(jù)范圍運算運算可作累加器使用的寄存器或存儲器可作累加器使用的寄存器或存儲器二二進(jìn)進(jìn)制制8位無符號位無符號0255加減加減所有的通用寄存器或存儲器所有的通用寄存器或存儲器乘除乘除AX寄存器寄存器16位無符號位無符號065535加減加減所有的通用寄存器或存儲器所有的通用寄存

14、器或存儲器乘除乘除AX、DX寄存器寄存器8位帶符號位帶符號128127加減加減所有的通用寄存器或存儲器所有的通用寄存器或存儲器乘除乘除AX寄存器寄存器16位帶符號位帶符號32768+32767加減加減所有的通用寄存器或存儲器所有的通用寄存器或存儲器乘除乘除AX、DX寄存器寄存器十十進(jìn)進(jìn)制制壓縮型壓縮型BCD099加減加減AX寄存器寄存器非壓縮型非壓縮型BCD09加減加減AX寄存器寄存器乘除乘除AX寄存器寄存器 2.2. 算術(shù)運算指令對標(biāo)志的影響算術(shù)運算指令對標(biāo)志的影響 8086/8088的算術(shù)運算指令將運算結(jié)果的某的算術(shù)運算指令將運算結(jié)果的某些特性傳送到些特性傳送到6個標(biāo)志上去,這些標(biāo)志中的絕

15、大個標(biāo)志上去,這些標(biāo)志中的絕大多數(shù)可由跟在算術(shù)運算指令后的條件轉(zhuǎn)移指令進(jìn)多數(shù)可由跟在算術(shù)運算指令后的條件轉(zhuǎn)移指令進(jìn)行測試,以改變程序的流程。因此,掌握指令結(jié)行測試,以改變程序的流程。因此,掌握指令結(jié)果對標(biāo)志的影響對編程有著重要的作用。關(guān)于果對標(biāo)志的影響對編程有著重要的作用。關(guān)于6個標(biāo)志的含義已在第個標(biāo)志的含義已在第3章闡述了,這里不在重復(fù)章闡述了,這里不在重復(fù)。 算術(shù)運算類指令共有算術(shù)運算類指令共有20條,包括加、減、乘條,包括加、減、乘、除運算、符號擴(kuò)展和十進(jìn)制調(diào)整指令,除符號、除運算、符號擴(kuò)展和十進(jìn)制調(diào)整指令,除符號擴(kuò)展指令(擴(kuò)展指令(CBW和和CWD)外,其余指令都影響)外,其余指令都影

16、響標(biāo)志。標(biāo)志。指令格式指令格式操作功能操作功能標(biāo)志位影響標(biāo)志位影響O S Z A P CADD dst, src(dst) (dst)+(src) ADC dst, src(dst) (dst)+(src)+(CF) INC dst(dst) (dst)+1 AAAASCIIASCII碼調(diào)整指令碼調(diào)整指令 DAA壓縮型壓縮型BCDBCD調(diào)整指令調(diào)整指令 加法指令加法指令A(yù)DD 格式:格式:ADD OPRD1,OPRD2功能:功能:OPRD1 OPRD1 + OPRD2OPRD1為任一通用寄存器或存儲器操作數(shù),可以是任意一個為任一通用寄存器或存儲器操作數(shù),可以是任意一個通用寄存器,而且還可以是任

17、意一個存儲器操作數(shù)。這通用寄存器,而且還可以是任意一個存儲器操作數(shù)。這給程序的編寫帶來了很大的方便。給程序的編寫帶來了很大的方便。OPRD2為立即數(shù),也為立即數(shù),也可以是任意一個通用寄存器或存儲器操作數(shù)。立即數(shù)只可以是任意一個通用寄存器或存儲器操作數(shù)。立即數(shù)只能用于源操作數(shù)。能用于源操作數(shù)。加法舉例加法舉例設(shè)(設(shè)(AL)=0E3h,(,(BX)=5678H, 分析下句是分析下句是否正確?否正確?Add AL, 12Hadd AX, BXAdd AL, 1234H Add AL, 0A2H 答案是多少?答案是多少?Add 34H, 12H帶進(jìn)位加法指令帶進(jìn)位加法指令A(yù)DC 指令格式:指令格式:A

18、DC OPRD1,OPRD2OPRD1 OPRD1 + OPRD2 + CF其中其中OPRD1、OPRD2同指令同指令A(yù)DD中的含義。中的含義。ADCADC舉例舉例設(shè)(設(shè)(AL)=0E3h,(,(BL)=34HADD AL, 12HADC BL, 05H設(shè)(設(shè)(AL)=0E3h,(,(BL)=34HADD AL, 32HADC BL, 05H 加運算指令運用舉例加運算指令運用舉例: 兩個兩個32位數(shù)相加,位數(shù)相加,DN1+DN2DSUM DN1 DW 4275H,3412H DN2 DW 12A5H,2F65H DSUM DW 0,0 MOV AX,DN1 ADD AX,DN2 MOV DSU

19、M,AX; 兩位低字和兩位低字和 DSUM MOV AX,DN1+2 ADC AX,DN2+2 MOV DSUM+2,AX ; 兩位高字和再加進(jìn)位值兩位高字和再加進(jìn)位值 DSUM+2 高精度數(shù)要占兩個字,高高精度數(shù)要占兩個字,高16位數(shù)存放在高地址字中,低位數(shù)存放在高地址字中,低16位數(shù)位數(shù)存放在相鄰的低地址中。存放在相鄰的低地址中。加加1指令指令I(lǐng)NC 格式:格式:INC OPRDOPRD為寄存器或存儲器操作數(shù)。這條指令的功為寄存器或存儲器操作數(shù)。這條指令的功能是對給定的操作數(shù)加能是對給定的操作數(shù)加1后,再返回該操作數(shù)后,再返回該操作數(shù),即:,即:OPRD OPRD + 1,可以實現(xiàn)字節(jié)加,

20、可以實現(xiàn)字節(jié)加1或字加或字加1。注:注:INC指令不影響指令不影響CF標(biāo)志位。標(biāo)志位。指令格式指令格式操作功能操作功能標(biāo)志位影響標(biāo)志位影響O S Z A P CSUB dst, src(dst) (dst) (src) SBB dst, src(dst) (dst) (src) (CF) DEC dst(dst) (dst) 1 NEG dst(dst) 0 (dst) 1CMP dst, src(dst) (src) AAS非壓縮型非壓縮型BCD調(diào)整指調(diào)整指令令 DAS壓縮型壓縮型BCD調(diào)整指令調(diào)整指令 減法指令減法指令SUB格式:格式:SUB OPRD1,OPRD2指令的功能是進(jìn)行兩個操作

21、數(shù)的相減,即:指令的功能是進(jìn)行兩個操作數(shù)的相減,即:OPRD1 OPRD1 OPRD2本指令的類型及對標(biāo)志位的影響與本指令的類型及對標(biāo)志位的影響與ADD指令相指令相同,注意立即數(shù)不能用于目的操作數(shù),兩同,注意立即數(shù)不能用于目的操作數(shù),兩個存儲器操作數(shù)之間不能直接相減。操作個存儲器操作數(shù)之間不能直接相減。操作數(shù)可為數(shù)可為8位或位或16位的無符號數(shù)或帶符號數(shù)。位的無符號數(shù)或帶符號數(shù)。帶借位減法指令帶借位減法指令SBB格式:格式:SBB OPRD1,OPRD2其中其中OPRD1、OPRD2的含義及指令對標(biāo)志的含義及指令對標(biāo)志位的影響等均與位的影響等均與SUB指令相同。指令相同。完成的操作為:完成的操

22、作為: OPRD1 OPRD1 OPRD2 CF。減減1指令指令DEC 格式:格式:DEC OPRD其中其中OPRD的含義與的含義與INC指令相同,本指指令相同,本指令的功能是:令的功能是:OPRD OPRD 1。減法舉例減法舉例設(shè)(設(shè)(AX)=1234h,(,(BX)=02BCDH1.計算計算BX-AX2.以下語句執(zhí)行后,以下語句執(zhí)行后,BX結(jié)果是多少?結(jié)果是多少?SUB AX,BXSBB BX,100H3.假設(shè)(假設(shè)(AX)=0 ,(,(BX)=0ABCDH ,以下語,以下語句執(zhí)行后,句執(zhí)行后,BX結(jié)果是多少?結(jié)果是多少?DEC AXSBB BX,100H減運算指令運用舉例減運算指令運用舉

23、例 SUB1 DW 4275H,3412H SUB2 DW 12A5H,2F65H DSUB DW 0,0 MOV AX,SUB1 SUB AX,SUB2 MOV DSUB,AX ; 兩位低字相減,差兩位低字相減,差 DSUB MOV AX,SUB1+2 SBB AX,SUB2+2 MOV DSUB+2,AX ; 兩位高字相減,再減去借位值,差兩位高字相減,再減去借位值,差 DSUB+2取補(bǔ)指令取補(bǔ)指令NEG 格式:格式:NEG OPRDOPRD為任意通用寄存器或存儲器操作數(shù)。本指令為任意通用寄存器或存儲器操作數(shù)。本指令用來對操作數(shù)用來對操作數(shù)OPRD進(jìn)行取補(bǔ)操作,然后將結(jié)進(jìn)行取補(bǔ)操作,然后將

24、結(jié)果送回果送回OPRD。即。即求一個數(shù)的相反數(shù)的補(bǔ)求一個數(shù)的相反數(shù)的補(bǔ)碼碼。例如(例如(AL)=44H,取補(bǔ)后,(,取補(bǔ)后,(AL)=0BCH比較指令比較指令CMP舉例舉例 格式:格式: CMP OPD, OPS 功能:功能: (OPD) - (OPS) 兩操作數(shù)相減,結(jié)果不保存,根據(jù)結(jié)果設(shè)置兩操作數(shù)相減,結(jié)果不保存,根據(jù)結(jié)果設(shè)置 標(biāo)志位,該指令后往往是條件轉(zhuǎn)移指令。標(biāo)志位,該指令后往往是條件轉(zhuǎn)移指令。 例如:例如: CMP AX , 0 JG EXIT ; 若若(AX)0,轉(zhuǎn)轉(zhuǎn)EXIT NEG AX ; 若若(AX)=0,則求補(bǔ)。則求補(bǔ)。 EXIT: AAMBCD調(diào)整指令調(diào)整指令 AL源操作

25、數(shù)ALAHAX源操作數(shù)AXDX 1有符號乘指令有符號乘指令I(lǐng)MUL 格式:格式: IMUL OPS 功能:功能: 字節(jié)乘法;(字節(jié)乘法;(AL)(OPS) AX 字乘法:字乘法: (AX)(OPS) DX:AX 源操作數(shù)為乘數(shù),不能是立即數(shù),另一個操作源操作數(shù)為乘數(shù),不能是立即數(shù),另一個操作 數(shù)是隱含的,積放在規(guī)定的寄存器中。數(shù)是隱含的,積放在規(guī)定的寄存器中。 若積的高位若積的高位(AH)或或(DX)不是低位符號位的擴(kuò)展,不是低位符號位的擴(kuò)展, 而是含有積的有效位,則而是含有積的有效位,則CF=1,OF=1;否則,;否則, CF=0,OF=0,其他標(biāo)志無定義。,其他標(biāo)志無定義。 例如:例如:

26、MUL1 DW -10H MUL2 DW 50H MOV AX,MUL2 IMUL MUL1 ;(AX) (MUL1) DX:AX MOV BX,AX ;積的低;積的低16位位(AX)=0FB00H MOV CX,DX ;積的高;積的高16位位(DX)=0FFFFH IMUL 20H ;錯誤;錯誤無符號乘指令無符號乘指令MUL 格式:格式: MUL OPS 功能:功能: 字節(jié)乘法;(字節(jié)乘法;(AL)(OPS) AX 字乘法:字乘法: (AX)(OPS) DX:AX 該指令的格式用法與該指令的格式用法與IMUL相同,只是參與相同,只是參與 運算的數(shù)和運算結(jié)果都是無符號數(shù)。運算的數(shù)和運算結(jié)果都是

27、無符號數(shù)。 若積的高位若積的高位AH或或DX包含有積的有效位,包含有積的有效位, 則則CF=1,OF=1;否則,;否則,CF=0,OF=0。 其他標(biāo)志無定義。其他標(biāo)志無定義。 對于(對于(-1)*2,MUL和和IMUL有什么區(qū)別?有什么區(qū)別?AADBCDBCD調(diào)整指令調(diào)整指令 AL源操作數(shù)AXAHAXAX源操作數(shù)DXDX無符號除指令無符號除指令DIV例如:例如: A DW 7 B DW 2 shang DW 0 yushu DW 0 MOV AX,A ;被除數(shù)低;被除數(shù)低16位送位送AX MOV DX,0 ;被除數(shù)高;被除數(shù)高16位置位置0 DIV B MOV shang,AX ; 商商 C

28、MOV yushu,DX ; 余數(shù)余數(shù) D字節(jié)轉(zhuǎn)換成字指令字節(jié)轉(zhuǎn)換成字指令CBW 格式:格式: CBW 功能:功能:將將AL中的符號擴(kuò)展至中的符號擴(kuò)展至AH中。中。 即:即: AH AL 0或或115 8 7 0 4字轉(zhuǎn)換成雙字指令字轉(zhuǎn)換成雙字指令CWD 格式:格式: CWD 功能:功能:將將AX中的符號擴(kuò)展至中的符號擴(kuò)展至DX中。中。 即:即: DX AX 0或或131 16 15 0 例如例如 MOV AL,-7 ; (AL)=0F9H CBW ; (AX)=0FFF9H MOV DX,0 MOV AX,OFFABH CWD ; (DX)=0FFFFH 算術(shù)運算指令綜合例子算術(shù)運算指令綜合

29、例子(a*b+c-70)/a D DATA SEGMENT A DW a B DW b C DW c D DW d DATA ENDS STACK SEGMENT STACK DB 200 DUP (0) STACK ENDS CODE SEGMENT ASSUME DS:DATA , SS:STACK , CS:CODE START: MOV AX,DATA MOV DS,AX (a(a* *b+c-70)/a Db+c-70)/a D MOV AX,A IMUL B ADD AX, C ADC DX, 0 SUB AX, 70 SBB DX,0 IDIV A MOV D, AX MOV A

30、H,4CH INT 21H CODE ENDS END START常見的用法舉例: 清進(jìn)位標(biāo)志位:AND AX,AX 或 OR AL,AL等。 清零操作數(shù):XOR AX,AX 不僅把AX清零,而且也影響了狀態(tài)標(biāo)志。 把某幾位取反:用XOR指令,把要取反的位和1異或,不變的位和0異或。 清零或置位某幾位:用AND指令清零,用OR指令置位。 例例1: MOV AL,0B5H AND AL,0FCH 1 0 1 1 0 1 0 1 AND 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 這里,屏蔽這里,屏蔽AL中的中的0、1兩位,故將源操作兩位,故將源操作 數(shù)設(shè)為立即數(shù)數(shù)設(shè)為立即數(shù)0

31、FCH,即把要屏蔽的位設(shè)為,即把要屏蔽的位設(shè)為0, 而其他位設(shè)為而其他位設(shè)為1。例例2: MOV AL,43H OR AL,30H 0 1 0 0 0 0 1 1OR 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1這里,要將這里,要將AL中的第中的第4、5位置位置1,故將源操作,故將源操作數(shù)設(shè)為立即數(shù)數(shù)設(shè)為立即數(shù)20H,即把要置位的位設(shè)為,即把要置位的位設(shè)為1,而,而 其他不變的位設(shè)為其他不變的位設(shè)為0。例例4: MOV AL,11H XOR AL,3 0 0 0 1 0 0 0 1XOR 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0這里,要使這里,要使AL中

32、的第中的第0、1位變反,故將源操位變反,故將源操作數(shù)設(shè)為立即數(shù)作數(shù)設(shè)為立即數(shù)3,即把要變反的位設(shè)為,即把要變反的位設(shè)為1,而,而其他不變的位設(shè)為其他不變的位設(shè)為0,則可達(dá)到目的。,則可達(dá)到目的。 異或指令還可以用來測試某一操作數(shù)是否與另一異或指令還可以用來測試某一操作數(shù)是否與另一確定的操作數(shù)相等,常用來檢查地址是否匹配。確定的操作數(shù)相等,常用來檢查地址是否匹配。 XOR AX,042EH JZ MATCH MOV AL,46H TEST AL,01H 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0MOV AL,47H TEST AL,01H 0

33、1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1這里,要測試這里,要測試AL中的最低位是否為中的最低位是否為0,故將源操作數(shù)設(shè)為,故將源操作數(shù)設(shè)為立即數(shù)立即數(shù)01H,即把要測試的位設(shè)為,即把要測試的位設(shè)為1,而其他不測試的位,而其他不測試的位設(shè)為設(shè)為0,根據(jù)測試的結(jié)果設(shè)置條件碼,根據(jù)測試的結(jié)果設(shè)置條件碼CF=OF=0,SF=0, ZF=1,說明所需測試的位均為,說明所需測試的位均為0。該指令之后往往跟一。該指令之后往往跟一條條轉(zhuǎn)移指令轉(zhuǎn)移指令JNZ處理不同的情況。處理不同的情況。例例3 3:測試:測試ALAL的最低位是否為零的最低位是否為零TEST A

34、L,01HTEST AL,01H例例3: MOV AL,40H TEST AL,0AFH 0 1 0 0 0 0 0 0TEST 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0這里,要測試這里,要測試AL中的第中的第0、1、3、5、7位是否為位是否為0,故將源操作數(shù)設(shè)為立即數(shù)故將源操作數(shù)設(shè)為立即數(shù)0AFH,即把要測試的位設(shè),即把要測試的位設(shè)為為1,而其他不測試的位設(shè)為,而其他不測試的位設(shè)為0,根據(jù)測試的結(jié)果設(shè)置,根據(jù)測試的結(jié)果設(shè)置條件碼條件碼CF=OF=0,SF=0, ZF=1,說明所需測試的位,說明所需測試的位均為均為0。該指令之后往往跟一條轉(zhuǎn)移指令。該指令之后往往跟一條轉(zhuǎn)移

35、指令JNZ處理不同處理不同的情況。的情況。 MOV AL,42H TEST AL,0AFH 0 1 0 0 0 0 1 0TEST 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0這里,要測試這里,要測試AL中的第中的第0、1、3、5、7位是否位是否為為0,故將源操作數(shù)設(shè)為立即數(shù),故將源操作數(shù)設(shè)為立即數(shù)0AFH,即把要,即把要測試的位設(shè)為測試的位設(shè)為1,而其他不測試的位設(shè)為,而其他不測試的位設(shè)為0,只,只要有一個為要有一個為1,結(jié)果就是非全,結(jié)果就是非全0, ZF=0CFdstCF0dstCF0dstCF0dstCFdstCFdstCFdstCFdstCFDXAX0 RCL DX

36、,1 SHL AX,1 練習(xí)練習(xí) ;1、將寄存器、將寄存器AX、BX和和DX內(nèi)容相加,和放在寄存內(nèi)容相加,和放在寄存器器DX中,中,AX、BX中值不變。中值不變。 ;2、將、將X1的值的值 送給送給Y ;3、將、將X2的值減去的值減去AL的值。的值。 ;4、求、求X3的相反數(shù)。的相反數(shù)。 ;5、將、將CX的最高位清的最高位清0. ;6、將、將CX的最低的最低3位置位置1. ;7、將、將CX的第的第13、14位取反。(最低位為第位取反。(最低位為第0位)位) ;8、將、將AX邏輯左移邏輯左移2位。位。 ;9、將、將BX算術(shù)右移算術(shù)右移1位。位。 ;10、將、將BX循環(huán)左移循環(huán)左移3位。位。段內(nèi)直接短轉(zhuǎn)移段內(nèi)直接短轉(zhuǎn)移 JMP disp8 (IP)(IP)+ disp8-128 +127段內(nèi)直接近轉(zhuǎn)移段內(nèi)直接近轉(zhuǎn)移 JMP disp16 (IP)(IP)+ disp16-32K +32K段內(nèi)間接轉(zhuǎn)移段內(nèi)間接轉(zhuǎn)移 JMP mem/reg (IP) (mem) (IP) (reg)-32K +32K段間直接轉(zhuǎn)移段間直接轉(zhuǎn)移 J

溫馨提示

  • 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

提交評論