第3章-指令系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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),§1 指令格式(數(shù)據(jù)類型)§2 尋址方式§3 指令系統(tǒng),學(xué)習(xí)指導(dǎo)和要求,了解指令集的數(shù)據(jù)類型掌握尋址方式;熟記各種類型的指令格式及功能,并能編寫(xiě)簡(jiǎn)單程序,用DEBUG調(diào)試。,第1節(jié) 指令格式與數(shù)據(jù)類型,80x86匯編語(yǔ)言中常使用的數(shù)據(jù)類型: 1. 無(wú)符號(hào)二進(jìn)制數(shù) 字節(jié)(8位):0-255 (0-0FFH),占用一字節(jié)存儲(chǔ)單元。 字(16位):0-65535

2、(0-0FFFFH),占用連續(xù)的兩字節(jié)存儲(chǔ)單元,低地址存儲(chǔ)單元存放低8位數(shù)據(jù),高地址存儲(chǔ)單元存放高8位數(shù)據(jù),低字節(jié)地址為該字的地址。,指令的格式: 操作碼 操作數(shù),有符號(hào)二進(jìn)制數(shù)字節(jié)(8位): -128-+127 (80H-FFH, 00H-7FH)字(16位): -32768-+32767 (8000H-FFFFH, 00000H-7FFFH) 以補(bǔ)碼形式存儲(chǔ),地址單元分配與

3、無(wú)符號(hào)數(shù)類似。,3.BCD碼壓縮BCD碼:1字節(jié)存放兩個(gè)BCD碼,格式如圖a,,,7 4 3 0 7 4 3 0,(a) (b),非壓縮BCD碼:1字節(jié)存放一個(gè)BCD碼(低4位),格式如圖b,,,十位 個(gè)位

4、,0或任意 個(gè)位,4.字符串,5. ASCII碼 ASCII碼字符串: 如‘ABC123’ ASCII碼數(shù): 如30H-39H(0-9),41H-46H(A-F),返 回,第2節(jié) 80X86的尋址方式,1.立即尋址2.寄存器尋址3.直接尋址4.寄存器間接尋址5.相對(duì)寄存器間接尋址 6.基址加變址尋址7.相對(duì)基址加變址尋址,80X86的常用尋址方式:,DATA SEGMENT A DB 6

5、 B DB 8 Y DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL MOV Y,AL HLTCODE ENDS END S

6、TART,例:計(jì)算Y=A+B,設(shè):A=6,B=8,,?立即尋址:操作數(shù)包含在指令中,存放在代碼段。 ?寄存器尋址:操作數(shù)在寄存器中,存放在CPU內(nèi)。 ?存儲(chǔ)器尋址:操作數(shù)在存儲(chǔ)器(數(shù)據(jù)段)中。,,,,代碼段,數(shù)據(jù)段,,寄存器,CPU,內(nèi)存,運(yùn)算器,,,,,立即數(shù),存儲(chǔ)器,,,,,,,三種類型操作數(shù):立即數(shù)操作數(shù)、寄存器操作數(shù)、存儲(chǔ)器操作數(shù),1.立即尋址操作數(shù)緊跟在操作碼之后,直接存放在代碼段中 如:MOV BL,16H

7、 ;BL 16H MOV AX,2056H ;AX 2056H,,,,,,,,,OP16HOP56H20H,,,,,,BL,AX,,AH AL,,,20H 56H,16H,注意:立即數(shù)只能源操作數(shù),不能目標(biāo)操作數(shù)。,2.寄存器尋址操作數(shù)在CPU的寄存器中,而寄存器的名由指令指出 如:MOV AL,56H MOV BL,AL M

8、OV AX,25注意:在同一條指令中,類型必須匹配。如下列指令是錯(cuò)誤的: MOV AL,1234H MOV BX,AL,3.直接尋址:操作數(shù)有效地址(16位或32位)直接包含在指令中,它位于操作碼之后,存放在代碼段中。如果指令無(wú)前綴指明在那一段中,則默認(rèn)操作數(shù)存放在數(shù)據(jù)段。 MOV AL,[0010H] ; 0010H為偏移地址 MOV BX,D1 ; DS段D1H的內(nèi)容送

