第三節(jié)算術(shù)運算指令_第1頁
第三節(jié)算術(shù)運算指令_第2頁
第三節(jié)算術(shù)運算指令_第3頁
第三節(jié)算術(shù)運算指令_第4頁
第三節(jié)算術(shù)運算指令_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、(Arithmetic)內(nèi)容:內(nèi)容: 利用十進制調(diào)整指令和利用十進制調(diào)整指令和ASCII調(diào)整指令對調(diào)整指令對BCD碼表示的碼表示的 十進制數(shù)進行十進制數(shù)進行算術(shù)運算;算術(shù)運算; (一)加法指令(一)加法指令(Arithmetic)(二)減法指令(二)減法指令(Subtraction)(三)乘法指令(三)乘法指令(Multiplication)(四)除法指令(四)除法指令(Division)(五)(五)BCD碼運算指令碼運算指令 ,不同指令影響不同不同指令影響不同: (1) 算術(shù)運算指令涉及的一些問題:算術(shù)運算指令涉及的一些問題:(1) 什么叫什么叫 8位二進制數(shù)可以表示十進制數(shù)的范圍:位二進制

2、數(shù)可以表示十進制數(shù)的范圍: 8位無符號十進制數(shù)的范圍:位無符號十進制數(shù)的范圍:02558位帶符號十進制數(shù)的范圍:位帶符號十進制數(shù)的范圍:128127 16位二進制數(shù)可以表示十進制數(shù)的范圍位二進制數(shù)可以表示十進制數(shù)的范圍:16位無符號十進制數(shù)的范圍:位無符號十進制數(shù)的范圍:06553516位帶符號十進制數(shù)的范圍:位帶符號十進制數(shù)的范圍:3276832767帶符號數(shù),補碼能表示范圍為帶符號數(shù),補碼能表示范圍為:-2 n-1 +2 n+1 1如果運算結(jié)果超出該范圍,叫補碼如果運算結(jié)果超出該范圍,叫補碼以以8位二進制數(shù)為例位二進制數(shù)為例分析一下數(shù)的溢出與進位情況分析一下數(shù)的溢出與進位情況:下面分下面分

3、4種情況加以討論:種情況加以討論:(1) 帶符號數(shù)和無符號數(shù)都不溢出帶符號數(shù)和無符號數(shù)都不溢出(2) 無符號數(shù)溢出無符號數(shù)溢出(3) 帶符號數(shù)溢出帶符號數(shù)溢出(4) 帶符號數(shù)和無符號數(shù)都溢出帶符號數(shù)和無符號數(shù)都溢出。二進制數(shù)二進制數(shù)看作無符號數(shù)看作無符號數(shù)看作帶符號數(shù)看作帶符號數(shù)0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 00 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1+ +0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 14 41111+ +1515+ 4+ 4+1 1+1 1+ +1 5+1 5相相加加標志標志CF=0,CP=0CF=0,CP=0

4、,OF=0OF=0CF=0CF=0OF=0OF=0溢出溢出不溢出不溢出不溢出不溢出同符號數(shù)相加,同符號數(shù)相加,結(jié)果符號與其相同結(jié)果符號與其相同二進制數(shù)二進制數(shù)看作無符號數(shù)看作無符號數(shù)看作帶符號數(shù)看作帶符號數(shù)0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1+ +0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 07 7251251+ +258258+ 7+ 7- 5- 5+ + 2+ 2相相加加標志標志CF=1,CP=1CF=1,CP=1,OF=0OF=0CF=1CF=1OF=0OF=0溢出溢出溢出溢出若考慮進

5、位若考慮進位所代表的數(shù)值,所代表的數(shù)值,結(jié)果正確結(jié)果正確不溢出不溢出異號數(shù)相加異號數(shù)相加不可能有溢出不可能有溢出CF=1CF=1二進制數(shù)二進制數(shù)看作無符號數(shù)看作無符號數(shù)看作帶符號數(shù)看作帶符號數(shù)0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 10 0 1 111 1 1 1 1 1 1 1 0 0 0 0+ +1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 19 9124124+ +133133+ 9+ 9+1 2 4+1 2 4+ +1 3 3+1 3 3相相加加標志標志CF=0,CP=1CF=0,CP=1,OF=1OF=1CF=0CF=0O OF=F=1 1溢出溢出不

