版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、復(fù)習(xí)n1、8086指令系統(tǒng)都包括哪些類指令。指令系統(tǒng)都包括哪些類指令。n2、MOV、XCHG、PUSH、POP、XLAT 、LEA時間:時間:201410月月9日(第七周周四)日(第七周周四)n熟悉熟悉8086的基本指令對標(biāo)志的影響、符號擴(kuò)的基本指令對標(biāo)志的影響、符號擴(kuò)展的含義、壓縮和非壓縮展的含義、壓縮和非壓縮BCD的格式的格式n掌握基本指令:掌握基本指令:ADDADCINC、SUBSBBDECCMPNEG、DAADAS、MUL、DIV指令用法和應(yīng)用范圍及對標(biāo)志位指令用法和應(yīng)用范圍及對標(biāo)志位的影響。的影響。(三)地址目的傳送指令(三)地址目的傳送指令這是這是專用于傳送地址碼專用于傳送地址碼的
2、指令,可用來傳送的指令,可用來傳送操作數(shù)操作數(shù)的的段地址段地址和和偏移地址偏移地址,共包含以下三條指令:,共包含以下三條指令:1、LEA取有效地址指令取有效地址指令指令格式:指令格式:LEA r , src功能:功能:把源操作數(shù)的地址偏移量,傳送至目的操作數(shù)。把源操作數(shù)的地址偏移量,傳送至目的操作數(shù)。要求源操作數(shù)必須是一個要求源操作數(shù)必須是一個內(nèi)存操作數(shù)內(nèi)存操作數(shù);目的操作數(shù)必須;目的操作數(shù)必須是一個是一個除段寄存器除段寄存器以外的以外的16位寄存器位寄存器。指令指令 LEA BX,TABLE與指令與指令 MOV BX,OFFSET TABLE是等價的是等價的例:例:(SI)1000H,(DS
3、)5000H,(,(51000H)1234H執(zhí)行指令執(zhí)行指令 LEA BX, SI后,后,(BX)1000H執(zhí)行指令執(zhí)行指令 MOV BX, SI后,后,(BX)1234HLEA指令例:傳送例:傳送100個數(shù),已知(個數(shù),已知(DS)=3000H,(DI)=3000H,(SI)=2000H.74H01H02H03H04H64H100個個32000H(AREA1)33000H(AREA2)10H11H12H13H100個個64H01H02H03H04H64H100個個32000H33000H01H02H03H04H100個個執(zhí)行前執(zhí)行前執(zhí)行后執(zhí)行后程序程序:MOV SI, OFFSET AREA
4、1 ; 設(shè)置地址偏移量設(shè)置地址偏移量(SI)=2000H MOV DI, OFFSET AREA2 ;(DI)=3000H MOV CX, 100 ;送循環(huán)次數(shù)送循環(huán)次數(shù)100,字節(jié)操作,字節(jié)操作AGAIN:MOV AL, SI ;取源操作單元一個字節(jié)取源操作單元一個字節(jié) MOV DI, AL ;送到目的單元;送到目的單元 INC SI ;源操作地址指針指向下一個單元源操作地址指針指向下一個單元 INC DI ;目的操作地址指針指向下一個單元目的操作地址指針指向下一個單元 DEC CX ;送完一個字節(jié),循環(huán)次數(shù)減一送完一個字節(jié),循環(huán)次數(shù)減一JNZ AGAIN ;判斷循環(huán)是否結(jié)束判斷循環(huán)是否結(jié)束
5、HLT ;停機(jī);停機(jī)設(shè)置循環(huán)次數(shù)、設(shè)置循環(huán)次數(shù)、地址偏移量地址偏移量取源操作數(shù)送取源操作數(shù)送AL結(jié)束結(jié)束將將AL內(nèi)容送目的單元內(nèi)容送目的單元修改循環(huán)次數(shù)及指針修改循環(huán)次數(shù)及指針?biāo)屯??送完?YN程序流程圖程序流程圖思考:如果按照字傳送,程序怎樣修改?思考:如果按照字傳送,程序怎樣修改?設(shè)置循環(huán)次數(shù)設(shè)置循環(huán)次數(shù)50、地址偏移量地址偏移量取源操作數(shù)送取源操作數(shù)送AX結(jié)束結(jié)束將將AX內(nèi)容送目的單元內(nèi)容送目的單元修改循環(huán)次數(shù)及指針修改循環(huán)次數(shù)及指針(2次次)送完?送完?YN程序程序:MOV SI, OFFSET AREA1 ; 設(shè)置地址偏移量設(shè)置地址偏移量(SI)=2000H MOV DI, OFFSE
6、T AREA2 ;(DI)=3000H MOV CX, 50 ;送循環(huán)次數(shù)送循環(huán)次數(shù)50,字字操作操作AGAIN:MOV AX, SI ;取源操作單元一個取源操作單元一個字字 MOV DI, AX ;送到目的單元;送到目的單元 INC SI INC SI ;源操作地址指針指向下一個;源操作地址指針指向下一個字字單元單元 INC DI INC DI ;目的操作地址指針指向下一個;目的操作地址指針指向下一個字字單單元元 DEC CX ;送完一個送完一個字字,循環(huán)次數(shù)減一,循環(huán)次數(shù)減一JNZ AGAIN ;判斷循環(huán)是否結(jié)束判斷循環(huán)是否結(jié)束HLT ;停機(jī);停機(jī)2、LDS:將將雙字指針雙字指針?biāo)椭噶钪付?/p>
7、的送指令指定的寄存器寄存器和和DS指令指令指令格式:指令格式:LDS r,src功能功能:從源操作數(shù)指定的存儲單元中的雙字指針?biāo)偷街噶钪笍脑床僮鲾?shù)指定的存儲單元中的雙字指針?biāo)偷街噶钪付ǖ募拇嫫鳎ǔ6ǖ募拇嫫鳎ǔV付ㄖ付⊿I)及及DS寄存器中。寄存器中。低位低位字字給給SI,高位給高位給DS。例:設(shè)例:設(shè)(DS)=1200H,(,(13450H)=3F46H,(,(13452H)=0A92H 執(zhí)行指令執(zhí)行指令 LDS SI, 1450H 后:后:(SI) = 3F46H, ( DS )= 0A92H3、LES:將將雙字指針雙字指針?biāo)偷剿偷郊拇嫫骷拇嫫骱秃虴S指令指令指令格式:指令格式:LES r
8、,src功能:功能:從源操作數(shù)指定的存儲單元中的雙字指針?biāo)偷街笍脑床僮鲾?shù)指定的存儲單元中的雙字指針?biāo)偷街噶钪付ǖ募拇嫫鳎ǔA钪付ǖ募拇嫫鳎ǔV付ㄖ付―I)及及ES寄存器中寄存器中。低位低位字字給給DI,高位給,高位給ES。例:設(shè)例:設(shè)(DS)=0100H, (BX)=0020H, (01020H) =0300H, (01022H)= 0500H, (ES)= 3000H. (DI) = 0300H, (ES) = 0500H執(zhí)行指令執(zhí)行指令 LES DI, BX 后后加法指令減法指令4.3算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 加、減、乘、除加、減、乘、除四種基本運(yùn)算指令。四種基本運(yùn)算指令。 可處理可處理無
9、符號無符號或或帶符號帶符號的的8位位或或16位位二進(jìn)制數(shù)的算術(shù)運(yùn)算(二進(jìn)制數(shù)的算術(shù)運(yùn)算(帶符帶符號數(shù)是用號數(shù)是用補(bǔ)碼補(bǔ)碼表示表示)。)。 還提供了各種調(diào)整操作指令,故可進(jìn)行壓縮的或非壓縮的十進(jìn)還提供了各種調(diào)整操作指令,故可進(jìn)行壓縮的或非壓縮的十進(jìn)制數(shù)的算術(shù)運(yùn)算。制數(shù)的算術(shù)運(yùn)算。 絕大部分絕大部分算術(shù)運(yùn)算指令都影響狀態(tài)標(biāo)志位算術(shù)運(yùn)算指令都影響狀態(tài)標(biāo)志位。加法指令加法指令(一)加法指令(一)加法指令1、ADD OPRD1,OPRD2例:例:(1) . ADD AL,50H ; AL (AL)+50H (2). ADD CX,1000H ;CX (CX)+1000H (3). ADD DI, SI
10、;DI ( DI)+(SI) (4). ADD BX+DI,AX ; (BX)=1000H, (DI)=2000H, (AX)=1234H,(,(3000H)4025H EA=(BX)+(DI)=3000H 1234+ 4025H =5259H (3000H) 5259H功能:功能:將源和目的操作數(shù)相加,結(jié)果送到目的操作數(shù)中,即將源和目的操作數(shù)相加,結(jié)果送到目的操作數(shù)中,即OPRD1OPRD2 OPRD1總結(jié):總結(jié):a、累加器累加器可以與可以與立即數(shù)、通用寄存器、存儲單元立即數(shù)、通用寄存器、存儲單元相加。相加。b、通用寄存器通用寄存器可以與可以與立即數(shù)、累加器、通用寄存器、存儲單元立即數(shù)、累加
11、器、通用寄存器、存儲單元相加。相加。c、存儲單元存儲單元可以與可以與立即數(shù)、累加器、通用寄存器立即數(shù)、累加器、通用寄存器相加相加d、無論、無論累加器,通用寄存器累加器,通用寄存器還是還是存儲單元存儲單元都都不能不能與與本身、控制寄存器、本身、控制寄存器、段寄存器相加段寄存器相加注意注意,源操作數(shù)和目的操作源操作數(shù)和目的操作數(shù)不能同時為數(shù)不能同時為存儲器存儲器,而且,而且它們的它們的類型必須一致類型必須一致,即都,即都是字節(jié)或字。是字節(jié)或字。 它們影響的標(biāo)它們影響的標(biāo)志位為:志位為:CF、OF、PF、SF、ZF和和AF。立即數(shù)立即數(shù)存存儲儲器器累加器累加器通 用通 用指 針指 針變 址變 址寄
12、存寄 存器器例:例:ADD WORD PTR BX+105AH, 1322H;已知(已知(BX)=1200H,(DS)=2000H,說明結(jié)果并表明各標(biāo)志位的變化。說明結(jié)果并表明各標(biāo)志位的變化。EABX+105AH=225AH物理地址物理地址20000H225AH=2225AH由源操作數(shù)是立即字?jǐn)?shù)看出是由源操作數(shù)是立即字?jǐn)?shù)看出是字字操作,因此結(jié)果要存放操作,因此結(jié)果要存放兩個單元兩個單元01000100B00110011B2225AH2225BHOPRD1=3344H計(jì)算:計(jì)算:00110011 01000100B 00010011 00100010B 01000110 01100110B466
13、6H ODITSZAPC15 12 11 10 9 8 7 6 5 4 3 2 1 0FLAGA=0,C=0,O=0,P=1,S=0,Z=02、ADC OPRD1,OPRD2功能:功能:OPRD1OPRD2CF OPRD1應(yīng)用范圍與應(yīng)用范圍與ADD相同相同例:設(shè),(例:設(shè),(AX)= 7365H, (BX)=1025H, (CX)=0E024H (DX)=0102H執(zhí)行指令執(zhí)行指令 ADD AX,CX;(;(AX)=5389H ,CF=1 ADC DX,BX;(;(DX)=1128H ,CF=0結(jié)果:結(jié)果: (AX)=5389H , (DX)=1128H,(,(BX)=1025H,(CX)=0
14、E024H 例:例:ADC AL ,BL ;已知(已知(AL)=0ABH,(BL)=0FFH,CF=1 10101011B+11111111B +1 10101011B=0ABHOF=0,AF=1,S=1,Z=0,P=0,CF=13、INC OPRD 增量指令(單操作數(shù))增量指令(單操作數(shù))功能:功能:對目的操作數(shù)加對目的操作數(shù)加1,結(jié)果送回目的操作數(shù)。即,結(jié)果送回目的操作數(shù)。即OPRD1 OPRD。目的操作數(shù)可以在目的操作數(shù)可以在通用寄存器通用寄存器或或內(nèi)存內(nèi)存中。中。指令執(zhí)行后影響指令執(zhí)行后影響AF、OF、PF、SF和和ZF,但但不影響不影響CF。例:例:INC BL INC CX例:對內(nèi)
15、存單元的內(nèi)容加例:對內(nèi)存單元的內(nèi)容加1必須說明該單元必須說明該單元的類型的類型 INC BYTE PTRBX INC WORD PTRBX用于修改地址、計(jì)數(shù)值、循環(huán)次數(shù)用于修改地址、計(jì)數(shù)值、循環(huán)次數(shù)11H22H33H44H5個個DATA1DATA222HCCHEEH10H5個個55H66H執(zhí)行后執(zhí)行后11H22H33H44H5個個DATA1DATA211HAAHBBHCCH5個個55H10H執(zhí)行前執(zhí)行前 55 44 33 22 11H+10CCBBAA11H 66 10 EECC22H 0 1 0 0 0 ; 每個字節(jié)加每個字節(jié)加 后進(jìn)位后進(jìn)位例:求兩個多字節(jié)例:求兩個多字節(jié)無符號數(shù)無符號數(shù)之
16、和。加數(shù)在之和。加數(shù)在DATA1開始的單元中,開始的單元中,被加數(shù)在被加數(shù)在DATA2開始的單元中,字節(jié)長度為開始的單元中,字節(jié)長度為5,和存放在,和存放在DATA2中中。程序框圖:程序框圖:源程序段:源程序段: MOV CX,5 MOV SI,0 CLCMOV AL,DATA1SILOP:ADC DATA2SI,ALINC SIDEC CXJNZ LOP HLT設(shè)置循環(huán)計(jì)數(shù)器設(shè)置循環(huán)計(jì)數(shù)器0送送CF,0送送SI取加數(shù)送取加數(shù)送AL結(jié)束結(jié)束被加數(shù)被加數(shù)+加數(shù)送加數(shù)送DATA2修改循環(huán)次數(shù)及指針修改循環(huán)次數(shù)及指針加完加完YN例:求兩個多字節(jié)例:求兩個多字節(jié)無符號數(shù)無符號數(shù)之和。加數(shù)在之和。加數(shù)在
17、DATA1開始的單元中,開始的單元中,被加數(shù)在被加數(shù)在DATA2開始的單元中,字節(jié)長度為開始的單元中,字節(jié)長度為5,和存放在,和存放在DATA2中中。減法指令減法指令1、SUB OPRD1,OPRD2功能:功能:OPRD1 OPRD2 OPRD12、SBB OPRD1,OPRD2 功能:功能:OPRD1 OPRD2 CF OPRD1這兩條指令均影響這兩條指令均影響AF、CF、OF、PF、SF和和ZF3、DEC OPRD 減量指令減量指令功能:功能:OPRD 1 OPRD執(zhí)行后執(zhí)行后不影響不影響 CF,但但影響影響 AF、OF、PF、SF和和ZF4、NEG OPRD 取負(fù)指令取負(fù)指令 功能:功能
18、:0 OPRD OPRD 指令執(zhí)行后影響指令執(zhí)行后影響AF、CF、OF、PF、SF和和 ZF。 若字節(jié)操作數(shù)為若字節(jié)操作數(shù)為80H( 128),),字操作數(shù)為字操作數(shù)為8000H( 32768),),執(zhí)行執(zhí)行NEG指令后操作數(shù)無變化,但指令后操作數(shù)無變化,但OF =1。如如操作數(shù)為操作數(shù)為0,執(zhí)行該指令后,結(jié)果仍為,執(zhí)行該指令后,結(jié)果仍為0,且,且CF =0,否則否則CF = 1。(二)減法指令(二)減法指令例:例: SUB BX,CX ;BX(BX)-(-(CX) SUB BP+2,CL ; (BP)+2 (BP)+2)-(-(CL) SUB AL,20 ;AL (AL)- -20 SUB
19、SI,5010H ;SI (SI)- -5010H SUB WORD PTR DI,1000H ; (DI)+1 (DI) (DI)+1)(DI)- -1000H 例例: SBB AX,2030H;執(zhí)行:執(zhí)行:AX (AX) 2030H CF SBB WORD PTR DI+2,1000H; (DI)+3 (DI)2 (DI+3)(DI2)- -1000H CF SBB DX, BX+20H 例例: DEC AX ;(AX)-1-1,結(jié)果送,結(jié)果送AXAX DEC BL ;BL (BL)-1-1 DEC BYTE PTR DI+2 ;將將DI+2所指向的一個字節(jié)的內(nèi)存單元減一所指向的一個字節(jié)的
20、內(nèi)存單元減一例:例:NEG AL ;對對AL中的數(shù)求補(bǔ)中的數(shù)求補(bǔ)(相反數(shù)相反數(shù)),結(jié)果送,結(jié)果送AL NEG CX ;對對CX中的數(shù)求補(bǔ),結(jié)果送中的數(shù)求補(bǔ),結(jié)果送CX 已知已知AL=00010001B=11H=+17補(bǔ)補(bǔ)NEG AL ;AL=11101111B0EFH=-17補(bǔ)補(bǔ)回憶回憶“求補(bǔ)求補(bǔ)”,已知一個數(shù)的補(bǔ)碼,求其相反數(shù)的補(bǔ)碼就是,已知一個數(shù)的補(bǔ)碼,求其相反數(shù)的補(bǔ)碼就是將其將其連同符號位按位取反連同符號位按位取反后后再加一再加一。因此:取補(bǔ)的功能就是取得因此:取補(bǔ)的功能就是取得原數(shù)的相反數(shù)原數(shù)的相反數(shù)的補(bǔ)碼。的補(bǔ)碼。例:內(nèi)存數(shù)據(jù)段存放了例:內(nèi)存數(shù)據(jù)段存放了200個個帶符號帶符號字節(jié)字節(jié)
21、數(shù),首地址為數(shù),首地址為TAB1,要求將各數(shù),要求將各數(shù)取絕對值后存入以取絕對值后存入以TAB2為首地址的內(nèi)存區(qū)為首地址的內(nèi)存區(qū)分析:若為正,不變;若為負(fù),分析:若為正,不變;若為負(fù),負(fù)負(fù) 正正。相當(dāng)于取負(fù)數(shù)的相反數(shù),。相當(dāng)于取負(fù)數(shù)的相反數(shù),可以用可以用 NEG指令指令LEA SI,TAB1LEA DI,TAB2MOV CX,200 ; 程序的初始化部分程序的初始化部分AGAIN:MOV AL,SI CMP AL,0 JGE NEXT NEG ALNEXT:MOV DI,AL INC SI INC DI DEC CX JNZ AGAIN HLT例例1:設(shè)(:設(shè)(DX)= 3A49H,CF =1
22、 執(zhí)行指令執(zhí)行指令 SBB DX,1850H 執(zhí)行結(jié)果執(zhí)行結(jié)果 (DX)= 21F8H,CF=0 例例2:已知(:已知(AL)= 13H 執(zhí)行指令執(zhí)行指令 NEG AL 執(zhí)行結(jié)果執(zhí)行結(jié)果 (AL)= 0EDH 以上以上5條指令實(shí)際上都做減法操作,而且都可以進(jìn)行條指令實(shí)際上都做減法操作,而且都可以進(jìn)行字字或或字字節(jié)節(jié)運(yùn)算。對于雙操作數(shù)指令,源操作數(shù)可以是運(yùn)算。對于雙操作數(shù)指令,源操作數(shù)可以是寄存器、存儲器寄存器、存儲器或立即數(shù)或立即數(shù);目的操作數(shù)可以是;目的操作數(shù)可以是寄存器或存儲器寄存器或存儲器,但,但不能是立即不能是立即數(shù)數(shù),而且,而且兩個操作數(shù)不能同時為存儲器兩個操作數(shù)不能同時為存儲器。
23、對于單操作數(shù)指令,對于單操作數(shù)指令,目的操作數(shù)可以是寄存器或存儲器目的操作數(shù)可以是寄存器或存儲器,但但不能立即數(shù)不能立即數(shù), 如果如果操作數(shù)是存儲器操作數(shù)是存儲器,還必須,還必須指出其類型指出其類型。5、比較指令、比較指令 CMP OPRD1,OPRD2 功能:功能: 將目的操作數(shù)減去源操作數(shù),將目的操作數(shù)減去源操作數(shù),但不送結(jié)果但不送結(jié)果,僅將,僅將結(jié)果反結(jié)果反映在標(biāo)志位映在標(biāo)志位上,上, 接著可用接著可用條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令決定程序的流向。決定程序的流向。 比較指令主要比較兩個數(shù)之間的關(guān)系,而又不破壞原操作數(shù)。比較指令主要比較兩個數(shù)之間的關(guān)系,而又不破壞原操作數(shù)。即兩者是否相等,或兩個
24、中哪一個大。一般有下列幾種情況:即兩者是否相等,或兩個中哪一個大。一般有下列幾種情況:* 在比較指令之后,根據(jù)在比較指令之后,根據(jù)ZF標(biāo)志即可標(biāo)志即可判斷兩者是否相等判斷兩者是否相等。若若兩者相等兩者相等,執(zhí)行,執(zhí)行CMP指令后,指令后,ZF=1,否則為否則為0。* 若是兩個無符號數(shù)進(jìn)行比較,則在比較指令之后,可根據(jù)若是兩個無符號數(shù)進(jìn)行比較,則在比較指令之后,可根據(jù)CF的狀態(tài)判斷大小的狀態(tài)判斷大小。* 若是判斷兩個帶符號數(shù)的大小,可根據(jù)若是判斷兩個帶符號數(shù)的大小,可根據(jù) SF和和OF進(jìn)行判斷進(jìn)行判斷。 在執(zhí)行在執(zhí)行CMP AX,BX后后 1、當(dāng)無溢出(當(dāng)無溢出(OF=0),),若若SF=0,則
25、則AX BX;否則否則AXBX。 2、當(dāng)產(chǎn)生溢出(當(dāng)產(chǎn)生溢出(OF =1),),若若SF =0,則則AXBX。 即:即:OF “異或異或” SF =0,則則AXBX; OF “異或異或” SF =1,則則AXB/AB/AB 無符號無符號 JAE/JBE AB/AB JNA/JNB AB/ AB JNAE/JNBE AB JG/JL AB/AB JGE/JLE AB/AB帶符號數(shù)帶符號數(shù) JNG/JNL AB /AB JNGE/JNLE AB初始化,循環(huán)次數(shù)初始化,循環(huán)次數(shù)99取第一個數(shù)數(shù)送取第一個數(shù)數(shù)送AX結(jié)束結(jié)束比較完畢?比較完畢?YN將下一個數(shù)與將下一個數(shù)與AX比較比較修改循環(huán)次數(shù)及指針修
26、改循環(huán)次數(shù)及指針將大數(shù)送往將大數(shù)送往AXNY將大數(shù)送往將大數(shù)送往MAX如果如果AX大大例:在例:在BLOCK開始的內(nèi)存單元中有開始的內(nèi)存單元中有100個個16位位帶符號數(shù),請尋找出最大值帶符號數(shù),請尋找出最大值并送并送MAX單元。單元。例:在例:在BLOCK開始的內(nèi)存單元中有開始的內(nèi)存單元中有100個個16位位帶符號數(shù),請尋找出最大值并帶符號數(shù),請尋找出最大值并送送MAX單元。單元。 DEC CX ;比較次數(shù)減一;比較次數(shù)減一 JNZ AGAIN ;未完,繼續(xù);未完,繼續(xù) MOV BX,OFFSET BLOCK;設(shè)置塊指針;設(shè)置塊指針 MOV AX,BX ;取一數(shù)送;取一數(shù)送AX INC BX
27、 ;修改指針;修改指針 INC BX MOV CX,99 ;設(shè)置比較次數(shù);設(shè)置比較次數(shù)AGAIN:CMP AX,BX ;比較;比較 JG NEXT ;AXBX轉(zhuǎn)轉(zhuǎn)NEXT MOV AX,BX ;小于,則大數(shù)送小于,則大數(shù)送AXNEXT: INC BX ;修改指針;修改指針 INC BX MOV MAX,AX ;完,則存大數(shù);完,則存大數(shù) HLT例:在例:在BLOCK開始的內(nèi)存單元中有開始的內(nèi)存單元中有100個個16位位帶符號數(shù),請尋找出最大值并帶符號數(shù),請尋找出最大值并送送MAX單元。單元。 DEC CX ;比較次數(shù)減一;比較次數(shù)減一 JNZ AGAIN ;未完,繼續(xù);未完,繼續(xù) MOV BX
28、,OFFSET BLOCK;設(shè)置塊指針;設(shè)置塊指針 MOV AX,BX ;取一數(shù)送;取一數(shù)送AX MOV CX,99 ;設(shè)置比較次數(shù);設(shè)置比較次數(shù)AGAIN:CMP AX,BX ;比較;比較 JG NEXT ;AXBX轉(zhuǎn)轉(zhuǎn)NEXT MOV AX,BX ;小于,則大數(shù)送小于,則大數(shù)送AXNEXT: MOV MAX,AX ;完,則存大數(shù);完,則存大數(shù) HLT INC BX ;修改指針;修改指針 INC BXBUF1和和BUF2單元開始,存放兩個各為單元開始,存放兩個各為8字節(jié)的壓縮字節(jié)的壓縮BCD數(shù),數(shù),低對低,求兩數(shù)和,和放到低對低,求兩數(shù)和,和放到BUF3開始單元。開始單元。壓縮的壓縮的BCD
29、碼碼:一個字節(jié)一個字節(jié)可表示可表示兩個兩個BCDBCD數(shù)數(shù)一個字節(jié)一個字節(jié)BCD1BCD0高高4位位低低4位位7 4 3 0回憶:回憶:BCD數(shù)的分類數(shù)的分類0000BCD非壓縮非壓縮BCD碼碼:一個字節(jié)一個字節(jié)只表示只表示一個一個BCDBCD數(shù)數(shù)BCD可以分為下列兩種:可以分為下列兩種:十進(jìn)制數(shù)十進(jìn)制數(shù)壓縮壓縮BCD非壓縮非壓縮BCD 00000 0000 0000 0000 10000 0001 0000 000120000 0010 0000 0010 90000 1001 0000 1001 100001 0000 00000001 00000000 110001 0001 00000
30、001 00000001 120001 0010 00000001 00000010例:例:4545 54 54 0100 0101B0100 0101B + 0101 0100B + 0101 0100B991001 1001 B 結(jié)果正確結(jié)果正確 A=0,C=0例例45455555 0100 0101B + 0101 0101B9A1001 1010B結(jié)果結(jié)果非法非法BCD不正確不正確+ 110B 個位加個位加6修正修正1010 0000B A0 結(jié)果還不正確結(jié)果還不正確 A=11 0000 0000B =100 結(jié)果正確結(jié)果正確 + 110 B 十位加十位加6修正修正BCDBCD碼加法的
31、規(guī)則:碼加法的規(guī)則: n兩個兩個BCDBCD數(shù)對應(yīng)的數(shù)對應(yīng)的BCDBCD碼位用二進(jìn)制加法相加,若產(chǎn)碼位用二進(jìn)制加法相加,若產(chǎn)生的生的和小于和小于1010則則保持不變保持不變,結(jié)果正確結(jié)果正確;如果;如果產(chǎn)生的產(chǎn)生的和和1010,非法,非法BCDBCD數(shù),則在數(shù),則在和數(shù)上作加和數(shù)上作加6 6修正修正n兩個兩個BCDBCD數(shù)對應(yīng)的數(shù)對應(yīng)的BCDBCD碼位用二進(jìn)制加法相加后,如碼位用二進(jìn)制加法相加后,如果果向高位向高位BCDBCD碼產(chǎn)生了進(jìn)位碼產(chǎn)生了進(jìn)位,說明說明逢十六進(jìn)一逢十六進(jìn)一,丟掉,丟掉了了6 6,所以也要作,所以也要作加加6 6修正修正。加。加6 6修正的修正的原因原因是:是:BCDBC
32、D數(shù)實(shí)際上就是數(shù)實(shí)際上就是十進(jìn)制數(shù)十進(jìn)制數(shù)的另一種表示方法,因該保的另一種表示方法,因該保持逢十進(jìn)一持逢十進(jìn)一4、AAA 未組合未組合BCD碼加法調(diào)整指令碼加法調(diào)整指令功能:功能:在用在用ADD或或ADC指令對指令對兩個未組合兩個未組合BCD碼作加法后,運(yùn)碼作加法后,運(yùn)算結(jié)果已存在算結(jié)果已存在AL中,用中,用AAA指令對指令對AL中的數(shù)據(jù)進(jìn)行調(diào)整,中的數(shù)據(jù)進(jìn)行調(diào)整,產(chǎn)生一個產(chǎn)生一個未組合的十進(jìn)制未組合的十進(jìn)制和和放在放在AX中。中。例:實(shí)現(xiàn)兩個例:實(shí)現(xiàn)兩個未組合未組合十進(jìn)制數(shù)加法運(yùn)算。設(shè)十進(jìn)制數(shù)加法運(yùn)算。設(shè)AL = 08H , BL = 07H ADD AL,BL;AAA ;(AL) = 0F
33、H(AX) = 0105H未組合十進(jìn)制數(shù)的和放在未組合十進(jìn)制數(shù)的和放在AX中中。 0000100000000111 00001111 0FH10,非法非法BCD數(shù)數(shù)0110 加加6調(diào)整調(diào)整1000001010105H因?yàn)槭且驗(yàn)槭俏唇M合的未組合的BCD,輔助進(jìn)位的,輔助進(jìn)位的1到到高位高位字節(jié)里,即要字節(jié)里,即要進(jìn)位到進(jìn)位到AH中中5、DAA 組合組合BCD碼加法調(diào)整指令碼加法調(diào)整指令例:實(shí)現(xiàn)兩個組合十進(jìn)制數(shù)加法運(yùn)算。設(shè)例:實(shí)現(xiàn)兩個組合十進(jìn)制數(shù)加法運(yùn)算。設(shè)(AL) =28H, (BL )=68H執(zhí)行 ADD AL,BL; (AL) = 90H, CF = 0, AF = 1 DAA ; (AL)
34、06H AL,(AL) = 96H結(jié)果結(jié)果 (AL) = 96H, CF = 0, AF = 0。功能:功能:將兩個將兩個組合組合BCD碼碼相加后,存放在相加后,存放在AL中的結(jié)果,調(diào)整為中的結(jié)果,調(diào)整為正確的組合正確的組合BCD數(shù)。數(shù)。 DAA指令要緊跟在指令要緊跟在ADD或或ADC指令指令之后使用,以實(shí)現(xiàn)組合的十進(jìn)制數(shù)加法運(yùn)算。之后使用,以實(shí)現(xiàn)組合的十進(jìn)制數(shù)加法運(yùn)算。 00101000B01101000B 10010000B ,A=1,結(jié)果不正確結(jié)果不正確0110B ,加加6調(diào)整調(diào)整 10010110B ,得,得96,結(jié)果正確,結(jié)果正確 例例 98+7798+77 10011000 + 0
35、1110111 10F100001111結(jié)果結(jié)果非法非法BCDC=1(等同于等同于AAA對對A=1)不正確不正確+ 01100110 低位高位都加低位高位都加6修正修正101110101 =175 結(jié)果正確結(jié)果正確 mov al,68hmov al,68h;al=68hal=68h,壓縮,壓縮BCDBCD碼表示真值碼表示真值6868mov bl,28hmov bl,28h;bl=28hbl=28h,壓縮,壓縮BCDBCD碼表示真值碼表示真值2828add al,bladd al,bl;二進(jìn)制加法:;二進(jìn)制加法:al=68h+28h=90hal=68h+28h=90hdaadaa;十進(jìn)制調(diào)整:;
36、十進(jìn)制調(diào)整:al=96hal=96h;實(shí)現(xiàn)壓縮;實(shí)現(xiàn)壓縮BCDBCD碼加法:碼加法:6868282896967、DAS 組合組合BCD碼減法調(diào)整指令碼減法調(diào)整指令 功能:在兩個功能:在兩個組合十進(jìn)制數(shù)組合十進(jìn)制數(shù)用用SUB或或SBB相減后,結(jié)果已存放相減后,結(jié)果已存放在在AL中的情況下,用中的情況下,用 DAS對對AL進(jìn)行調(diào)整,在進(jìn)行調(diào)整,在AL中得到正中得到正確的組合十進(jìn)制數(shù)。確的組合十進(jìn)制數(shù)。影響影響AF、CF、PF、SF、ZF。對對OF 未定義。未定義。例:例:72312958,編制程序,結(jié)果送回,編制程序,結(jié)果送回AX。MOV AX,7231 H MOV BX,2958H ;初始化部分
37、。初始化部分。SUB AL,BLDAS ;低位相減,并作十進(jìn)制數(shù)調(diào)整;低位相減,并作十進(jìn)制數(shù)調(diào)整MOV CL,AL ;將;將AL中的數(shù)暫存中的數(shù)暫存MOV AL,AH ;為高位相減準(zhǔn)備,因?yàn)?;為高位相減準(zhǔn)備,因?yàn)镈AS 只能對只能對AL中中的數(shù)進(jìn)行操作的數(shù)進(jìn)行操作SBB AL,BH ;對高位相減,防止低位相減向上對高位相減,防止低位相減向上有借位有借位DAS ;調(diào)整調(diào)整MOV AH,ALMOV AL,CL ;送回結(jié)果,保存在;送回結(jié)果,保存在AX中中HLT模仿上個例題,編程:模仿上個例題,編程:當(dāng)當(dāng) AX=4866H(BCD),BX=2992H(BCD),相加,結(jié)果送回到相加,結(jié)果送回到AX中
38、中ADD AL,BLDAAMOV CL,ALMOV AL,AHADC AL,BHDAAMOV AH,ALMOV AL,CLHLTMOV AX,4866H MOV BX,2992H ;初始化部分。初始化部分。mov al,68hmov al,68h;al=68hal=68h,壓縮,壓縮BCDBCD碼表示真值碼表示真值6868mov bl,28hmov bl,28h;bl=28hbl=28h,壓縮,壓縮BCDBCD碼表示真值碼表示真值2828sub al,blsub al,bl;二進(jìn)制減法:;二進(jìn)制減法:al=68h-28h=40hal=68h-28h=40hdasdas;十進(jìn)制調(diào)整:;十進(jìn)制調(diào)整
39、:al=40hal=40h;實(shí)現(xiàn)壓縮;實(shí)現(xiàn)壓縮BCDBCD碼加法:碼加法:68-2868-284040mov ax,1234hmov ax,1234hmov bx,4612hmov bx,4612hsub al,blsub al,bldasdas;34-1234-122222,CFCF0 0 xchg al,ahxchg al,ahsbb al,bhsbb al,bhdasdas;12-4612-466666,CF=1CF=1xchg al,ahxchg al,ah;1 12341 12344612461266226622(三)乘法指令(三)乘法指令1、無符號數(shù)乘法指令無符號數(shù)乘法指令MUL
40、src 功能:完成將功能:完成將AL(字節(jié))或字節(jié))或AX(字)中的字)中的無符號無符號數(shù)數(shù)與源操作數(shù)相乘。與源操作數(shù)相乘。 雙倍長度的乘積雙倍長度的乘積送回到送回到AX或或DX:AX。影響標(biāo)志位影響標(biāo)志位CF、OF。 若乘積的高半部分(在字節(jié)相乘時為若乘積的高半部分(在字節(jié)相乘時為AH,在字相乘在字相乘時為時為DX)不為零,則標(biāo)志不為零,則標(biāo)志CF=1,OF=1; 否則否則CF=0,OF=0。 字節(jié)操作數(shù):字節(jié)操作數(shù):(AL) (src) AX 字操作數(shù):字操作數(shù):(AX) (src) DX:AX例:設(shè)(例:設(shè)(AL)=90H,(,(BL)=04H。執(zhí)行指令執(zhí)行指令MUL BL后,后, (A
41、X)=0240H,CF =1, OF =110010000B41001000000B0240H2、帶符號數(shù)乘法指令帶符號數(shù)乘法指令I(lǐng)MUL src 功能:完成兩個功能:完成兩個帶符號帶符號數(shù)相乘,數(shù)相乘, 操作及對標(biāo)志位的影響與操作及對標(biāo)志位的影響與MUL指令完全類似。指令完全類似。3、AAM功能:把在功能:把在AX中的兩個中的兩個未組合十進(jìn)制數(shù)未組合十進(jìn)制數(shù)相乘的相乘的結(jié)果結(jié)果,進(jìn)行,進(jìn)行十進(jìn)十進(jìn)制數(shù)的調(diào)整制數(shù)的調(diào)整,使得在,使得在AX中得到正確的未組合十進(jìn)制數(shù)的乘積。中得到正確的未組合十進(jìn)制數(shù)的乘積。指令執(zhí)行后影響標(biāo)志位指令執(zhí)行后影響標(biāo)志位 PF、SF、ZF,對對AF、CF、OF 未定義。
42、未定義。例:設(shè)(例:設(shè)(AL)= 09H,(,(BH)=06H 執(zhí)行執(zhí)行 MUL BL;(;(AL)= 36HAAM;調(diào)整得調(diào)整得 (AH)= 05H,(,(AL)= 04H 即即 (AX)= 0504H 為未組合十進(jìn)制數(shù)為未組合十進(jìn)制數(shù)09和和06相乘的結(jié)果相乘的結(jié)果54功能:對兩個功能:對兩個無符號數(shù)無符號數(shù)進(jìn)行除法運(yùn)算。源進(jìn)行除法運(yùn)算。源操作數(shù)可以是字節(jié)或字。操作數(shù)可以是字節(jié)或字。字節(jié)操作數(shù):(字節(jié)操作數(shù):(AX)/( src )()(字節(jié))的商字節(jié))的商 AL(最大為最大為FFH),),余數(shù)余數(shù)AH字操作數(shù)字操作數(shù):(DX:AX)/( src )()(字)的商字)的商AX(最大為最大為FFFFH),),余數(shù)余數(shù)DX若被除數(shù)只有若被除數(shù)只有16位,除數(shù)也是位,除數(shù)也是16位,則必須將位,則必須將16位被除數(shù)送位被除數(shù)送AX,并將并將DX清清0,然后相除。然后相除。DIV指令執(zhí)行后,所有標(biāo)志位均無定義。指令執(zhí)行后,所有標(biāo)志位均無定義。(四)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度電子煙具噴漆定制合同
- 2025年度苗木種植基地綠色認(rèn)證合作合同4篇
- 2025年版城市綠地門衛(wèi)及環(huán)境安全維護(hù)合同4篇
- 2025年個人住宅防水工程驗(yàn)收合同范本2篇
- 二零二五年度棉被產(chǎn)品展示與體驗(yàn)店合作經(jīng)營合同4篇
- 2025年度個人二手房買賣合同售后服務(wù)與糾紛調(diào)解協(xié)議
- 2025年度個人旅游保險合同范本6篇
- 2025年度民間汽車質(zhì)押借款電子支付合同范本3篇
- 2025年度豪華品牌個人二手車買賣合同范本2篇
- 2025年度擬上公司與會計(jì)事務(wù)所財(cái)務(wù)信息處理保密合同4篇
- 湖南省長沙市2025年新高考適應(yīng)性考試生物學(xué)模擬試題(含答案)
- 海洋工程用高性能建筑鋼材的研發(fā)
- 蘇教版2022-2023學(xué)年三年級數(shù)學(xué)下冊開學(xué)摸底考試卷(五)含答案與解析
- 英語48個國際音標(biāo)課件(單詞帶聲、附有聲國際音標(biāo)圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫安全管理制度
- 2023同等學(xué)力申碩統(tǒng)考英語考試真題
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 在雙減政策下小學(xué)音樂社團(tuán)活動有效開展及策略 論文
- envi二次開發(fā)素材包-idl培訓(xùn)
- 醫(yī)院手術(shù)室醫(yī)院感染管理質(zhì)量督查評分表
評論
0/150
提交評論