9、BL, D1+1H的內(nèi)容送BH注:D1為符號(hào)地址 (變量名),,,,,OP10H00H,,,,AL,,,,,(DS)*24+0010H,,如:MOV AX,[2000H] ;DS段2000H的內(nèi)容送AL,

10、 2001H的內(nèi)容送AH MOV AX,F(xiàn)S:[2000H];FS段2000H的內(nèi)容送AL, 2001H的內(nèi)容送AH4.寄存器間接尋址操作數(shù)的偏移地址存放在寄存器中,而操作數(shù)存放在某存儲(chǔ)器中。 1

11、6位尋址 EA= [DI]、[SI]、[ BX]、[BP],,,無(wú)前綴默認(rèn)操作數(shù)存放在數(shù)據(jù)段,,無(wú)前綴默認(rèn)操作數(shù)存放在堆棧段,,例如: MOV AX,[BX] ; AX (DS*10H+(BX)) MOV AX,[BP] ; AX (SS*10H+(BP)) MOV AX,ES:[BX]; AX (ES*10H+(BX)) MOV AX,DS:[BP]; AX (

12、DS*10H+(BP)),,,,,5.相對(duì)寄存器間接尋址(寄存器相對(duì)尋址)寄存器內(nèi)容與位移量之和形成操作數(shù)的有效地址。即: EA=[寄存器]+位移量 16位尋址 EA={[BX]、[BP]、[DI]、[SI]}+位移量(帶符號(hào)8或16位整數(shù)) 如:MOV AX,2040H[BX] 或 MOV AX,[BX+2040H];DS段(BX)+2040H中的字 數(shù)據(jù)送AX。,6.基址加

13、變址尋址 基址寄存器內(nèi)容與變址寄存器內(nèi)容之和形成操作數(shù)的偏移地址。 即:EA=[基址寄存器]+[變址寄存器]  16位尋址  基址寄存器:BX、BP; 變址寄存器:DI、SI 如:MOV AX,[BX+SI]  或MOV AX,[BX][SI]; DS段(BX)+(SI)中的字?jǐn)?shù)據(jù)送AX。,7.相對(duì)(帶位移的)基址加變址尋址 基址寄存器內(nèi)容與變址寄存器內(nèi)容再加偏移量

14、之和形成操作數(shù)的有效地址。即: EA=[基址寄存器]+[變址寄存器]+偏移量 如 : MOV AX,1234H[BX+DI] 或MOV AX,[BX+DI+1234H] 或MOV AX,1234H[

15、BX][DI] ;DS段 (BX)+(DI)+1234H中的字?jǐn)?shù)據(jù)送AX。,若要改變默認(rèn),需要加前綴修改。 MOV AL,ES:[SI] ;AL ((ES)*10H+(SI)) MOV BL,ES:[2000H] ;BL ((ES)*10H+2000H) MOV CL,DS:[BP] ;CL ((DS)*10H+(BP)),,,,,前綴,第3節(jié) 指令系

16、統(tǒng),?數(shù)據(jù)傳送類指令?算術(shù)運(yùn)算類指令?邏輯運(yùn)算類指令?串操作類指令?控制轉(zhuǎn)移類指令,(一)數(shù)據(jù)傳送類指令 用于實(shí)現(xiàn)存儲(chǔ)器與寄存器 、寄存器與寄存器、累加器與I/O端口之間字節(jié)、字或雙字的傳送,也可將立即數(shù)傳送到存儲(chǔ)器或寄存器 不影響標(biāo)志位:CF、SF、ZF、OF、AF、PF 1.傳送指令MOV 格式: MOV 目標(biāo),源 ;功能:目標(biāo) 源,,,,立即、寄存器、存儲(chǔ)器,,,寄

