版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、指令系1. 數(shù)據(jù)傳送指令2. 算術(shù)運(yùn)算指令3. 邏輯運(yùn)算和移位指令4. 串操作指令5. 轉(zhuǎn)移指令6. 處理器控制指令立即數(shù)立即數(shù) 格式格式: IN AL, DX ; AL (DX) IN AX, DX ; AX (DX+1,DX) OUT DX,AL ; (DX) AL OUT DX,AX ; (DX+1,DX) AX 在間接輸入輸出指令之前,需將端口號送入DX寄存器。 MOV DX, XXXXH;例例 OUT85H,AL;85H端口AL內(nèi)容MOVDX,0FF4H;端口地址DX=0FF4HOUTDX,AL;FF4H端口AL內(nèi)容 MOVDX,300H;DX指向300H OUTDX,AX;300H
2、端口 AL內(nèi)容, 301H端口AH內(nèi)容l讀取標(biāo)志指令 : LAHF (5、3、0為任意值) 標(biāo)志寄存器低8位 AHl設(shè)置標(biāo)志指令: SAHF 標(biāo)志寄存器低8位 AH,影響影響PSWl把標(biāo)志寄存器的內(nèi)容壓入堆棧:PUSHFl從堆棧彈出到標(biāo)志寄存器:POPF, 影響影響PSW15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7 D6D4D2D0數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 LAHF 標(biāo)志送到標(biāo)志送到AH指令指令(Load AH from Flag) 指令格式:指令格式: LAHF 指令功能指令功能:標(biāo)志寄存器SF、ZF、AF、PF和和CF AH寄存器的位寄存器的位7、6、4、2和和0。
3、注意注意: 位5、3、1的內(nèi)容未定義未定義,是任意值。 執(zhí)行這條指令后,標(biāo)志位本身并不受影響標(biāo)志位本身并不受影響。 這5個標(biāo)志送進(jìn)AH后,AH便相當(dāng)于80808085的標(biāo)志寄存器, 從而能對80808085程序進(jìn)行轉(zhuǎn)換,使它們能運(yùn)行在80868088系統(tǒng)上。15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 指令格式:指令格式:SAHF 指令功能:指令功能: AH內(nèi)容內(nèi)容 標(biāo)志寄存器標(biāo)志寄存器。 注意:注意: 位5、3、1的內(nèi)容未定義,是任意值。 執(zhí)行這條指令后,高位標(biāo)志并不受影響高位標(biāo)志并不受影響。 為80808085提供兼容性。15
4、11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令PUSHF標(biāo)志入棧指令標(biāo)志入棧指令(Push Flag onto Stack) 指令格式:指令格式:PUSHF 指令功能:指令功能:將標(biāo)志寄存器PSW中的內(nèi)容 壓入堆棧; 并修改堆棧指針,使SPSP2; 指令執(zhí)行后對標(biāo)志位無影響。指令執(zhí)行后對標(biāo)志位無影響。POPF標(biāo)志出棧指令標(biāo)志出棧指令(Pop Flag off Stack) 指令格式:指令格式:POPF 指令功能:指令功能:將將堆棧指針SP所指的一個字彈入標(biāo)志寄存器PSW;并修改堆棧指針,使SPSP2。 注意:注意:要成對使用PUSHF和PO
5、PF,可對標(biāo)志寄存器進(jìn)行保存和恢復(fù)。常用在:過程(子程序)調(diào)用,中斷服務(wù)程序,對主程序的狀態(tài)(即標(biāo)志位)進(jìn)行保護(hù)。也可用來改變追蹤標(biāo)志TF。在8086指令系統(tǒng)中沒有直接改變TF(D8位)的指令。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令可處理算術(shù)運(yùn)算指令可處理4 4種類型的數(shù):種類型的數(shù):l無符號二進(jìn)制整數(shù)l帶符號二進(jìn)制整數(shù)l無符號壓縮十進(jìn)制整數(shù)(Packed Decimal)l無符號非壓縮十進(jìn)制整數(shù)(Unpacked Decimal)一個8位二進(jìn)制數(shù)可看成4種不同類型的數(shù),所表示的數(shù)值亦不同。數(shù)的表示:數(shù)的表示:l二進(jìn)制數(shù):可以是8位或16位,若是帶符號數(shù),則用補(bǔ)碼
6、表示。l壓縮十進(jìn)制數(shù):一個字節(jié)中存放兩個BCD碼十進(jìn)制數(shù)。l非壓縮十進(jìn)制數(shù):個字節(jié)的低半字節(jié)存放十進(jìn)制數(shù),高半字節(jié)為全零。例如,對十進(jìn)制數(shù)字58:壓縮十進(jìn)制數(shù)表示:只需一個字節(jié),即 0101 1000B;非壓縮十進(jìn)制數(shù)表示:需兩個字節(jié),即 0000 0101B 和 0000 1000B。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令l加、減、乘、除運(yùn)算指令加、減、乘、除運(yùn)算指令:處理無符號或帶符號的8位/16位二進(jìn)制數(shù)的算術(shù)運(yùn)算;l調(diào)整操作指令調(diào)整操作指令:進(jìn)行壓縮的或非壓縮的十進(jìn)制數(shù)的算術(shù)運(yùn)算;l加法和減法運(yùn)算指令加法和減法運(yùn)算指令:帶符號數(shù)和無符號數(shù)的加法和減法的運(yùn)算可以用同一條加法或減法指令來完成。l乘法和除
7、法運(yùn)算乘法和除法運(yùn)算:分別設(shè)置無符號數(shù)和帶符號數(shù)的乘、除法指令乘、除法指令。絕大部分算術(shù)運(yùn)算指令都影響狀態(tài)標(biāo)志位。絕大部分算術(shù)運(yùn)算指令都影響狀態(tài)標(biāo)志位。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令算術(shù)邏輯指令算術(shù)邏輯指令(Addition) ADD加法指令加法指令(Addition) 指令格式:ADD 目的,目的, 源源 指令功能:目的 源 十 目的 ADC帶進(jìn)位的加法指令帶進(jìn)位的加法指令(Addition with Carry) 指令格式:ADC 目的,目的, 源源 指令功能:目的 源 十 目的 十 CF注意:注意:l源操作數(shù)可以是寄存器、存儲器、立即數(shù);l目的操作數(shù):只能用寄存器、存儲單元。l源、目的操作數(shù)不
8、能同時(shí)為存儲器,且類型必須一致,均為字節(jié)或字;l這兩條指令影響的標(biāo)志位為:CF、OF、PF、SF、ZF和AF。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令例:兩種加法指令的實(shí)例例:兩種加法指令的實(shí)例 ADD AL,18H ;AL AL十18H ADC BL,CL ;BL BL十CL十CF ADC AX,DX ;AX AX十DX十CF ADD AL,COSTBX ;AL內(nèi)容和地址DS:(COST+BX)的存儲字節(jié) ;相加,結(jié)果送AL ADD COSTBX,BL;將BL與物理地址DS:(COST十BX)的存儲字 節(jié)相加,結(jié)果留在該存儲單元中例例 :用加法指令對兩個8位16進(jìn)制數(shù)5EH和3CH求
9、和,并分析加法運(yùn)算指令執(zhí)行后對標(biāo)志位的影響。 解:MOV AL,5EH ;AL5EH(94) MOV BL,3CH ;BL3CH(60) ADD AL, BL ;結(jié)果AL9AH算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令討論討論ADD對標(biāo)志位的影響:對標(biāo)志位的影響:兩個數(shù)的相加過程:兩個數(shù)的相加過程: 0101 1110 5EH = 94 + 0011 1100 即: + 3CH = 60 1001 1010 9AH = 154運(yùn)算后標(biāo)志位:ZF0,AF1,CF0,SFl,PF1,OF1。對標(biāo)志的解釋(人為決定):對標(biāo)志的解釋(人為決定):兩個加數(shù)都看成無符號數(shù)無符號數(shù)時(shí),運(yùn)算結(jié)果為9AH,即十進(jìn)制數(shù)154。在這
10、種情況下,SF和OF都沒有意義沒有意義,我們只關(guān)心關(guān)心ZF和和CF標(biāo)志,在BCD碼運(yùn)算或奇偶校驗(yàn)時(shí)才考慮AF或PF標(biāo)志。兩個加數(shù)都當(dāng)成帶符號數(shù)帶符號數(shù)時(shí),符號標(biāo)志SF和溢出標(biāo)志OF很重要很重要,而進(jìn)位標(biāo)志CF沒有意義沒有意義。帶符號數(shù)能表示的范圍-128+127,而本例中,兩個正數(shù)94和60相加,其和為154,由于154超過了范圍,即產(chǎn)生了溢出,OF1算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 INC增量指令增量指令(Increment) 指令格式:INC 目的目的 指令功能:目的 目的 十1 操作數(shù)的要求:通用寄存器、內(nèi)存。注意:注意:這條指令主要用在循環(huán)程序中,對地址指針和循環(huán)計(jì)數(shù)器等進(jìn)行修改;指令執(zhí)行后影
11、響影響AF、OF、PF、SF和和ZF,但不影響進(jìn)位標(biāo)志不影響進(jìn)位標(biāo)志CF。該指令只有一個操作數(shù)時(shí),如果要使內(nèi)存單元內(nèi)存單元的內(nèi)容增增1,程序中必須說說明明該存儲單元是字還是字節(jié)字還是字節(jié)。 例 INC BL ;BL寄存器中內(nèi)容增1 INC CX ;CX寄存器中內(nèi)容增1 INC BYTE PRRBX ;內(nèi)存字節(jié)單元內(nèi)容增1 INC WORD PTRBX ;內(nèi)存字單元內(nèi)容增1 其中,PTR為類型說明符為類型說明符,前面加BYTE說明操作數(shù)類型為字節(jié),加WORD則說明操作數(shù)類型為字字。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 AAA加法的加法的ASCII調(diào)整指令調(diào)整指令(ASCII Adjust for Addit
12、ion) 指令格式:AAA 指令功能:在用ADD或ADC指令對兩個非壓縮十進(jìn)制數(shù)或ASCII碼表示的十進(jìn)制數(shù)作加法后,運(yùn)算結(jié)果已存在AL中,用此指令將用此指令將AL寄存器中的運(yùn)算寄存器中的運(yùn)算結(jié)果調(diào)整為一位非壓縮十進(jìn)制數(shù),仍保留在結(jié)果調(diào)整為一位非壓縮十進(jìn)制數(shù),仍保留在AL中中。如果AF1,表示向高位有進(jìn)位,則進(jìn)到AH寄存器中。(注:非壓縮十進(jìn)制數(shù)的高4位為全0,低4位為十進(jìn)制數(shù)字09。例如,將9表示成0000 1001) 調(diào)整過程: 若AL低4位9或AF1 則:ALAL十6 用與操作()將AL高4位清0 AF置1,CF置1,AHAH十l 否則,僅將AL寄存器的高4位清0。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指
13、令例例 若ALBCD 9,BLBCD 5,求兩數(shù)之和。解:設(shè)AH0,則運(yùn)算過程如下: ADD AL,BL ; 0000 10019 ; + 0000 01015 AAA ; 0000 1110低4為9 ; + 0000 0110加6調(diào)整 ; 0001 0100 ; 0000 1111清高4位 ; 0000 0100AL=4 ; CF=1,AF=1,AH=1 ; 結(jié)果為AX0104H,表示非壓縮十進(jìn)制數(shù)14 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令例例 求ASCII碼表示的數(shù)9(39H)與5(35H)之和。 設(shè)AH0,則運(yùn)算過程如下:MOV AL, 9 ; AL=39HMOV BL, 5 ; BL=35HADD
14、 AL, BL ; 0011 10019 ; + 0011 01015 AAA ; 0110 1110低4為9 ; + 0000 0110加6調(diào)整 ; 0111 0100 ; 0000 1111清高4位 ; 0000 0100AL=4 ; CF=1,AF=1,AH=1 ; 結(jié)果為AX0104H,表示非壓縮十進(jìn)制數(shù)14 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 DAA加法的十進(jìn)制調(diào)整指令加法的十進(jìn)制調(diào)整指令(Decimal Adjust for Addition) 指令格式:DAA 指令功能:將兩個壓縮BCD數(shù)相加后的結(jié)果調(diào)整為正確的壓縮BCD數(shù)。注意:注意:相加后的結(jié)果必須在AL中,才能使用DAA指令。 調(diào)整
15、過程: 若AL的低4位9或AF1, 則AL AL十6,對低4位進(jìn)行調(diào)整; 若此時(shí)AL的高4位9或CF1, 則AL AL十60H,對高4位進(jìn)行調(diào)整,并使CF置1,否則CF置0。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令例例 若若ALALBCD 88BCD 88,BLBLBCD 49BCD 49,求兩數(shù)之和,求兩數(shù)之和。解 運(yùn)算過程為:MOV AL, 88H ; AL=88HMOV BL, 49H ; BL=49HADD AL, BL ; 1000 100088 ; + 0100 100149 DAA ; 1101 0001AF=1 ; + 0000 0110加6調(diào)整 ; 1101 0111調(diào)整后高半字節(jié)9 ; +
16、 0110 0000加60H調(diào)整 ; 0011 0111結(jié)果為ALBCD 37,CF=1 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令(Subtration) SUB減法指令減法指令(Subraction) 指令格式:指令格式: SUB 目的,源目的,源 指令功能:指令功能: 目的 目的源 例例 SUB AX,BX ;AX AX-BX SUB DX,1850H ;DX DX-1850H SUB BL,BX ;BL中內(nèi)容減去物理地址DS:(BX)處的字節(jié),結(jié)果存入BL SBB帶借位的減法指令帶借位的減法指令(Subtract with Borrow) 指令格式:SBB 目的,源 指令功能:目的 目的源CF (SBB
17、主要用于多字節(jié)減法中)例例 SBB AL,CL;AL ALCLCF算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 DEC減量指令減量指令(Decrement) 指令格式:指令格式:DEC 目的目的 指令功能指令功能:目的 目的-l 例例 DEC BX;BX BX-1 DEC WORD PTRBP;堆棧段中位于BP偏置處的字減1 NEG取負(fù)指令取負(fù)指令(Negate) 指令格式:指令格式:NEG 目的目的 指令功能:指令功能:目的 0目的,即對目的操作數(shù)取負(fù) 例例 NEG AX ;將AX中的數(shù)取負(fù) NEG BYTE PTRBX ;對數(shù)據(jù)段中位于BX偏置處的字節(jié)取負(fù) CMP比較指令比較指令(Compare) 指令格式:
18、CMP 目的,源目的,源 指令功能:目的源目的源, 結(jié)果不回送到目的操作數(shù)中,僅反映在標(biāo)志位上。 用途:用在比較兩個數(shù)大小又不破壞原操作數(shù)的場合。 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令減法指令小結(jié):減法指令小結(jié):(上述五種指令都做減法運(yùn)算)對于雙操作數(shù)指令(對于雙操作數(shù)指令(SUB、SBB、CMP):):源操作數(shù)可以是寄存器、存儲器或立即數(shù);目的操作數(shù)可以是寄存器、存儲器,但不能為立即數(shù);兩個操作數(shù)不能同時(shí)為存儲器。對于單操作數(shù)指令(對于單操作數(shù)指令(DEC、NEG):):目的操作數(shù)可以是寄存器、存儲器,但不能為立即數(shù);如果是存儲器操作數(shù),還必須說明其類型是字節(jié)還是字。運(yùn)算之后,除DEC指令不影響指令不影
19、響CF標(biāo)志標(biāo)志外,其它均影響影響OF、SF、ZF、AF、PF和和CF標(biāo)志標(biāo)志。在減法操作后,如果源操作數(shù)大于目的操作數(shù),需要借位時(shí),進(jìn)位/借位標(biāo)志CF將被置1。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 例例 設(shè)AL1011 0001B,DL0100 1010B,求ALDL。解:SUBAL,DL;與加法操作一樣,對結(jié)果的解釋取決于參與運(yùn)算的數(shù)的性質(zhì),運(yùn)算過程如下:二進(jìn)制減法 當(dāng)成無符號數(shù) 當(dāng)成帶符號數(shù) 1011 0001 177 79 0100 1010 74 )74 0110 0111 103 103 運(yùn)算后標(biāo)志位ZF0,AF1,CF0,SF0,PF0,OF1。討論:討論:兩數(shù)為無符號數(shù)兩數(shù)為無符號數(shù):表示1
20、77與74的差是103。CF0表示沒有借位,SF和OF無意義。兩數(shù)為帶符號數(shù)兩數(shù)為帶符號數(shù):表示79(74),結(jié)果應(yīng)為153。但結(jié)果卻為正數(shù)(103),這是由于153溢出造成的。此時(shí),SF和OF有重要意義。 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 AAS減法的減法的ASCII調(diào)整指令調(diào)整指令(ASCII Adjust for Subtraction) 指令格式:AAS 指令功能:將AL寄存器中的運(yùn)算結(jié)果調(diào)整為正確的非壓縮十進(jìn)制數(shù)調(diào)整為正確的非壓縮十進(jìn)制數(shù)之差, 仍保留在保留在AL中。 使用前提:用SUB或SBB指令對兩個非壓縮十進(jìn)制數(shù)或ASCII碼表示的十進(jìn)制數(shù)作減法,運(yùn)算結(jié)果已存在AL。 調(diào)整過程: 若A
21、L寄存器的低低4位位9或AF1, 則:則:AL AL6,AF置1 將AL寄存器高4位清零 AH AHl,CF置l 否則否則,不需要調(diào)整算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 DAS減法的十進(jìn)制調(diào)整指令減法的十進(jìn)制調(diào)整指令(Decimal Adjust for Subtracion) 指令格式: DAS 指令功能:將AL中兩個壓縮BCD數(shù)相減后的結(jié)果調(diào)整為正確的壓縮BCD數(shù)。高4位和低4位分別進(jìn)行調(diào)整。 使用前提:在兩個壓縮十進(jìn)制數(shù)用SUB或SBB相減后,結(jié)果在AL中。 調(diào)整過程: 如果AL寄存器的低低4位位9或AF1 則:則:AL AL6,AF置1 如果此時(shí)AL高半字節(jié)高半字節(jié)9或標(biāo)志位CFl 則則:AL
22、AL60H,CF置1算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 例例 設(shè)ALBCD 56,CLBCD 98,求兩數(shù)之差。 解:運(yùn)算過程如下:SUB AL, CL ; 0101 0110BCD 56 ; - 1001 1000BCD 98 DAS ; 1011 1110低4位9,CF=AF=1 ; - 0000 0110減6調(diào)整 ; 1011 1000調(diào)整后高半字節(jié)9 ; + 0110 0000減60H調(diào)整 ; 0101 1000BCD 58,CF=1 ;結(jié)果為AL=BCD 58,CF=1,表示右借位算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令(Multiply) MUL無符號數(shù)乘法指令無符號數(shù)乘法指令(Multiply)指令格式:
23、MUL 源源 指令功能:把源操作數(shù)和累加器中的數(shù)都當(dāng)成無符號數(shù),然后將兩個數(shù)相乘,操作數(shù)可以是字節(jié)或字。 源操作數(shù)是一個字節(jié)源操作數(shù)是一個字節(jié):原操作數(shù)與累加器AL中的內(nèi)容相乘,乘積為雙倍長的16位數(shù),高8位送到AH,低8位送AL。即 AX AL* 源源。 源操作數(shù)是一個字源操作數(shù)是一個字:原操作數(shù)與累加器AX的內(nèi)容相乘,結(jié)果為32位數(shù),高位字放在DX寄存器中,低位字放在AX寄存器中。即 (DX,AX) AX * 源源 操作數(shù)要求:操作數(shù)要求:l可以是寄存器、存儲單元,但不能是立即數(shù)不能是立即數(shù);l源操作數(shù)是存儲單元存儲單元時(shí),必須在操作數(shù)前加加B或或W說明是字節(jié)還是字。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指
24、令例例 MUL DL ; AX AL * DL MUL CX ;(DX,AX) AX * CX MUL BSI ;AX AL * (內(nèi)存中某字節(jié)),B說明字節(jié)乘法 MUL WBX ;(DX,AX) AX * (內(nèi)存中某字),W說明字乘法 注意:注意: MUL指令執(zhí)行后影響影響CF和和OF標(biāo)志標(biāo)志。l如果結(jié)果的高半部分高半部分(字節(jié)操作為AH、字操作為DX)不為零不為零,表明其內(nèi)容是結(jié)果的有效位,則CF和和OF均置均置1。l否則,CF和和OF均清均清0。 據(jù)此可檢測并去除結(jié)果中的無效前導(dǎo)零。據(jù)此可檢測并去除結(jié)果中的無效前導(dǎo)零。 乘法指令使AF、PF、SF和和 ZF的狀態(tài)不定的狀態(tài)不定。 例例 設(shè)
25、AL55H,BL14H,計(jì)算它們的積。 解: MUL BL 結(jié)果:AX06A4H。 由于AH06H0,高位部分有效,所以置CF1,OF1。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令例例 試計(jì)算FFHFFH。 解:用二進(jìn)制表示成如下形式: 1111 1111 1111 1111 1111 1110 0000 0001 作為無符號數(shù):表示25525565025,結(jié)果正確。 作為帶符號數(shù):表示(一1)(一1)一511,顯然結(jié)果不正確。 用MUL指令作帶符號數(shù)的乘法,會得到錯誤的結(jié)果,必須用IMUL指令,才能使(一1)(一1)得到正確的結(jié)果0000 0000 0000 0001。 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 IMUL整數(shù)
26、乘法指令整數(shù)乘法指令(Integer Multiply) 指令格式:IMUL 源 指令功能:把源操作數(shù)和累加器中的數(shù)都作為帶符號數(shù),進(jìn)行相乘。 存放結(jié)果的方式與存放結(jié)果的方式與MUL相同:相同:l源操作數(shù)為字節(jié):與AL相乘,雙倍長結(jié)果送到AX中;l源操作數(shù)為字:與AX相乘,雙倍長結(jié)果送到DX和AX中,最后給乘積賦予正確的符號。對標(biāo)志位的影響:對標(biāo)志位的影響:l乘積的高半部分高半部分不是低半部分的符號擴(kuò)展(不是全不是全0或全或全1),則高位部分為有效位,表示它是積的一部分,于是置置CFOF1;l結(jié)果的高半部分為全高半部分為全0或全或全1,表明它僅包含了符號位,那么使CF=OF0。lAF、PF、S
27、F和和 ZF不定不定。 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 AAM乘法的乘法的ASCII調(diào)整指令調(diào)整指令(ASCII Adjust for Multiply) 指令格式:AAM 指令功能: 對AL中的兩個非壓縮十進(jìn)制數(shù)相乘的乘積進(jìn)行十進(jìn)制數(shù)的調(diào)整,在AX中得到正確的非壓縮十進(jìn)制數(shù)的乘積,高位在AH中,低位在AL中。 調(diào)整過程: 把AL寄存器內(nèi)容除以10,商放在AH中,余數(shù)在AL中。即:AH AL/10所得的商所得的商AL AH/10所得的余數(shù)所得的余數(shù) 注意:注意:兩個ASCII碼數(shù)相乘之前,先屏蔽掉每個數(shù)字的高半字節(jié),使每個字節(jié)包含一個非壓縮十進(jìn)制數(shù)(BCD數(shù)),再用MUL指令相乘,乘積放到AL寄存器
28、中,然后用AAM指令進(jìn)行調(diào)整。標(biāo)志位的影響:影響影響ZF、SF和和PF,但AF、CF和和OF無定義無定義。8086的指令系統(tǒng)中,十進(jìn)制乘法運(yùn)算不允許采用壓縮十進(jìn)制數(shù),故調(diào)整指令僅此一條。 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令例例 求兩個非壓縮十進(jìn)制數(shù)求兩個非壓縮十進(jìn)制數(shù)0909和和0606之乘積。之乘積。解:MOVAL,09H;置初值MOVBL,06HMULBL;AL09與06之乘積36HAAM;調(diào)整得AH05H(十位),AL04H(個位)結(jié)果:AX0504H,即BCD數(shù)54。例例 如果如果ALAL和和BLBL中分別存放中分別存放9 9和和6 6的的ASCIIASCII碼,求兩數(shù)之積。碼,求兩數(shù)之積。 解
29、:用以下指令實(shí)現(xiàn):ANDAL,0FH;屏蔽高半字節(jié)ANDBL,0FHMULBL;相乘AAM;調(diào)整如要將結(jié)果轉(zhuǎn)換成ASCII碼,可用指令ORAX,3030H實(shí)現(xiàn),使AX3534H。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令(Division) DIV無符號數(shù)除法指令無符號數(shù)除法指令(Division,unsigned) 指令格式:DIV 源源 指令功能:對兩個無符號二進(jìn)制數(shù)進(jìn)行除法操作。 源操作數(shù)為字節(jié)源操作數(shù)為字節(jié):16位被除數(shù)必須放在AX中,8位除數(shù)為源操作數(shù)。AL AX源源(字節(jié)字節(jié))的的商商 AH AX源源(字節(jié)字節(jié))的的余數(shù)余數(shù) 若被除數(shù)只有8位,必須把它放在AL中,并將AH清0。 源操作數(shù)為字源操作數(shù)
30、為字:32位被除數(shù)在(DX,AX)中,16位除數(shù)作源操作數(shù)。 AX (DX,AX)源源(字字)的的商商 DX (DX,AX)源源(字字)的的余數(shù)余數(shù) 若被除數(shù)、除數(shù)都是16位,則將16位被除數(shù)送到AX中,再將DX清0。 注意:注意:源操作數(shù)可以是寄存器、存儲單元; DIV指令執(zhí)行后,所有標(biāo)志位均無定義。 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 IDIV整數(shù)除法指令整數(shù)除法指令(Integer Division) 指令格式: IDIV 源源 指令功能:對兩個帶符號二進(jìn)制數(shù)進(jìn)行除法操作(也稱為帶符號數(shù)除法) 注意:注意: 操作與DIV相同;商和余數(shù)都是帶符號數(shù),且規(guī)定余數(shù)的符號和被除數(shù)的相同余數(shù)的符號和被除數(shù)的
31、相同; 指令執(zhí)行后,所有標(biāo)志位均無定義標(biāo)志位均無定義。無論對 (DIV)還是 (IDIV),都要注意溢出問題:字節(jié)操作時(shí)字節(jié)操作時(shí):被除數(shù)的高8位絕對值大于除數(shù)的絕對值,則產(chǎn)生溢出。(對于無符號數(shù)對于無符號數(shù),允許最大商為FFH;對于帶符號數(shù)對于帶符號數(shù),允許商的范圍為-127+127,或-81H+7FH);字操作時(shí)字操作時(shí):被除數(shù)的高16位絕對值大于除數(shù)的絕對值,則產(chǎn)生溢出。(對于無符號數(shù),允許最大商為FFFFH;對于帶符號數(shù),允許商的范圍為-32767+32767,或-8001H7FFFH)。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令帶符號數(shù)除法指令,字節(jié)操作時(shí)要求被除數(shù)為16位,字操作時(shí)要求被除數(shù)為32位
32、,如果被除數(shù)不滿足這個條件,不能簡單地將高位置如果被除數(shù)不滿足這個條件,不能簡單地將高位置0,而應(yīng)該用符號擴(kuò)展指令(Sign Extension)將被除數(shù)轉(zhuǎn)換成除法指令所要求的格式。例 兩個無符號數(shù)7A86H和04H相除,商應(yīng)為多少?解:MOV AX,7A86H MOV BL,04H DIV BL 結(jié)果:正確的商應(yīng)為1EA1H。 由于BL中的除數(shù)04H為字節(jié),被除數(shù)為字,商1EA1H大于AL中能存放的最大無符號數(shù)FFH,產(chǎn)生除法錯誤中斷。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 CBW把字節(jié)轉(zhuǎn)換為字指令把字節(jié)轉(zhuǎn)換為字指令(Convert Byte to Word) 指令格式:CBW 指令功能:把寄存器AL中字節(jié)的符號位擴(kuò)充到AH的所有位。(AH被稱為AL的符號擴(kuò)充) 擴(kuò)展方法擴(kuò)展方法:若若AL中的中的D70,則將這個,則將這個0擴(kuò)展到擴(kuò)展到AH中,使中,使AH00H,即,即: D7 D0 D7
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度基礎(chǔ)設(shè)施投資款退出與運(yùn)營維護(hù)協(xié)議3篇
- 二零二五年度生態(tài)農(nóng)業(yè)承包合同期限最長簽約期限說明3篇
- 二零二五年度城市景觀打井承包合作協(xié)議3篇
- 2025年度干股合作協(xié)議范本干股回購與終止條款
- 2024年精簡版住宅銷售協(xié)議
- 2025年度環(huán)保物料拖車租賃服務(wù)合同3篇
- 2024年花卉電商銷售平臺搭建合同
- 二零二五年度WTO電子商務(wù)數(shù)據(jù)安全與隱私保護(hù)協(xié)調(diào)合同3篇
- 2025版離婚后子女教育金支持及財(cái)產(chǎn)分配協(xié)議書標(biāo)準(zhǔn)范本3篇
- 2025年度委托招聘文化產(chǎn)業(yè)創(chuàng)意人才合作協(xié)議
- 2024年高考物理真題分類匯編(全一本附答案)
- 2024-2025年上海中考英語真題及答案解析
- 新疆喀什地區(qū)巴楚縣2023-2024學(xué)年九年級上學(xué)期1月期末化學(xué)試題
- 供應(yīng)商可持續(xù)發(fā)展計(jì)劃
- 方案所需費(fèi)用測算
- 《吉利集團(tuán)財(cái)務(wù)共享中心的優(yōu)化研究》11000字
- 生姜的產(chǎn)地分布
- 普通高中學(xué)業(yè)水平合格性考試(會考)語文試題(附答案)
- 統(tǒng)編語文八上文言文過關(guān)小測驗(yàn)-《愚公移山》
- 12、口腔科診療指南及技術(shù)操作規(guī)范
- 醫(yī)藥電商行業(yè)發(fā)展趨勢報(bào)告
評論
0/150
提交評論