6、溢出不溢出溢出溢出正正相加,結(jié)果為負正正相加,結(jié)果為負結(jié)果錯結(jié)果錯二進制數(shù)二進制數(shù)看作無符號數(shù)看作無符號數(shù)看作帶符號數(shù)看作帶符號數(shù)1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1+ +0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0135135245245+ +380380121121- 11- 11+ +132132相相加加標志標志CF=1,CP=0CF=1,CP=0,OF=1OF=1CF=1CF=1OF=1OF=1溢出溢出溢出溢出若考慮進位若考慮進位CF所代表的數(shù)值,所代表的數(shù)值,結(jié)果正確結(jié)果正確 溢

7、出溢出負負相加,結(jié)果為正負負相加,結(jié)果為正結(jié)果錯結(jié)果錯CF=1CF=1(1)帶符號數(shù))帶符號數(shù)相加相加溢出溢出根據(jù)根據(jù)OF判斷帶符號數(shù)產(chǎn)生溢出?判斷帶符號數(shù)產(chǎn)生溢出?雙高位判別法雙高位判別法 OF=CF CP(2)無符號數(shù))無符號數(shù)相加相加溢出溢出根據(jù)根據(jù)CF判斷無符號數(shù)產(chǎn)生溢出?判斷無符號數(shù)產(chǎn)生溢出?(一)加法指令(一)加法指令(Arithmetic) 1、 ADD(Addition)加法指令加法指令 2、 ADC(Add with carry)帶進位加法指令帶進位加法指令 3、 INC(Increment by 1)加加 1指令指令 1、 ADD(Addition)加法指令加法指令指令格式