17、存器、存儲(chǔ)器,立即數(shù),寄存器,存儲(chǔ)器,寄存器,段寄存器,,,,,,,,,,,傳送指令MOV示意圖,注意:1.立即數(shù)和CS不能是目標(biāo)操作數(shù)例:MOV 10H,AL 錯(cuò) MOV CS,AX 錯(cuò)2.立即數(shù)不能直接送段寄存器,需中轉(zhuǎn)例 MOV AX,1000H MOV DS,AX3.存儲(chǔ)器之間,段寄存器之間不能傳送例 MOV DS,SS 錯(cuò) MOV [B

18、X],[SI] 錯(cuò)4.源和目標(biāo)操作數(shù)類型要一致 MOV AX,BL 錯(cuò),,2.交換指令XCHG格式:XCHG 操作數(shù)1,操作數(shù)2 ; 功能: 操作數(shù)1 操作數(shù)2如:XCHG AX, BX XCHG AX, [BX],,說(shuō)明:1.操作數(shù)可以是reg,mem2.兩個(gè)存儲(chǔ)器操作數(shù)不能直接交換;3.不能在交換指令中使用段寄存器,用

19、一個(gè)也不可以。,3.堆棧操作指令 數(shù)據(jù)進(jìn)棧指令:先修改指針,后源內(nèi)容入棧 PUSH 源 ;(SP)-2 SP ; 源 ((SP)+1,(SP)) 數(shù)據(jù)出棧指令:先將指針內(nèi)容送到目標(biāo),后修改指針 POP 目標(biāo) ; ((SP)+1,(SP)) 目標(biāo) ;(SP)+ 2 SP,,,,,設(shè):(SS)=2000H,(SP)=0010

20、H (AX)=3344H,(BX)=5678H 寫(xiě)出指令完成如下功能: 通過(guò)堆棧將AX,BX的內(nèi)容交換PUSH AXPUSH BXPOP AXPOP BX,,,,,,,,,,,,SP,SS,,2000H000BH000CH000DH000EH000FH0010H,(SP)-2,,(SP)-2,,2000H:000BH,33H,44H,56H,78H,,AX,BX,,,,

21、,,,,,設(shè):(SS)=2000H,(SP)=0010H (AX)=3344H,(BX)=5678H 寫(xiě)出指令完成如下功能: 通過(guò)堆棧將AX,BX的內(nèi)容交換PUSH AXPUSH BXPOP AXPOP BX,,,,,,,,,,,,(SP)+2,SS,,2000H000BH000CH000DH000EH000FH0010H,(SP)+2,,(SP),,2000H:000

22、BH,33H,44H,56H,78H,,BX,AX,,,,,,,,,說(shuō)明:①堆棧以字為單位操作 PUSH BL 錯(cuò) PUSH [DI]是正確表示的指令,當(dāng)然,也可以寫(xiě)為:PUSH WORD PTR[DI]②CS不能做目標(biāo)操作數(shù) PUSH CS 對(duì) POP CS 錯(cuò)③堆棧操作指令都隱含

23、了一個(gè)操作數(shù):SP所指的棧頂數(shù)據(jù);④沒(méi)有立即尋址 PUSH 1234H 錯(cuò)⑤先進(jìn)后出,后進(jìn)先出,4.查表指令XLAT 格式:XLAT ; AL ? ((BX)+(AL)) 功能:BX指向表的首地址(DS段內(nèi)),AL裝入要轉(zhuǎn) 換的代碼在表中的序號(hào),并將XLAT指令執(zhí)行的結(jié)果存于AL中。,例如[p75],5.有效地址傳送(取有效地址)指令LEA 格式: LEA 目標(biāo),源

24、 reg,mem 其功能是將源操作數(shù)的有效地址(偏移地址)送到一個(gè)寄存器中。 所以是16/32位地址的傳送指令。源操作數(shù)是任何一種存儲(chǔ)器操作數(shù)的尋址方式。 LEA AX,[2000H];AX=2000H LEA BX,BLOCK;BLOCK所代表的地址送BX (MOV BX,OFFSET BLOCK) LEA CX,[SI];C

