版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章第3章:3.4 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令用來執(zhí)行二進(jìn)制的算術(shù)運(yùn)算: 加減乘除。這類指令會(huì)根據(jù)運(yùn)算結(jié)果影響狀態(tài)標(biāo)志,有時(shí)要利用某些標(biāo)志才能得到正確的結(jié)果;使用他們時(shí)請(qǐng)留心有關(guān)狀態(tài)標(biāo)志對(duì)加、減運(yùn)算,不區(qū)分無符號(hào)數(shù)、帶符號(hào)數(shù) 對(duì)乘、除運(yùn)算,區(qū)分無符號(hào)數(shù)、帶符號(hào)數(shù)可進(jìn)行字節(jié)或字操作重點(diǎn)掌握 加法指令:ADD、ADC、INC 減法指令:SUB 、SBB、DEC、CMP、NEG第3章:3.4.1 加法和減法指令加法指令:ADD, ADC和INC減法指令:SUB, SBB, DEC, NEG和CMP他們分別執(zhí)行字或字節(jié)的加法和減法運(yùn)算,除INC和DEC不影響CF標(biāo)志外,其他按定義影響全部狀態(tài)標(biāo)志位
2、操作數(shù)組合:運(yùn)算指令助記符 reg, imm/reg/mem運(yùn)算指令助記符 mem, imm/reg 1. 加和減指令 ADD dest,src;加法:destdestsrc;ADD指令使目的操作數(shù)加上源操作數(shù),和的結(jié)果送到目的操作數(shù)SUB dest,src;減法:destdestsrc;SUB指令使目的操作數(shù)減去源操作數(shù),差的結(jié)果送到目的操作數(shù)第3章:3.4.1 加法和減法指令第3章:例題3.7 加法mov ax,7348h;AX7348Hadd al,27h;AL48H27H6FH,AX736FH;OF0,SF0,ZF0,PF1,CF0add ax,3fffh;AX736FH3FFFHB3
3、6EH;OF1,SF1,ZF0,PF0,CF0第3章:例題3.7 減法sub ah,0f0h;AHB3HF0HC3H,AXC36EH;OF0,SF1,ZF0,PF1,CF1mov word ptr200h,0ef00h;200HEF00H,標(biāo)志不變sub 200h,ax;200HEF00HC36EH2B92H;OF0,SF0,ZF0,PF0,CF0sub si,si;SI0;OF0,SF0,ZF1,PF1,CF0 2. 帶進(jìn)位加和減指令 ADC dest,src;加法:destdestsrcCF;ADC指令除完成ADD加法運(yùn)算外,還要加上進(jìn)位CF,結(jié)果送到目的操作數(shù)SBB dest,src;減
4、法:destdestsrcCF;SBB指令除完成SUB減法運(yùn)算外,還要減去借位CF,結(jié)果送到目的操作數(shù)第3章:3.4.1 加法和減法指令例:兩雙字相加 0002F365H + 0005 E024 H = ?MOV AX,0F365H ADD AX,0E024H MOV BX,0002H ADC BX,0005H 0002 F365 H + 0005 E024 H進(jìn)位0008 D389 H結(jié)果存放在: 0008 D389(BX) (AX)執(zhí)行完、:(AX)= D389H CF=1, OF=0, SF=1, ZF=0 執(zhí)行完、:(BX)= 0008H CF=0, OF=0, SF=0, ZF=0分
5、析:8086/8088只能按字節(jié)或字相加。 位數(shù)在字以上的操作數(shù),先加低位,再加高位, 加高位時(shí)加入從低位產(chǎn)生的進(jìn)位。第3章:例3.8 無符號(hào)雙字加法和減法mov ax,7856h;AX7856Hmov dx,8234h;DX8234Hadd ax,8998h;AX01EEH,CF1adc dx,1234h;DX9469H,CF0sub ax,4491h;AXBD5DH,CF1sbb dx,8000h;DX1468H,CF0DX.AX8234 7856H1234 8998H8000 4491H1468 BD5DH 3. 比較指令CMP(compare)CMP dest,src;做減法運(yùn)算:de
6、stsrcCMP指令將目的操作數(shù)減去源操作數(shù),但差值不回送目的操作數(shù)CMP指令通過減法運(yùn)算影響狀態(tài)標(biāo)志,用于比較兩個(gè)操作數(shù)的大小關(guān)系。CMP和SUB指令不同之處是,不保留兩數(shù)相減的差。因此CMP指令執(zhí)行之后,兩個(gè)操作數(shù)都不變,只根據(jù)結(jié)果影響標(biāo)志位:AF、CF、OF、PF、SF和ZFCMP AL,0FFH ;AL中的至與立即數(shù)FFH比較,結(jié)果影響標(biāo)志位CMP AX,SI+50H ;AX中的值和(SI50H)字存儲(chǔ)單元的數(shù)相比較, 結(jié)果影響標(biāo)志位第3章:3.4.1 加法和減法指令 據(jù)ZF判斷兩數(shù)是否相等CMP A, BZF=1 兩數(shù)相等, A = B ;ZF=0 兩數(shù)不等, A B 據(jù)ZF和CF判
7、斷兩無符號(hào)數(shù)關(guān)系CF= 1 A低于BCF= 0 A高于或等于BCF=1或 ZF=1 A低于等于BCF=0且 ZF=0 A高于B 利用CMP執(zhí)行后的標(biāo)志值,比較兩操作數(shù)之間的關(guān)系加1指令(增量指令)INC指令功能:將指定的操作數(shù)reg/mem內(nèi)容加1,結(jié)果送回reg/mem ,即 reg/mem(reg/mem)1INC指令只有一個(gè)操作數(shù),可以在通用寄存器或存儲(chǔ)器中,但不能是立即數(shù), reg/mem可以是字或字節(jié)不影響CF標(biāo)志INC指令常用于循環(huán)結(jié)構(gòu)程序中修改指針或用于循環(huán)計(jì)數(shù)INC CX;將CX的內(nèi)容加1之后再送回CXINC BYTE PTRSI ;將SI所指向存儲(chǔ)單元的內(nèi)容加1, 結(jié)果送回該
8、單元第3章:3.4.1 加法和減法指令I(lǐng)NC reg/mem ;增量(加1)4.增量和減量指令 01FFH+ 0001H進(jìn)位11 0200H 例3 value 是一個(gè)字變量 OFFSET value = 1000H (DS)=2000H,(21000H)=01FFHvalue FF21000H 01執(zhí)行前value 0021000H 02執(zhí)行后執(zhí)行后:(21000H)=0200H CF=不變,OF=0,ZF=0,SF=0注意: INC value是內(nèi)存單元內(nèi)容加1,而非地址加1INC value或?qū)懗?INC valueDEC reg/mem;減量(減1) ( reg/mem)(reg/mem
9、)1指令功能:將操作數(shù)reg/mem 的值減1,結(jié)果再送回reg/mem ,即(reg/mem)(reg/mem)1它對(duì)操作數(shù)的要求及對(duì)標(biāo)志位的影響均與INC相同DEC指令常用于在循環(huán)程序中修改循環(huán)次數(shù)減1指令(減量指令)DECDEC AX ;(AX)(AX)1DEC WORD PTRBP ;將堆棧中BP所指的字單元內(nèi)容減1, 結(jié)果再送回該單元例3 減1指令:value 是一個(gè)字節(jié)變量 OFFSET value = 1000H (DS)=2000H,(21000H)=00H DEC value 執(zhí)行后:(21000H)=0FFH CF=不變,OF=0,ZF=0,SF=1注意:DEC value
10、 是內(nèi)存單元內(nèi)容減1,而非地址減1 00 H - 01 H 11 FFH 例:編寫一個(gè)延時(shí)程序 MOV CX,0FFFFH ;送計(jì)數(shù)初值到CXNEXT:DEC CX ;計(jì)數(shù)值(CX)減1 JNZ NEXT ;若(CX)不等于0,則轉(zhuǎn)NEXT HLT 注意若編程如下,MOV CX, 4MOV AL, 0 exit: ADD AL, buffer INC buffer DEC CXJNZ exit不能實(shí)現(xiàn), 為什么? . MOV CX, 4 LEA BX, buffer MOV AL, 0exit: ADD AL, BX INC BX DEC CX JNZ exit實(shí)現(xiàn)的是(1A)+(1B)+(1
11、C)+(1D)指令I(lǐng)NC buffer 將buffer指向的內(nèi)容加1,而不是地址buffer加1例 將buffer為首的4個(gè)字節(jié)內(nèi)存內(nèi)容相加,存放在AL中。例:實(shí)現(xiàn)將AREA1開始的100個(gè)數(shù)據(jù)傳送到AREA2開始的單元。AREA1:AREA2:分析題意: 可以用200條MOV指令來完成100個(gè)數(shù)據(jù)傳送, 指令操作重復(fù),每個(gè)數(shù)據(jù)傳送后的地址是變化的。 可以利用循環(huán),但每循環(huán)一次要修改地址(源地址和目的地址),必須把地址放在寄存器當(dāng)中,用寄存器間接尋址來尋找操作數(shù).得到如下程序:MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,100AGAIN :MO
12、V AL,SIMOV DI,AL INC SI ;修改地址指針 INC DI ;修改地址指針 DEC CX;修改個(gè)數(shù) JNZ AGAIN 5. 求補(bǔ)指令NEG(negtive)指令功能:用零減去操作數(shù),然后結(jié)果返回操作數(shù), NEG指令對(duì)操作數(shù)執(zhí)行求補(bǔ)運(yùn)算NEG指令把操作數(shù)reg/mem視為補(bǔ)碼表示的帶符號(hào)數(shù)。之所以把NEG稱為求補(bǔ)指令,是因?yàn)閷?duì)一個(gè)操作數(shù)取補(bǔ)碼就相當(dāng)于用零減去此操作數(shù),即求補(bǔ)運(yùn)算也可以表達(dá)成:將操作數(shù)按位取反后加1NEG指令對(duì)標(biāo)志的影響與用零作減法的SUB指令一樣NEG指令也是一個(gè)單操作數(shù)指令第3章:3.4.1 加法和減法指令NEG reg/mem;(reg/mem) 0(re
13、g/mem)例:設(shè)(DS)6000H,(BX)0010H,(60010H)47H NEG BX執(zhí)行上面的指令是,CPU將進(jìn)行如下減法運(yùn)算: 00000000 ) 01000111 10111001 故指令執(zhí)行后(60010H)B9H,相當(dāng)于對(duì)47H求補(bǔ)。換句話說,利用NEG指令可以得到一個(gè)負(fù)數(shù)的絕對(duì)值。又如,若(AL)=FFH,執(zhí)行NEG AL后,結(jié)果位(AL)1(FFH是1的補(bǔ)碼)。第3章:例題3.9 求補(bǔ)運(yùn)算mov ax,0ff64hneg al;AL064H9CH,AXFF9CH;OF0,SF1,ZF0,PF1,CF1sub al,9dh;AL9CH9DHFFH,AXFFFFH;OF0,
14、SF1,ZF0,PF1,CF1neg ax;AX0FFFFH0001H;OF0,SF0,ZF0,PF0,CF1dec al;AL01H10,AX0000H;OF0,SF0,ZF1,PF1,CF1neg ax;AX000;OF0,SF0,ZF1,PF1,CF0第3章:3.4.2 十進(jìn)制調(diào)整指令 十進(jìn)制數(shù)調(diào)整指令對(duì)二進(jìn)制運(yùn)算的結(jié)果進(jìn)行十進(jìn)制調(diào)整,以得到十進(jìn)制的運(yùn)算結(jié)果,以此實(shí)現(xiàn)十進(jìn)制BCD碼運(yùn)算8088指令系統(tǒng)支持兩種BCD碼調(diào)整運(yùn)算壓縮BCD碼就是通常的8421碼;它用4個(gè)二進(jìn)制位表示一個(gè)十進(jìn)制位,一個(gè)字節(jié)可以表示兩個(gè)十進(jìn)制位,即0099非壓縮BCD碼用8個(gè)二進(jìn)制位表示一個(gè)十進(jìn)制位,只用低4個(gè)二
15、進(jìn)制位表示一個(gè)十進(jìn)制位09,高4位任意,通常默認(rèn)為0BCD碼( Binary Coded Decimal ) 用二進(jìn)制編碼表示十進(jìn)制數(shù)。 常用8421 BCD碼, 與十進(jìn)制數(shù)碼對(duì)應(yīng)關(guān)系:根據(jù)在內(nèi)存的存放形式,分壓縮BCD碼和非壓縮 BCD碼 壓縮BCD碼(Packed BCD format) 用4位二進(jìn)制數(shù)表示一個(gè)十進(jìn)制數(shù)位,一字節(jié)存放2個(gè)BCD碼。 整個(gè)十進(jìn)制數(shù)形式為一個(gè)順序的4位為一組的數(shù)串。例:9502d 的壓縮BCD碼應(yīng)表示為: 9 5 0 2 非壓縮BCD碼(Unpacked BCD format) 用8位為一組表示一個(gè)十進(jìn)制數(shù)位,一字節(jié)存放1個(gè)BCD碼。 8位中的低4位表示8421
16、的BCD碼,而高4位沒有意義。 例:9502d的非壓縮BCD碼則表示為: 9 5 0 21001010100000010當(dāng)數(shù)據(jù)用壓縮或非壓縮BCD碼表示時(shí),為使運(yùn)算的結(jié)果仍為BCD碼表示,需對(duì)結(jié)果進(jìn)行調(diào)整。 十進(jìn)制運(yùn)算 = 二進(jìn)制運(yùn)算 + 十進(jìn)制調(diào)整例(0000 1000 ) 壓縮BCD + (0000 1001) 壓縮BCD = (0001 0111 ) 壓縮BCD計(jì)算機(jī)計(jì)算過程 看作壓縮BCD 0000 1000 08 + 0000 1001 09 0001 0001 11 二進(jìn)制運(yùn)算編碼的比較真值(十進(jìn)制)864二進(jìn)制編碼08H40H壓縮BCD碼08H64H非壓縮BCD碼08H0604H
17、ASCII碼38H3634H壓縮BCD碼加減法調(diào)整指令DAA DAS非壓縮BCD碼加減乘除法調(diào)整指令A(yù)AA AAS AAM AAD8088中有六條調(diào)整指令:(1)、DAA(Decimal adjust for addition)加法十進(jìn)制調(diào)整指令(2)、DAS(Decimal adjust for subtration)減法十進(jìn)制調(diào)整指令(3)、AAA(ASCII adjust for addition)加法ASCII調(diào)整指令(4)、AAS(ASCII adjust for subtration)減法ASCII調(diào)整指令(5)、AAM(ASCII adjust for multiply)乘法AS
18、CII調(diào)整指令(6)、AAD(ASCII adjust for division)除法ASCII調(diào)整指令共同點(diǎn): 調(diào)整指令后邊不跟操作數(shù): 十進(jìn)制調(diào)整指令隱含寄存器操作數(shù)AL; ASCII調(diào)整指令隱含寄存器操作數(shù)AL或AH。 調(diào)整對(duì)象:十進(jìn)制調(diào)整指令對(duì)壓縮BCD碼進(jìn)行調(diào)整; ASCII調(diào)整指令對(duì)非壓縮BCD碼進(jìn)行調(diào)整, 1、DAA(Decimal adjust for addition)加法十進(jìn)制調(diào)整指令格式:DAA條件:參加運(yùn)算數(shù)(加法)必須是兩個(gè)壓縮的BCD碼, 在執(zhí)行DAA指令以前必須執(zhí)行ADD或ADC指令。功能:(AL)把由二個(gè)組合的BCD碼相加后的結(jié)果(結(jié)果一定放在(AL)中的),調(diào)
19、整到壓縮BCD格式。 DAA指令影響 標(biāo)志: A、C、P、S、Z .而對(duì)O標(biāo)志未作定義。校正操作: 若 (AL)30 9 或AF=1, 則 (AL) (AL)+6, AF 1 若(AL)74 9H 或CF=1, 則 (AL) (AL)+60H, CF 1 應(yīng)用舉例:例1:設(shè)(AL)=28 H ,(BL)=68H ADD AL,BL ; (AL)=90H,CF=0,AF=1 DAA ; (AL) (AL)+06 ,(AL) = 96H ; CF=0, AF=1例2:求兩個(gè)十進(jìn)制數(shù)78+56的正確結(jié)果,可用以下程序段。MOV Al,78H ;(AL)78HADD AL,56H ; (AL)0DEH
20、DAA ; (AL) (AL)+06+60H ; (AL) = 136H 例3: (BCD3)(BCD1)+(BCD2)1834H2789H = 4623H 注意:例2中的“H”是為了十進(jìn)制數(shù)能輸入而設(shè)置。實(shí)際是十進(jìn)制數(shù)。實(shí)現(xiàn):(BCD1+1)(BCD1)+(BCD2+1)(BCD2)(BCD3+1)(BCD3)程序: (自學(xué))MOV AL,BCD1 ;(AL)=34ADD AL,BCD2 ;(AL)(AL)+(BCD2),BD=34+89 , AF=0,CF=0DAA ; 0BD+06+60=23, AF=1,CF=1MOV BCD3,AL ; (BCD3)=23MOV AL,BCD1+1
21、; (AL)=18ADC AL,BCD2+1 ; 40=18+27+CF(AL),AF=1,CF=0DAA ;(AL)+06=46(AL), CF=0, AF=1MOV BCD3+1,AL ; (BCD3) = 4623H ;(BCD3+1) (BCD3) = 4623H(2)、DAS(Decimal adjust for subtration)減法十進(jìn)制調(diào)整指令 格式:DAS 操作: (AL)把(AL)中的差調(diào)整到壓縮的BCD格式。 條件:參加運(yùn)算的數(shù)(兩個(gè)BCD碼)必須緊跟在SUB或SBB指令以后。DAS 影響 標(biāo)志: 影響A、C、P、S、Z .而對(duì)O標(biāo)志未作定義。校正操作: 若 (AL)
22、30 9 或AF=1,則 (AL) (AL)6, AF 1 若(AL) 74 9 或CF=1, 則 (AL) (AL)60H, CF 1應(yīng)用舉例:例1:設(shè)(AL)=86H, (AH)=07H SUB AL,AH;(AL)=7FH, CF=0 , AF=1 DAS ;(AL)=(AL)-06=79 H,例2:設(shè)(BCD1)=1234H,(BCD2)=4612H (自學(xué)) 試寫出(BCD3)(BCD1)-(BCD2)指令序列。MOV AL,BCD1 ;(AL)=34SUB AL,BCD2 ;(AL)(AL)-(BCD2) =34-12=22 DAS ;(AL)=22 ,未作調(diào)整 MOV BCD3,
23、AL ;(BCD3)22 MOV AL,BCD1+1;(AL)(BCD1+1)=12SBB AL,BCD2+1 ;(AL)(AL)-(BCD2+1)-CF =1246=CCH, DAS ;(AL)(AL)-06-60=66,AF=1,CF=1MOV BCD3+1,AL;(BCD3+1)(AL)=666622是-3378的十的補(bǔ)碼(以十為模 ) 結(jié)果對(duì)的(3)、AAA(ASCII adjust for addition)加法ASCII調(diào)整指令 格式:AAA 執(zhí)行操作:(AL)把(AL)中的和調(diào)整到非壓縮BCD格式。 (AH)(AH)+調(diào)整產(chǎn)生的進(jìn)位值。條件:參加運(yùn)算的數(shù)必須是兩個(gè)非壓縮BCD碼,
24、指令必須緊跟 在 ADD、ADC指令以后,相加結(jié)果必須在(AL)中。指令調(diào)整步驟: 如(AL)03=09且AF=0,則(AL)4-7 0,AFCF 如(AL)03=AF 或 AF=1,則(AL) (AL)+06, (AH) (AH)+1, (AL)4-7 0,AF CF影響標(biāo)志位:影響AF、CF,其它標(biāo)志位均無定義。應(yīng)用舉例:例1: 設(shè)(AX)=0535H, (BL)=39H程序: ADD AL,BL ;(AL)=6EH, AF=0, (AH)=05H AAA ;(AX)=0604H,AF=1,CF=1例2:計(jì)算 46093875?(自學(xué))加數(shù)與被加數(shù)存放在內(nèi)存情況如右圖:加數(shù)與被加數(shù)存放在內(nèi)
25、存情況程序:LEA SI, STRING1LEA BX, STRING2LEA DI, SUMMOV CX,4CLCNEXT:MOV AL, SIADC AL, BXAAAMOV DI, ALINC SIINC BXINC DIDEC CXJNZ NEXTHLT流程圖(4)、AAS(ASCII adjust for subtration)減法ASCII調(diào)整指令格式:AAS執(zhí)行操作:(AL) 把(AL)中的差調(diào)整到非壓縮BCD格式, (AH)(AH)-調(diào)整產(chǎn)生的借位值 條件:參加運(yùn)算的數(shù),必須是兩個(gè)非壓縮BCD碼,這條指令必須緊跟在SUB或SBB指令以后。調(diào)整步驟: 如(AL)03=09且AF=
26、0,則(AL)47 0,CF AF 如(AL)03=AF或AF=1,則(AL) (AL)-06, (AH) (AH)-1, AF 1 (AL)47 0,CF= AF=1影響標(biāo)志位:影響AF、CF,其它標(biāo)志位均無定義。例:編寫程序段,實(shí)現(xiàn)(DX)UP1+UP2-UP325 + 48 -19 (自學(xué))每位十進(jìn)制數(shù)以非壓縮BCD格式存入存儲(chǔ)器,每個(gè)數(shù)占一個(gè)字。MOV AX,0 ;(AH)=0MOV AL,UP1; (AL)05HADD AL,UP2; (AL)05+08=0DHAAA ; (AL)0D+06=03H, AF=1 ,(AH)(AH)+1=01H ,CF=1AF=1MOV DL,AL ;
27、 (DL)03HMOV AL,UP1+1 ; (AL)=02 H ADC AL,UP2+1 ;(AL)02+04+CF=06+1=07 ,AF=0,CF=0 AAA ;(AL)=07,CF=AF=0 未調(diào)整XCHG AL,DL ;(DL)=07,(AL)=03SUB AL,UP3 ;(AL)(AL)-(UP3) =03-09=0A,AF=1AAS ;(AL)(AL)-06=04H, CF=AF=1,(AH)(AH)-1=0XCHG AL,DL ;(DL)=04H,(AL)=07HSBB AL,UP3+1;(AL)07-01-1=05H,CF=AF=0AAS ;(AL)=05H,未調(diào)整 CF=A
28、F=0MOV DH,AL ;(AL)(DH)所以,(DX)=0504BCD,正是十進(jìn)制數(shù)54的非壓縮BCD格式。(5)、AAM(ASCII adjust for multiply)乘法ASCII調(diào)整指令格式:AAM執(zhí)行操作:(AX) 把(AL)中的積調(diào)整到非壓縮的BCD碼。條件:參加相乘的兩個(gè)非壓縮BCD碼(要求高4位為0),這條指令必須緊跟在MUL指令之后。結(jié)果在AL寄存器中。調(diào)整方法:(AL)/0AH (AH)商,(AL)/0AH (AL)余數(shù)條件碼設(shè)置:根據(jù)(AL)設(shè)置條件碼SF、ZF、PF。但 0F、CF、AF無定義。應(yīng)用舉例:例1: 設(shè)(AL)=07H(BCD),(BL)=09H(B
29、CD)MOV AL,07HMOV BL, 09HMUL BL ; (AX)=003FHAAM ;(AH)=06H,(AL)=03H ,SF=ZF=0,PF=1 (6)、AAD(ASCII adjust for division)除法ASCII調(diào)整指令加法、減法、乘法的ASCII調(diào)整指令是對(duì)二個(gè)非壓縮碼運(yùn)算以后的結(jié)果進(jìn)行調(diào)整。 除法ASCII調(diào)整指令A(yù)AD:將存放在(AX)中二位非壓縮BCD的被除數(shù)用AAD指令將其調(diào)整成二進(jìn)制數(shù)存放于(AL)中。操作:(AL)(AH) 0AH+(AL) (AH) 0標(biāo)志:對(duì)SF、ZF、PF設(shè)置對(duì)OF、CF、AF無定義AAD指令用法:將存放在(AX)中二位非壓縮B
30、CD的被除數(shù)用AAD指令將其調(diào)整成二進(jìn)制數(shù)存放于(AL)中。然后用DIV指令進(jìn)行除法,所得商還需用AAM指令進(jìn)行調(diào)整。應(yīng)用舉例:例1:編程實(shí)現(xiàn) 73/2 =? 設(shè) (AX)=0703H, (BL)=02HMOV AX, 0703HMOV BL, 02HAAD ;(AL)=49H (73D)DIV BL;(AL)=24H(商),(AH)=01H(余數(shù))AAM;(AH)=03H , (AL)=06H第3章:3.4.3 乘法和除法指令(1)無符號(hào)數(shù)的乘法指令MUL指令格式:MUL OPRD指令功能:將源操作數(shù)OPRD(字節(jié)/字)和累加器(AL/AX)中的數(shù)都作為無符號(hào)數(shù)相乘,乘積放在AX或DX、AX
31、中。指令的操作為:字節(jié)乘法 (AX) (OPRD)(AL)字乘法 (DX:AX) (OPRD)(AX) 乘法指令中,源操作數(shù)OPTR可以是寄存器或存儲(chǔ)器操作數(shù),但不能是立即數(shù) 。而且乘法指令要求量操作數(shù)字長(zhǎng)相等。乘法指令分無符號(hào)和有符號(hào)乘法指令MUL reg/mem;無符號(hào)乘法IMUL reg/mem;有符號(hào)乘法例: MUL BL ;(AX) (AL)(BL) MUL BX ;(DX:AX) (AX)(BX) MUL BYTE PTRSI ;(AX) (AL)與SI間址所指的字存儲(chǔ) 單元的內(nèi)容相乘 MUL WORD PTRDI+50H ;(DX:AX) (AX)與(DI50H) 字存儲(chǔ)單元的內(nèi)
32、容相乘 兩個(gè)8位數(shù)相乘,乘積可能有16位;兩個(gè)16為數(shù)相乘,乘積可能有32位。如果乘積的高半部分(在字節(jié)相乘時(shí)為AH,在字相乘時(shí)為DX)不為零,則CFOF1,代表AH或DX中包含乘積的有效數(shù)字。否則CFOF0。對(duì)其它標(biāo)志無定義。 指令中的源操作數(shù)應(yīng)滿足無符號(hào)數(shù)的表示范圍。在某些情況,可用左移指令來代替乘法指令,以加快程序的運(yùn)行速度。(2)帶符號(hào)數(shù)的乘法指令I(lǐng)MULIMUL指令在格式上和功能上都與MUL指令類似,只是有如下極點(diǎn)區(qū)別:要求量乘數(shù)都虛偽有符號(hào)數(shù)。若乘積的高半部分是低半部分的符號(hào)為的擴(kuò)展,則CFOF=0,否則CFOF1。指令中給出的源操作數(shù)應(yīng)滿足帶符號(hào)數(shù)的表示范圍。除法指令分無符號(hào)和有
33、符號(hào)除法指令DIV reg/mem;無符號(hào)除法IDIV reg/mem;有符號(hào)除法(1)無符號(hào)數(shù)的除法指令DIV指令格式:DIV src指令功能:對(duì)兩個(gè)無符號(hào)數(shù)相除,商和余數(shù)放入指定的位置字節(jié)除法(AX)/src AL(商)、AH(余數(shù))字除法(DX:AX) AX(商)、DX(余數(shù))DIV BL;AX中的16位數(shù)初一BL中的8位數(shù),商在AL 中,余數(shù)在AH中(2)有符號(hào)數(shù)的除法指令I(lǐng)DIV指令格式:IDIV src指令功能:與DIV功能相同,但操作數(shù)都必須是帶符號(hào)數(shù),所得商、余數(shù)也是帶符號(hào)數(shù),且余數(shù)和被除數(shù)的符號(hào)相同。除法指令舉例例 (AX)=0501H,(BL)=0C6H (1) DIV B
34、L (2) IDIV BL 看作無符號(hào)數(shù) 看作帶符號(hào)數(shù) (AL) = 1281D (AL) = 1281D (BL) = 198D (BL) = -58D 1281/198 1281/ (-58) 商= 6D 商= -22D=0EAH 余數(shù)=93D=5DH 余數(shù)=5D 執(zhí)行DIV BL后: 執(zhí)行IDIV BL后: (AX) = 5D06H (AX) = 05EAH第3章:3.5 位操作類指令 位操作類指令以二進(jìn)制位為基本單位進(jìn)行數(shù)據(jù)的操作當(dāng)需要對(duì)字節(jié)或字?jǐn)?shù)據(jù)中的各個(gè)二進(jìn)制位操作時(shí),可以考慮采用位操作類指令注意這些指令對(duì)標(biāo)志位的影響1. 邏輯運(yùn)算指令A(yù)ND OR XOR NOT TEST2. 移
35、位指令SHL SHR SAR3. 循環(huán)移位指令ROL ROR RCL RCR第3章:3.5.1 邏輯運(yùn)算指令雙操作數(shù)邏輯指令A(yù)ND、OR、XOR和TEST設(shè)置CFOF0,根據(jù)結(jié)果設(shè)置SF、ZF和PF狀態(tài),而對(duì)AF未定義;它們的操作數(shù)組合與ADD、SUB等一樣:運(yùn)算指令助記符 reg, imm/reg/mem運(yùn)算指令助記符 mem, imm/reg 單操作數(shù)邏輯指令NOT不影響標(biāo)志位,操作數(shù)與INC、DEC和NEG一樣:NOT reg/mem 邏輯與指令A(yù)ND對(duì)兩個(gè)操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果送目的操作數(shù)AND dest,src;destdestsrc 只有相“與”的兩位都是1,結(jié)果才是1;否則,
36、“與”的結(jié)果為0第3章:3.5.1 邏輯運(yùn)算指令 邏輯或指令OR對(duì)兩個(gè)操作數(shù)執(zhí)行邏輯或運(yùn)算,結(jié)果送目的操作數(shù)OR dest,src;destdestsrc只要相“或”的兩位有一位是1,結(jié)果就是1;否則,結(jié)果為0第3章:3.5.1 邏輯運(yùn)算指令 邏輯異或指令XOR對(duì)兩個(gè)操作數(shù)執(zhí)行邏輯異或運(yùn)算,結(jié)果送目的操作數(shù)XOR dest,src;destdestsrc只有相“異或”的兩位不相同,結(jié)果才是1;否則,結(jié)果為0第3章:3.5.1 邏輯運(yùn)算指令 測(cè)試指令TEST對(duì)兩個(gè)操作數(shù)執(zhí)行邏輯與運(yùn)算,結(jié)果并不送目的操作數(shù),僅按AND指令影響標(biāo)志。故這條指令常用于在不破壞操作數(shù)內(nèi)容 情況下檢測(cè)操作數(shù)中某些位是“1
37、”還是“0”,此指令通常和條件轉(zhuǎn)移指令相配合。TEST dest,src;destsrc AND與TEST指令的關(guān)系,同SUB與CMP指令的關(guān)系一樣第3章:3.5.1 邏輯運(yùn)算指令TEST AL,02H ;若AL中D1位為1,則ZF0,否則ZF1TEST AX,8000H ;若AX中最高位為1,則ZF0,否則ZF1 邏輯非指令NOT對(duì)一個(gè)操作數(shù)執(zhí)行邏輯非運(yùn)算NOT reg/mem;reg/memreg/mem 按位取反,原來是“0”的位變?yōu)椤?”;原來是“1”的位變?yōu)椤?”第3章:3.5.1 邏輯運(yùn)算指令第3章:例3.16 邏輯運(yùn)算mov al,75h;AL75Hand al,32h;AL30
38、H;CFOF0, SF0,ZF0,PF1or al,71h;AL71H;CFOF0,SF0,ZF0,PF1xor al,0f1h;AL80H;CFOF0,SF1,ZF0,PF0not al;AL7FH,標(biāo)志不變第3章: 例3.17 邏輯運(yùn)算指令的應(yīng)用and bl,11110110b;BL中D0和D3清0,其余位不變or bl,00001001b;BL中D0和D3置1,其余位不變xor bl,00001001b;BL中D0和D3求反,其余位不變 AND指令可用于復(fù)位某些位(同0相與),不影響其他位 OR指令可用于置位某些位(同1相或),不影響其他位 XOR指令可用于求反某些位(同1相異或),不影響其他位第3章:3.5.2 移位指令將操作數(shù)移動(dòng)一位或多位,分成邏輯移位和算術(shù)移位,分別具有左移或右移操作移位指令的第一個(gè)操作數(shù)是指定的被移位的操作數(shù),可以是寄存器或存儲(chǔ)單元;后一個(gè)操作數(shù)表示移位位數(shù):該操作數(shù)為1,表示移動(dòng)一位該操作數(shù)為CL,CL寄存器值表示移位位數(shù) (移位位數(shù)大于1只能CL表示)按照移入的位設(shè)置進(jìn)位標(biāo)志C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版木結(jié)構(gòu)木工班組施工合同范本
- 2025年物流公司物流園區(qū)配送運(yùn)輸合同協(xié)議書3篇
- 二零二五年度枸杞采摘、加工、銷售全流程服務(wù)合同3篇
- 2025年度窗簾清洗與保養(yǎng)服務(wù)合同3篇
- 二零二五版鍋爐設(shè)備維護(hù)保養(yǎng)與故障排除合同范本3篇
- 2025年度淋浴房行業(yè)數(shù)據(jù)分析與服務(wù)合同4篇
- 2025年度城市街道綠化帶綠植更新與養(yǎng)護(hù)服務(wù)合同范本4篇
- 2025年度二手房公積金貸款買賣合同(含房屋維修基金)4篇
- 二零二四年勞動(dòng)爭(zhēng)議解決常年法律顧問合同3篇
- 2024版售后服務(wù)委托合同書
- 2025年河南鶴壁市政務(wù)服務(wù)和大數(shù)據(jù)管理局招聘12345市長(zhǎng)熱線人員10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 建設(shè)項(xiàng)目安全設(shè)施施工監(jiān)理情況報(bào)告
- 春節(jié)期間安全施工措施
- 2025年大唐集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 建筑工地春節(jié)期間安全保障措施
- 2025山東水發(fā)集團(tuán)限公司招聘管理單位筆試遴選500模擬題附帶答案詳解
- 2024-2030年中國(guó)建筑玻璃行業(yè)市場(chǎng)深度調(diào)研及競(jìng)爭(zhēng)格局與投資價(jià)值預(yù)測(cè)研究報(bào)告
- 泌尿:膀胱腫瘤病人的護(hù)理查房王雪-課件
- 企業(yè)短期中期長(zhǎng)期規(guī)劃
- 中華民族共同體概論講稿專家版《中華民族共同體概論》大講堂之第一講:中華民族共同體基礎(chǔ)理論
- 《商務(wù)溝通-策略、方法與案例》課件 第一章 商務(wù)溝通概論
評(píng)論
0/150
提交評(píng)論