8、:指令格式:ADD dest , src ;(dest) (dest)+(src)例:例:ADD CL,10;寄存器寄存器+立即數(shù)立即數(shù)ADD DX,SI;寄存器寄存器+寄存器寄存器ADD AX, MEM;寄存器寄存器+存儲器存儲器ADD DATABX, AL;存儲器存儲器+寄存器寄存器ADD BYTE PTRALPHADI,30H;存儲器存儲器+立即數(shù)立即數(shù): ; : , 8位帶符號數(shù)相加,和超出范圍(位帶符號數(shù)相加,和超出范圍(128127), 16位帶符號數(shù)相加,和超出范圍位帶符號數(shù)相加,和超出范圍(-32768+32767);, 8位無符號數(shù)相加,和超過位無符號數(shù)相加,和超過255,

9、16位無符號數(shù)相加,和超過位無符號數(shù)相加,和超過65535。其他條件標志(其他條件標志(SF,AF,PF,ZF)根據(jù)定義設(shè)定。根據(jù)定義設(shè)定。例例MOV AL,7EH;(AL)=7EHMOV BL, 5BH;(BL)=5BHADD AL,BL;(AL)=7EH+5BH=D9H影響標志位的情況影響標志位的情況:SF=1 , 結(jié)果最高位結(jié)果最高位1ZF=0 ,結(jié)果不等于,結(jié)果不等于0AF=1 ,D3 位向位向D4 有進位有進位PF=0 ,”1”的個數(shù)為奇數(shù)的個數(shù)為奇數(shù)CF=0 ,無進位,無進位OF=1 ,和超過,和超過1271 11 11 11 11 11 10 00 00 01 10 01 11

10、10 01 11 1+ +1 11 10 01 11 10 00 01 1AF=1AF=12、 ADC(Add with carry)帶進位加法指令帶進位加法指令格式:格式:ADC dest,src ;(;(dest)(dest)+(src)+ 進位標志進位標志CF的現(xiàn)行值的現(xiàn)行值()特點特點: 與與ADD同。同。用途:主要用于多字節(jié)運算中。用途:主要用于多字節(jié)運算中。類型舉例:類型舉例:ADC CX, 300 ;寄存器寄存器+立即數(shù)立即數(shù)+CFADC AL, BL;寄存器寄存器+寄存器寄存器+CFADC DX, COUNTSI;寄存器寄存器+存儲器存儲器CFADC BLOCKDI, BX;存

11、儲器存儲器+寄存器寄存器+CFADC BYTE PTR MEM, 6;存儲器存儲器+立即數(shù)立即數(shù)+CF用途舉例:用途舉例:計算兩個多字節(jié)數(shù)相加計算兩個多字節(jié)數(shù)相加 3B74AC60F8H+20D59E36C1H=?兩個多字節(jié)數(shù)存放在:兩個多字節(jié)數(shù)存放在:DATA1,DATA2的開始單元。的開始單元。F8HF8H60H60HACHACH74H74H3BH3BH.C1HC1H36H36H9EH9EHD5HD5H20H20H.DATA1DATA1DATA2DATA2流程圖流程圖多字節(jié)數(shù)內(nèi)存存放多字節(jié)數(shù)內(nèi)存存放開始開始初始化,置循環(huán)次數(shù)CX初始化,置循環(huán)次數(shù)CX清SI、CF清SI、CF取一個字節(jié)加數(shù)取

12、一個字節(jié)加數(shù)取一個被加數(shù)字節(jié)取一個被加數(shù)字節(jié)相加送內(nèi)存相加送內(nèi)存(SI)+1送(SI)(SI)+1送(SI)(CX)-1送(CX)(CX)-1送(CX)(CX)=?0(CX)=?0結(jié)束結(jié)束N NY Y程序:程序:MOV CX, 5MOV SI, 0; 清清SICLC;清;清CFLOOPER:MOV AL, DATA2SIADC DATA1SI,ALINC SI;(SI)+1 (SI)DEC CX;(CX)-1 (CX)JNZ LOOPER;(CX) 0轉(zhuǎn)轉(zhuǎn)HLT;停機;停機3、INC (Increment by 1 )加加 1 指令指令格式:格式: INC dest ;(;(B/W), (de

13、st)(dest)+1 dest : 功能:對指定的目標操作數(shù)功能:對指定的目標操作數(shù)+1 操作數(shù)單元。操作數(shù)單元。用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。標志位影響情況:影響標志位影響情況:影響SF,ZF,AF,PF,OF。 例:例: INC DL; 8位寄存器位寄存器1 INC SI;16位寄存器位寄存器1 INC BYTE PTR BXSI ;存儲器;存儲器1(字節(jié)操作)(字節(jié)操作) INC WORD PTR DI;存儲器;存儲器1(字操作)(字操作) INC DS; 錯錯(二)減法指令(二)減法指令(Subtraction) 8088

14、有有7條減法指令條減法指令 :1、SUB(Subtraction)減法指令減法指令2、SBB(Subtraction with borrow)帶進位減法指令帶進位減法指令 3、DEC(Decrement by 1 ) 減減 1 指令指令4、NEG(Negate) 求補指令求補指令5、CMP(Compare) 比較指令比較指令1、SUB(Subtraction)減法指令減法指令格式:格式:SUB dest,src;(;(dest)(dest)-(src)例:例:SUB AL,37H;寄存器寄存器-立即數(shù)立即數(shù)SUB BX,DX;寄存器寄存器-寄存器寄存器SUB CX, VAR1;寄存器寄存器-存

15、儲器存儲器SUB ARRAYSI, AX;存儲器存儲器-寄存器寄存器SUB WORD PTRALPHABXDI,512H;存儲器減立即數(shù)存儲器減立即數(shù)這種指令影響標志位這種指令影響標志位: AF、CF、OF、PF、SF、ZF標志。標志。2、SBB(Subtraction with borrow)帶進位減法指令帶進位減法指令 格式:格式:SBB dest,src;(;(dest)(dest)-(src)-CFCF: 進位標志進位標志CF的現(xiàn)行值的現(xiàn)行值(上條指令上條指令CF值值)指令影響標志位、指令影響標志位、B/W數(shù)運算情況同數(shù)運算情況同SBB用途:用于多字節(jié)數(shù)相減用途:用于多字節(jié)數(shù)相減例:例

16、:SBB BX,100H;寄存器寄存器-立即數(shù)立即數(shù) -CFSBB CX,DX;寄存器寄存器-寄存器寄存器-CFSBB AL, DATA1SI;寄存器寄存器-存儲器存儲器-CFSBB DISPBP, BL;存儲器存儲器-寄存器寄存器-CFSBB BYTE PTRALPHASI+6,96H;存儲器存儲器-立即數(shù)立即數(shù)-CF多字節(jié)數(shù)的加減綜合舉例多字節(jié)數(shù)的加減綜合舉例例:例:x、y、z均為均為32位數(shù),分別存放在地址為位數(shù),分別存放在地址為X, X+2;Y,Y+2;Z,Z+2的存儲單元中,用指令序列的存儲單元中,用指令序列實現(xiàn)實現(xiàn)wx+y+24-z,結(jié)果放在,結(jié)果放在W, W+2單元中。單元中。

17、MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ; x+y ADD AX, 24 ADC DX, 0 ; x+y+24 SUB AX, Z SBB DX, Z+2 ; x+y+24-z MOV W, AX MOV W+2, DX ; 結(jié)果存入結(jié)果存入W, W+2單元單元說說明:低明:低16位加減用不帶進位的指令;位加減用不帶進位的指令; 高高16位的加減用帶進位的指令位的加減用帶進位的指令3、DEC (Decrement by 1 ) 減減 1 指令指令格式:格式: DEC dest ;(B/W) (dest)(dest)-1功能:對指定的目標操作數(shù)功能

18、:對指定的目標操作數(shù)-1 操作數(shù)單元。操作數(shù)單元。用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。標志位影響情況:影響標志位影響情況:影響SF,ZF,AF,PF,OF。 不影響不影響CF。DEC 用途舉例:用途舉例:MOV CX , 0FFFFHCYC: DEC CXJNZ CYCHLT用于延時時間。用于延時時間。4、NEG (Negate) 求補指令求補指令格式:格式: NEG dest ;B/W, (dest) 0 - (dest)dest : 寄存器寄存器 、存儲器。、存儲器。操作操作: 把操作數(shù)按位求反后末位把操作數(shù)按位求反后末位+1。 (d

19、est) 0FFFFH -(dest)+1說明:說明: 若已知若已知X補補,則對,則對X補補的每一位(包括符號位)按的每一位(包括符號位)按位求反,然后再加位求反,然后再加1,結(jié)果即為,結(jié)果即為-X補補。由。由X補補求求-X補補,通,通常稱為變補。常稱為變補。影響標志:影響標志:AF、CF、OF、PF、SF、ZF。CF:操作數(shù)為操作數(shù)為0時求補時求補,CF=0 ; 一般使一般使CF=1.OF: 對對128 或或32768求補,求補,OF=1; 否則否則OF=0.應用舉例:求絕對值應用舉例:求絕對值在內(nèi)存中,在內(nèi)存中,從從AREA1開始存放開始存放100個帶符號數(shù)。個帶符號數(shù)。求各數(shù)的絕對值,并

20、求各數(shù)的絕對值,并存于存于AREA2開始的單開始的單元。元。流程圖流程圖開始開始初始化初始化置源地址,置目的地址指針置源地址,置目的地址指針置循環(huán)次數(shù)置循環(huán)次數(shù)取一個帶符號數(shù)取一個帶符號數(shù)負數(shù)?負數(shù)?求補求補送存送存地址指針1地址指針1循環(huán)次數(shù)1循環(huán)次數(shù)1循環(huán)次數(shù)0?循環(huán)次數(shù)0?結(jié)束結(jié)束N NY YN NY Y程序:程序:LEA SI, AREA1LEA DI, AREA2MOV CX, 100CHECK: MOV AL, SIOR AL, AL ;(AL)內(nèi)容不變,置標志內(nèi)容不變,置標志JNS NEXT ;SF=0轉(zhuǎn)轉(zhuǎn)NEXTNEG AL ;負數(shù),求其正數(shù)的補碼負數(shù),求其正數(shù)的補碼NEXT:

21、 MOV DI, AL ;送目標;送目標INC SIINC DIDEC CXJNZ CHECKHLT5、CMP(Compare) 比較指令比較指令格式:格式:CMP dest,src; B/W 影響標志:影響標志:AF、CF、OF、PF、SF、ZF。src: 立即數(shù),寄存器,存儲器。立即數(shù),寄存器,存儲器。dest:寄存器,存儲器。:寄存器,存儲器。例:例: CMP AL,0AH;寄存器與立即數(shù)比較寄存器與立即數(shù)比較CMP CX, DI;寄存器與寄存器比較寄存器與寄存器比較CMP AX, AREA1;寄存器與存儲器比較寄存器與存儲器比較CMP BX+5, SI;存儲器與寄存器比較存儲器與寄存器

22、比較CMP WORD PTRALPHAGAMMA,100H;存儲器與立即數(shù)比較存儲器與立即數(shù)比較用途:用途: 用比較指令來比較兩個數(shù)之間的關(guān)系:用比較指令來比較兩個數(shù)之間的關(guān)系:兩者是否相等,兩個數(shù)中哪個大。兩者是否相等,兩個數(shù)中哪個大。(1) 根據(jù)根據(jù)ZF標志,判斷兩者是否相等;標志,判斷兩者是否相等;(2) 根據(jù)根據(jù)CF標志,標志, 判斷兩個無符號數(shù)的大小;判斷兩個無符號數(shù)的大小;(3) 用用SF、OF標志,判斷二個帶符號數(shù)的大小。標志,判斷二個帶符號數(shù)的大小。 例:例: CMP AX, BXZF=1,結(jié)果為結(jié)果為0,兩者相等,兩者相等ZF=0, 結(jié)果不為結(jié)果不為0,兩者不相等,兩者不相等

23、例:例: 比較比較AX,BX寄存器寄存器, 將大數(shù)將大數(shù) (AX) CMP AX,BX JNC NEXT ; CF=0轉(zhuǎn)轉(zhuǎn)NEXT XCHG AX,BX NEXT:結(jié)論:結(jié)論:CF=0 ,(AX) (BX); CF=1, (AX) 0, B0A0, B0SF=0SF=0,OF=0 OF=0 則:則:ABAB5 57 7情情況況A0, B0A0, B0SF=1SF=1,OF=0 OF=0 則:則:ABAB5 52 25 57 72 2-5-5-7-71 1-7-7-5-5-5-5-(-7)-(-7)+2+2A0,B0A0,B0SF=1SF=1,OF=0 OF=0 則:則:ABABA0,B0A0,

24、BBAB-7-7-(-5)-(-5)-2-2 3+127+127-63-63A0,B0,BBAB+127+127-(-63)-(-63)+190+190 4-63-63+127+127A0A0SF=0SF=0,OF=1 OF=1 則:則:ABAB SF OF=0 SF=1, 則:則:AB SF OF=0 SF=0,則:,則:AB SF OF=1 ,則,則A第二個數(shù),不做交換,第二個數(shù),不做交換, 否則,(第二個字單元內(nèi)容)否則,(第二個字單元內(nèi)容) (AX)。)。 再取第三個數(shù),再取第三個數(shù), 經(jīng)過經(jīng)過99次比較,在(次比較,在(AX)中得到最大數(shù)。)中得到最大數(shù)。編程:編程: MOV BX,

25、OFFSET BLOCK MOV AX,BX INC BX INC BX MOV CX,99AGAIN: ;如;如ZF=0且且SF=OF,則轉(zhuǎn),則轉(zhuǎn)NEXT MOV AX,BXNEXT: INC BX INC BX DEC CX JNE AGAIN MOV MAX,AX;MAX單元存放單元存放最大值最大值小結(jié):根據(jù)標志位來判斷比較的結(jié)果1)根據(jù)ZF判斷兩個數(shù)是否相等。若ZF=1,則兩數(shù)相等。2)若兩個數(shù)不相等,則分兩種情況考慮: 比較的是兩個無符號數(shù) 若CF=0,則被減數(shù)減數(shù); 若CF=1,則被減數(shù)減數(shù)。 比較的是兩個有符號數(shù) 若OF SF=0,則被減數(shù)減數(shù); 若OF SF=1,則被減數(shù)減數(shù)。

26、進行乘法時:進行乘法時:8 8位位* *8 8位位1616位乘積位乘積 1616位位* *1616位位3232位乘積位乘積(1) (1) 無符號數(shù)無符號數(shù)的乘法指令的乘法指令MUL(MEM/REG)MUL(MEM/REG)格式:格式: MUL src操作:字節(jié)操作數(shù)操作:字節(jié)操作數(shù) (AX) (AL) (src) 字操作數(shù)字操作數(shù) (DX, AX) (AX) (src)注意:一個操作數(shù)隱含在注意:一個操作數(shù)隱含在ALAL或或AXAX中中指令例子:指令例子: MUL BL ;(AL)( (BL),乘積在AX中 MUL CX ;(AX)( (CX),乘積在DX,AX中 MUL BYTE PTRBX

27、(三) 乘法指令(乘法指令(Multiplication)格式與格式與MULMUL指令類似,只是要求兩操作數(shù)均為指令類似,只是要求兩操作數(shù)均為有符號數(shù)有符號數(shù)。指令例子:指令例子: IMUL BL ;(AX)(AL)(BL) IMUL WORD PTRSI ;(DX,AX)(AX)(SI+1SI) (2) (2) 有符號數(shù)有符號數(shù)乘法指令乘法指令I(lǐng)MULIMUL注意:注意:MUL/IMUL指令中 AL(AX)為隱含的乘數(shù)寄存器; AX(DX,AX)為隱含的乘積寄存器; SRC不能為立即數(shù); 除CF和OF外,對其它標志位無定義。(四)除法指令(四)除法指令Division)進行除法時:進行除法時

28、:1616位位/8/8位位88位商位商 3232位位/16/16位位1616位商位商對被除數(shù)、商及余數(shù)存放有如下規(guī)定:對被除數(shù)、商及余數(shù)存放有如下規(guī)定: 被除數(shù)被除數(shù) 商商余數(shù)余數(shù)字節(jié)除法字節(jié)除法 AXAX AL AL AH AH 字除法字除法 DX:AXDX:AX AX AX DX DX格式:格式: DIV src操作:字節(jié)操作操作:字節(jié)操作 (AL) (AX) / (SRC) 的商的商 (AH) (AX) / (SRC) 的余數(shù)的余數(shù) 字操作字操作 (AX) (DX, AX) / (SRC) 的商的商 (DX) (DX, AX) / (SRC) 的余數(shù)的余數(shù)指令例子:指令例子: DIV C

29、L DIV WORD PTRBX注:若除數(shù)為零或注:若除數(shù)為零或ALAL中商大于中商大于FFH,(FFH,(或或AXAX中商大于中商大于FFFFH)FFFFH),則,則CPUCPU產(chǎn)生一個類型產(chǎn)生一個類型0 0的內(nèi)部中斷。的內(nèi)部中斷。(1) 無符號數(shù)無符號數(shù)除法指令除法指令DIVDIV(2) (2) 有符號數(shù)有符號數(shù)除法指令除法指令I(lǐng)DIVIDIV格式:格式: IDIV src操作與操作與DIVDIV類似。商及余數(shù)均為有符號數(shù)類似。商及余數(shù)均為有符號數(shù), ,且余數(shù)且余數(shù)符號總是與被除數(shù)符號相同。符號總是與被除數(shù)符號相同。注意注意: 對于對于DIV/IDIV指令指令l AX(DX,AX)為隱含的

30、被除數(shù)寄存器。為隱含的被除數(shù)寄存器。l AL(AX)為隱含的商寄存器。為隱含的商寄存器。l AH(DX)為隱含的余數(shù)寄存器。為隱含的余數(shù)寄存器。l src不能為立即數(shù)。不能為立即數(shù)。l 對所有條件標志位均對所有條件標志位均無定義無定義。l除法運算要求被除數(shù)字長是除數(shù)字長的兩除法運算要求被除數(shù)字長是除數(shù)字長的兩倍倍, ,若不滿足則需若不滿足則需對被除數(shù)進行擴展對被除數(shù)進行擴展, ,否則否則產(chǎn)生錯誤。產(chǎn)生錯誤。l對于無符號數(shù)除法擴展,只需將對于無符號數(shù)除法擴展,只需將AHAH或或DXDX清清零即可。零即可。l對有符號數(shù)而言對有符號數(shù)而言,則是符號位的擴展。可使則是符號位的擴展。可使用符號擴展指令用

31、符號擴展指令CBW和和CWD關(guān)于除法操作中的字長擴展問題關(guān)于除法操作中的字長擴展問題例: 寫出34H25H的程序段。 MOV AL,34H MOV BL,25H CBW ; AL的符號擴展到AH DIV BL ; 0034H25H,結(jié)果為 ; (AH)=0FH, (AL)=01H(五)(五) BCDBCD碼運算的十進制調(diào)整指令碼運算的十進制調(diào)整指令l專用于對專用于對BCD碼運算的結(jié)果進行調(diào)整碼運算的結(jié)果進行調(diào)整l包括:包括:DAADAA、AAAAAA、DASDAS、AASAAS、AAMAAM、AADAADl均為隱含尋址,隱含的操作數(shù)為均為隱含尋址,隱含的操作數(shù)為ALAL和和AHAHl為何要對為

32、何要對BCD碼的運算結(jié)果進行調(diào)整?碼的運算結(jié)果進行調(diào)整? BCD碼本質(zhì)上是碼本質(zhì)上是十進制數(shù)十進制數(shù),即應遵循,即應遵循逢十逢十進一進一的規(guī)則。而計算機是按的規(guī)則。而計算機是按二進制(十六二進制(十六進制)進制)進行運算,并未按十進制規(guī)則進行進行運算,并未按十進制規(guī)則進行運算。運算。調(diào)整原理:先看一個例子調(diào)整原理:先看一個例子例例1 1: 0000 1000 8 0000 1000 8 + 0000 0101 + 0000 0101 + + 5 5 0000 1101 13 0000 1101 13 結(jié)果為結(jié)果為0DH0DH。而在。而在BCDBCD碼中,只允許碼中,只允許0909這這1010個

33、數(shù)字出現(xiàn),個數(shù)字出現(xiàn),0DH0DH不代表任何不代表任何BCDBCD碼。碼。為什么會出現(xiàn)這種情況呢?原因在于為什么會出現(xiàn)這種情況呢?原因在于BCDBCD碼是逢十進一,但碼是逢十進一,但計算機是逢十六進一;因此,應在個位補上計算機是逢十六進一;因此,應在個位補上6 6,促其產(chǎn)生進,促其產(chǎn)生進位。位。對上例的結(jié)果進行加對上例的結(jié)果進行加6 6調(diào)整:調(diào)整:0000 1101 0000 1101 + 0000 0110 + 0000 0110 0001 0011 =13 0001 0011 =13例例2 2 0000 10000000 1000 8 8 +0000 1001 +0000 1001 +9+

34、9 000 0001 1 0001 0001 1111 17 17 原因在于計算機在運算過程中,如遇到低原因在于計算機在運算過程中,如遇到低4 4位往高位往高4 4位產(chǎn)生進位時(此時位產(chǎn)生進位時(此時AF=1AF=1)是按逢十六進一的規(guī)則,但)是按逢十六進一的規(guī)則,但BCDBCD碼要求逢十進一,因此只要產(chǎn)生碼要求逢十進一,因此只要產(chǎn)生進位,個位就會暗中丟失一個進位,個位就會暗中丟失一個6 6,這就要進行加,這就要進行加6 6調(diào)正。調(diào)正。對上例的結(jié)果進行加對上例的結(jié)果進行加6 6調(diào)整:調(diào)整:0001 0001 0001 0001 + 0000 0110 + 0000 0110 0001 0111

35、 =17 0001 0111 =17總的調(diào)整原理是:總的調(diào)整原理是:凡遇到某凡遇到某4 4位二進制碼對應的位二進制碼對應的BCDBCD碼大于碼大于9 9時,時,則加六進行調(diào)整;凡是低則加六進行調(diào)整;凡是低4 4位往高位往高4 4位產(chǎn)生了位產(chǎn)生了進位時,則加進位時,則加6 6進行調(diào)整。進行調(diào)整。1)1)加法的十進制調(diào)整指令加法的十進制調(diào)整指令(1)(1)非壓縮非壓縮BCDBCD碼加法調(diào)整碼加法調(diào)整AAA本指令對在本指令對在ALAL中的由兩個未組合的中的由兩個未組合的BCDBCD碼相加后的碼相加后的結(jié)果進行調(diào)整,得到一個正確的未組合的結(jié)果進行調(diào)整,得到一個正確的未組合的BCDBCD碼。碼。lAAA

36、AAA指令只影響指令只影響AFAF和和CFCF,其余標志無定義。,其余標志無定義。lAAAAAA指令應緊跟在指令應緊跟在ADDADD或或ADCADC指令之后。指令之后。如果AL的低4位9AF=1,則: AL(AL)+6,(AH)(AH)+1,AF1 AL(AL)0FH) CFAF否則AL(AL)0FHAAA指令的操作如下:例例3 3:有兩個多位十進制數(shù):有兩個多位十進制數(shù)26582658和和3619 3619 ,以非壓縮,以非壓縮的的BCDBCD碼形式存放在內(nèi)存中,求二者之和。碼形式存放在內(nèi)存中,求二者之和。即即2658+3619=2658+3619=? 假定二數(shù)在內(nèi)存中均是低位在前,高位在后

37、,另留假定二數(shù)在內(nèi)存中均是低位在前,高位在后,另留出出5 5個單元存放相加的結(jié)果。個單元存放相加的結(jié)果。內(nèi)存中數(shù)據(jù)存放形式見下頁圖。內(nèi)存中數(shù)據(jù)存放形式見下頁圖。06H02H09H01HSTRING1STRING208H 05H06H03H被被加加數(shù)數(shù)加加數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)段段85629163SUM結(jié)結(jié)果果.程序程序段為段為: LEA SI LEA SI,STRING1 STRING1 ;STRING1STRING1偏移地址送偏移地址送SISI LEA DI LEA DI,STRING2 STRING2 ;STRING2STRING2偏偏移地移地址送址送DIDI LEA BX LEA BX,SUM S

38、UM ;SUMSUM偏移地址送偏移地址送BXBX MOV CXMOV CX,4 4 ;循環(huán);循環(huán)4 4次次 CLC CLC ;清進位標志;清進位標志AGAINAGAIN:MOV ALMOV AL,SISI ADC AL ADC AL,DI DI ;帶進位加;帶進位加 AAA AAA ;未壓縮;未壓縮BCDBCD碼調(diào)正碼調(diào)正 MOV BX MOV BX,AL AL ;結(jié)果存入;結(jié)果存入SUMSUM INC SI INC SI ;調(diào)整指針;調(diào)整指針 INC DI INC DI INC BX INC BX DEC CX DEC CX ;循環(huán)計數(shù)器減;循環(huán)計數(shù)器減1 1 JNZ AGAIN JNZ A

39、GAIN ;若未處理完;若未處理完, ,則轉(zhuǎn)則轉(zhuǎn)AGAINAGAIN(2)(2)壓縮壓縮BCDBCD碼加法調(diào)整碼加法調(diào)整DAAl兩個壓縮兩個壓縮BCDBCD碼相加結(jié)果在碼相加結(jié)果在ALAL中,通過中,通過DAADAA調(diào)整得到一個正確的壓縮調(diào)整得到一個正確的壓縮BCDBCD碼碼. .l指令操作指令操作( (調(diào)整方法調(diào)整方法) ): 若若ALAL的低的低4 4位位99AF=1AF=1 則則(AL)(AL)+6(AL)(AL)+6,AF1AF1 若若ALAL的高的高4 4位位99CF=1CF=1 則則(AL)(AL)+60H(AL)(AL)+60H,CF1CF1l除除OFOF外,外,DAADAA指令影響所有其它標志。指令影響所有其它標志。lDAADAA指令應緊跟在指令應緊跟在ADDADD或或ADCA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論