25、X=(SI) LEA DX,BLOCK[SI];DX=BLOCK+(SI) LEA AX,[BX][DI];AX=(BX)+(DI),,,幾個(gè)地址含義,物理地址段基址偏移地址有效地址,參p62頁(yè)物理地址=段基址*10H+偏移地址偏移地址(有效地址,EA) =基址+變址*比例因子+位移量,5.取地址(段基址:偏移地址)指令 LDS 目標(biāo),源 ; reg [mem],

26、DS [mem+2] LES 目標(biāo),源 ; reg [mem], ES [mem+2] reg,mem,,,,,,,,,例:必須先將兩個(gè)16位地址存入內(nèi)存。設(shè):DS=3000H,源操作數(shù)的物理地址為32130H,由這個(gè)地址開(kāi)始,有4個(gè)字節(jié)的數(shù)是要傳送的操作數(shù)。如:LDS SI,[2130H]結(jié)果是SI=3C

27、1FH,DS=2000H從而改變了數(shù)據(jù)段的物理地址,,,,,,,,,,DS=3000H,3000H:2130H,20H,00H,3CH,1FH,6.標(biāo)志寄存器傳送指令指令格式:LAHF ; 標(biāo)志寄存器低8位內(nèi)容送AHSAHF ; AH內(nèi)容送標(biāo)志寄存器低8位PUSHF ; 16位標(biāo)志寄存器內(nèi)容進(jìn)棧POPF ; 16位出棧內(nèi)容送標(biāo)志寄存器,7. I/O數(shù)據(jù)傳送指令格式: 輸入 IN Acc,端

28、口;將端口數(shù)據(jù)讀出送入CPU 輸出 OUT 端口,Acc;將CPU累加器中數(shù)據(jù)寫(xiě)入端口,8位,端口地址 DX,,AL,AX,例: IN AL,28H MOV DX,03FCH OUT 15H,AX IN AX,DX,與運(yùn)算有關(guān)的標(biāo)志標(biāo)志寄存器FLAGS中存放運(yùn)算結(jié)果的屬性。CF:進(jìn)位/借位標(biāo)志。加、減運(yùn)算最高位產(chǎn)生進(jìn)位/借位時(shí)置1

29、。AF:輔助進(jìn)位/借位標(biāo)志。加、減運(yùn)算時(shí)低半字節(jié)位產(chǎn)生進(jìn)位/借位時(shí)置1。OF:溢出標(biāo)志。有符號(hào)二進(jìn)制加、減運(yùn)算結(jié)果超出范圍時(shí)置1。ZF:零標(biāo)志。結(jié)果為零時(shí)置1。SF:符號(hào)標(biāo)志。結(jié)果為負(fù)時(shí)置1。PF:奇偶標(biāo)志。結(jié)果“1”的個(gè)數(shù)為偶數(shù)時(shí)置1。,關(guān)于Debug調(diào)試環(huán)境,Dos環(huán)境16進(jìn)制操作交互式,允許批處理需安裝dos命令環(huán)境+Debug組件詳見(jiàn)課程平臺(tái)-課程資源Debug中最常用的兩個(gè)命令-A 寫(xiě)命令-T 查內(nèi)

30、存,注意Flag與Debug中標(biāo)志位對(duì)應(yīng),OF: OV/NV(Overflow/ No Overflow)DF: DN/UP(Down/ Up)IF: EI/DI(Enable Interrupt/ Disable Interrupt)SF: NG/PL(Negative/ Positive)ZF: ZR/NZ(Zero/ Not Zero)AF: AC/NA(Auxiliary Carry/ No Auxiliary Car

31、ry)PF: PE/PO(Parity Even/ Parity Odd)CF: CY/NC(Carry/ No Carry),(二)算術(shù)運(yùn)算類指令 執(zhí)行指令后,根據(jù)結(jié)果置標(biāo)志位: CF、SF、ZF、OF、AF、PF算術(shù)運(yùn)算指令包括加、減、乘、除四種運(yùn)算,以及相應(yīng)的十進(jìn)制調(diào)整指令。算術(shù)運(yùn)算對(duì)象可以是有符號(hào)數(shù)或無(wú)符號(hào)數(shù)。加、減運(yùn)算用相同的指令來(lái)進(jìn)行,但對(duì)乘、除運(yùn)算要用不同的指令。對(duì)于加、減運(yùn)算,操作數(shù)是否有

32、符號(hào)及結(jié)果的判斷(是否溢出)是用戶的事,計(jì)算機(jī)則是按相同的方法進(jìn)行運(yùn)算。,1.加法/減法指令加法/減法 ADD/SUB 目標(biāo),源 ;功能:目標(biāo) 目標(biāo) + 源帶進(jìn)位加法/減法 ADC/SBB 目標(biāo),源 ;功能:目標(biāo) 目標(biāo) + 源+CF加一/減一 INC/DEC 目標(biāo) ;功能:目標(biāo) 目標(biāo)+1,,,,

33、,,,,,(1)加法指令格式: ADD reg, reg ADD reg, mem ADD reg, imm ADD mem,reg ADD mem,imm例:ADD AX,BX ;AX (AX)+(BX)ADD EBX,ECX

34、 ;EBX (EBX)+(ECX)ADD [3000H],AX ;(3000H ) (3000H)+(AX)ADD BYTE PTR [3000H],23 ;( 3000H ) (3000H)+23,,,,,例:p79上面例題,關(guān)于100+30的溢出。,Debug中,82H =130看似正確,實(shí)則溢出。,2

35、. 減法指令SUB OP1,OP2 ; OP1 OP1-OP2 ,置標(biāo)志位 reg, reg reg, mem reg, imm mem,reg mem,imm功能:從OP1中減去OP2,結(jié)果存OP1中ADD和SUB對(duì)標(biāo)志位的影響:OF SF ZF AF

36、 PF CFX X X X X X,,例:SUB AX,BX ; AX (AX)-(BX) 加減指令例:設(shè)AL=64H,AH=0A8H,求執(zhí)行下列指令的結(jié)果和標(biāo)志位的狀態(tài)。 ADD AL,AH ; AL (AL)+(AH),有符號(hào)數(shù).解:01100100 100D 得: (

37、AL)=0CH(正確) + 10101000 -88D OF SF ZF AF PF CF 1 00001100 12D 0 0 0 0 1 1,,,,,SUB AL,AH ; AL (AL)-(AH),有符號(hào)數(shù).解: 01100100 100D 得: (AL)=BCH(不正確) (- 10101000)

38、 -(-88D)OF SF ZF AF PF CF + 01011000 10111100 -68D 1 1 0 1 0 1有符號(hào)數(shù)加、減的結(jié)果有“溢出”的判斷規(guī)則: 正數(shù)+正數(shù)=負(fù)數(shù),負(fù)數(shù)+負(fù)數(shù)=正數(shù) 例:設(shè)(AL)=7FH,(BL)=40H,判斷執(zhí)行ADD AL,BL指令的結(jié)果是否正確。解: 01111111 127D 得: (AL)=0BF

39、H(不正確) + 01000000 64D OF SF ZF AF PF CF 10111111 -65D 1 1 0 0 0 0,,,,,,,,,,返回,帶進(jìn)位加法指令格式:ADC OP1,OP2;OP1 OP1+OP2+CF ,置標(biāo)志位 reg, reg reg, me

40、m reg, imm mem,reg mem,immADC的功能:將OP1、OP2和進(jìn)位標(biāo)志位CF相加,結(jié)果存放在OP1。例: ADC AX,375 ; AX (AX)+375+CF,,,SBB OP1,OP2; OP1 OP1-OP2-CF ,置標(biāo)志位 r

41、eg, reg reg, mem reg, imm mem,reg mem,immSBB的功能:從OP1中減去OP2,再減去借位標(biāo)志CF,結(jié)果存OP1中。例: SBB AX,BX;AX (AX)-(BX)-CF ADC和SBB對(duì)標(biāo)志位的影響: OF SF ZF AF PF

42、 CF X X X X X X,,,帶進(jìn)位減法指令,ADD 和ADC、SUB和SBB經(jīng)常配合使用,完成64位加、減法運(yùn)算。例:ADD EAX,ECX;EAX (EAX)+(ECX)ADC EBX,EDX;EBX (EBX)+(EDX)+CFSUB EAX,ECX ;EAX (EAX)-(ECX)SBB EBX,EDX ;EBX

43、 (EBX)-(EDX)-CF,,,,,返回,加1/減1指令I(lǐng)NC/DEC格式:INC/DEC OP1; OP1 OP1+ 1 mem reg功能:INC使操作數(shù)的值加1;DEC使操作數(shù)的值減1,常用于修改計(jì)數(shù)器或地址指針。說(shuō)明:結(jié)果影響(OF,AF,PF,ZF,SF)除CF外

44、的標(biāo)志位例:下面是從300H端口輸出256個(gè)字節(jié)數(shù)據(jù)的程序段:BUFFER DB 12,34,… MOV CX,255 MOV SI,OFFSET BUFFER MOV DX,300HNEXT :MOV AL,[SI] OUT DX,AL INC S

45、I ;地址加1,取下一個(gè)數(shù) LOOP NEXT ;未完,繼續(xù),,,返回,求補(bǔ)(相反數(shù))指令NEG 格式:NEG OP1 ;OP1 0-OP1,置標(biāo)志位 功能:求OP1的相反數(shù)。 求一個(gè)數(shù)的相反數(shù): NEG AL ;AL 0-(AL) 若(AL)=13H 執(zhí)行前:(AL)=13H

46、 1 00000000 執(zhí)行后:(AL)=0EDH(-13H的補(bǔ)碼) -00010011 求補(bǔ) 求補(bǔ) 1110110113H=[+19D]補(bǔ)==[-19D]補(bǔ)== 0EDH== 13H,,,,,真值,,真值,,機(jī)器數(shù),,機(jī)器數(shù),比較指令 CMP格式:CMP OP1,OP2

47、;OP1-OP2,置標(biāo)志 reg, reg reg, mem reg,imm mem,reg mem,imm功能:將OP1減去OP2,但結(jié)果不存在OP1中, 只使結(jié)果影響標(biāo)志位。 CMP指令用于比較OP1與OP2的大小,由標(biāo)志位來(lái)反映兩數(shù)的關(guān)系。,,,,,,,,,,A-B

48、 CF ZF SF OF A=B 0 1 0 0 A>B 0 0 - -無(wú)符號(hào)數(shù) AB - 0 0 0 有符號(hào)數(shù)

49、 AB - 0 1 1,比較指令CMP:,,,注意:有符號(hào)數(shù) SF⊕OF=1 AB CF=0,3.無(wú)符號(hào)/帶符號(hào)乘法指令MUL/IMUL格式:無(wú)符號(hào)乘法指令: MUL 源帶符號(hào)乘法指令: IMUL 源功能:字節(jié): (AL)*源 AH:AL字: (AX)*源 DX:AX,,,,被乘數(shù),乘數(shù),

50、積高位,積低位,,,,標(biāo)志位:若積的高位為0,則OF=CF=1,否則OF=CF=0,說(shuō)明:1.只提供源操作數(shù),另一個(gè)隱含在AL,AX中2.源操作數(shù)可以使reg,men,不允許是imm,4.無(wú)符號(hào)/帶符號(hào)除法指令DIV/IDIV格式:無(wú)符號(hào)除法指令: DIV 源帶符號(hào)除法指令: IDIV 源功能:字節(jié): (AX)/源 AH:AL字: (DX:AX)/源 DX:AX,,,,被除數(shù),除數(shù),余數(shù),商,,,

51、,,,5.十進(jìn)制(BCD碼)調(diào)整指令 壓縮BCD碼運(yùn)算:將壓縮BCD數(shù)用二進(jìn)制加、減指令 (ADD, SUB, ADC, SBC)運(yùn)算,運(yùn)算結(jié)果必須用以下調(diào)整指 令調(diào)整為壓縮BCD數(shù)的結(jié)果。 指令格式及功能: DAA ;將AL中的和調(diào)整為壓縮BCD數(shù) DAS ;將AL中的差調(diào)整為壓縮BCD數(shù) 非壓縮BCD字節(jié)數(shù)加、減、乘、除(ASCII調(diào)整) 非壓縮BCD碼運(yùn)算:將非壓縮BCD數(shù)用二進(jìn)制加

52、、減、乘、除指令運(yùn)算,配合相應(yīng)的調(diào)整。 AAA ;將AL中的和調(diào)整為非壓縮BCD數(shù) AAS ;將AL中的差調(diào)整為非壓縮BCD數(shù) AAM ;將AL中的積調(diào)整為非壓縮BCD數(shù) AAD ;調(diào)整AX中的被除數(shù),相除的商即為非壓縮BCD數(shù),運(yùn)算的數(shù)據(jù)必須是BCD,,,DAA/DAS 指令的調(diào)整方法: 若AL的低4位為A~F或AF=1,則(AL)+/-06H 若AL的高4位為A~F或CF=1,則(AL)+/-

53、60H AAA/AAS 指令的調(diào)整方法: 若AL的低4位為A~F或AF=1,則(AL)+/-06H, 并將AL的高4位清零; 若AF=1,則將AF的值送CF,同時(shí)使(AH)+/-CF。,AAM ;將AL中的積調(diào)整為非壓縮型BCD數(shù) 調(diào)整方法:(二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的方法) (AL)/0AH 使用:先乘,后調(diào)整 如: MOV AL,04H ;非壓縮

54、型BCD數(shù) MOV BL,06H ;非壓縮型BCD數(shù) MUL BL ;(AL)*BL AX(AH:AL) AAM ;(AL)/0AH,商 AH(高位BCD碼)余數(shù) AL(低位BCD碼),,,,,,商 AH(高位BCD碼)余數(shù) AL(低位BCD碼),,,,,積,AAD ;調(diào)整AX中的被除數(shù),商即為非壓縮型BCD數(shù) 調(diào)整

55、方法(十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)方法) (AH)*0AH+(AL) AL,0 AH 使用:先調(diào)整,后除 如: MOV AX,0204H ;被除數(shù)為2位非壓縮型BCD數(shù) MOV BL,06H ;除數(shù)為1位非壓縮型BCD數(shù) AAD ;(AH)*0AH+(AL) AL,0 AH DIV BL ;(AX)/(BL),,,,,商 AL(1位非壓縮

56、型BCD數(shù))余數(shù) AH,,,,例:p85,例3-7:計(jì)算28+34 (用DEBUG),法1:利用BCD調(diào)整指令(計(jì)算直觀),計(jì)算結(jié)果:AL=62 (表示10進(jìn)制加法即得到62),例:p85,例3-7:計(jì)算28+34 (用DEBUG),法2:利用傳統(tǒng)16進(jìn)制(需10-16換算),計(jì)算結(jié)果:AL=3E (轉(zhuǎn)為10進(jìn)制為62),(三)邏輯運(yùn)算與移位指令 邏輯指令包括與、或、非、異或、測(cè)試移位和循環(huán)移位指令左移、右移、循環(huán)左/

57、右移指令。1.邏輯與/或/異或指令A(yù)ND/OR/XOR格式:AND/OR/XOR OP1, OP2 reg,mem reg,imm mem,reg

58、 mem,imm功能:兩操作數(shù)按位與、或、異或,結(jié)果存入OP1中。,例如:MOV AL,‘6’ AND AL,0FH ;(AL)=06H 使某些位清零(高四位清零) MOV AL,6 OR AL,30H ;(AL)=36H 使某些位置1 (高四位置1 )

59、 MOV AL,0F0H XOR AL,0FH ;(AL)=0FFH 使某些位取反(低四位取反)2.測(cè)試指令TEST 格式:TEST OP1,OP2 reg, reg reg,mem reg,imm功能:兩操作數(shù)按位與

60、,置標(biāo)志位,不保存結(jié)果。,TEST常用于測(cè)試某位的狀態(tài)。例如測(cè)試打印機(jī)是否空閑的程序段如下: MOV DX,3BDHPRTBUSY:IN AL,DX ;讀打印機(jī)狀態(tài) TEST AL,80H ;測(cè)試是否空閑 JZ PRTBUSY ;忙,繼續(xù)測(cè)試

61、 . .3.邏輯非指令NOT格式: NOT OP1 reg mem功能:將操作數(shù)各位求反,對(duì)標(biāo)志位沒(méi)有影響.對(duì)標(biāo)志為影響:除NOT外,都影響SF、ZF、PF,AF任意,CF=OF=0,4.算術(shù)/邏輯左移指令SAL/SHL(AF任意

62、,影響其他標(biāo)志位)格式: SAL/SHL OP1, OP2 reg, 1 mem,1 reg, CL mem, CL功能:將OP1向左移位,移動(dòng)的次數(shù)由OP2決定,若移

63、動(dòng)的次數(shù)為1,OP2=1,其它情況將移動(dòng)的次數(shù)送入CL中。操作數(shù)每左移一位,在最低位補(bǔ)0,最高位移進(jìn)CF中。例:設(shè)(AL)=01010011B,將AL的內(nèi)容左移3位。 MOV CL,3 SHL AL,CL ; (AL)=10011000,,,,,,,,,,,CF,,D7/15,,D0,,0,5.邏輯/算術(shù)右移指令SAR/SHR格式: SHR/SAR OP1, OP2

64、 reg, 1 mem,1 reg, CL mem, CL說(shuō)明:將OP1向右移位,移動(dòng)的次數(shù)由OP2決定,若移動(dòng)的次數(shù)為1,OP2=1,其它情況將移動(dòng)的次數(shù)送入CL中。功能:邏輯右移操作數(shù)每

65、右移一位,在最高位補(bǔ)0,最 低位移進(jìn)CF中。 算術(shù)右移操作數(shù)每右移一位,在最高位不變, 最低位移進(jìn)CF中。,,,,,,,D7/15,D0,,,,,0,,,,,CF,,,,,,,,,,,D7/15,D0,CF,,,,,,,SHR,SAR,例:設(shè)(AL)=10101001B,將AL的內(nèi)容算術(shù)/邏輯右移3位。算術(shù)右移3位: MOV CL,3 SAR AL,CL;(A

66、L)=11110101B邏輯右移3位: MOV CL,3 SHR AL,CL; (AL)= 00010101B,6.循環(huán)移位指令ROL/ROR/RCL/RCR格式:ROL/ROR/RCL/RCR OP1, OP2

67、 reg,1 mem,1 reg,CL

68、 mem,CL功能:ROL 為左循環(huán)移位指令,ROR為右循環(huán)移位指令,RCL和RCR則分別為帶CF的左循環(huán)移位和右循環(huán)移位指令。,,,,,CF,CF,CF,,,,,,,,,,,,,,,,,,,,,,,,,,,,CF,ROL,ROR,RCL,RCR,,小循環(huán),大循環(huán),(四)控制轉(zhuǎn)移指令 控制轉(zhuǎn)移指令包括: » 無(wú)條件轉(zhuǎn)移指令(JMP) » 條件轉(zhuǎn)

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論