微機原理4[1]3算術運算指令_第1頁
微機原理4[1]3算術運算指令_第2頁
微機原理4[1]3算術運算指令_第3頁
微機原理4[1]3算術運算指令_第4頁
微機原理4[1]3算術運算指令_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、二、算術運算指令二、算術運算指令 8086有加減乘除四種基本算術運算指令。有加減乘除四種基本算術運算指令??商幚頍o符號數(shù)或帶符號數(shù)的可處理無符號數(shù)或帶符號數(shù)的8位或位或16位二位二進制數(shù),也可以進行十進制數(shù)的運算。具體進制數(shù),也可以進行十進制數(shù)的運算。具體有六種:有六種:u 1 1、加法指令、加法指令u 2 2、減法指令、減法指令u 3 3、乘法指令、乘法指令u 4 4、除法指令、除法指令u 5 5、符號擴展指令、符號擴展指令u 6 6、十進制調整指令、十進制調整指令4.2 8086/80884.2 8086/8088的指令集的指令集1 1 、加法指令、加法指令u涉及帶符號數(shù)、無符號數(shù),帶符號

2、數(shù)均為補碼涉及帶符號數(shù)、無符號數(shù),帶符號數(shù)均為補碼表示;表示; 8位帶符號數(shù):位帶符號數(shù):-128 +127; 8位無符號數(shù):位無符號數(shù):0 255; 16位帶符號數(shù):位帶符號數(shù):-32768 +32767; 16位無符號數(shù):位無符號數(shù):0 65535;u操作結果影響標志寄存器中的相應標志位。操作結果影響標志寄存器中的相應標志位。u加法指令共包含三類加法指令共包含三類:(1 1)加)加1 1指令指令 INCINC(2 2)不帶進位加指令)不帶進位加指令 ADDADD(3 3)帶進位加指令)帶進位加指令 ADCADC(1 1)不帶進位的加法指令)不帶進位的加法指令ADDADD 指令格式:指令格式

3、: ADD destADD dest,srcsrc;destdest dest + srcdest + src 指令功能:指令功能: 將目的操作數(shù)與源操作數(shù)相加,結果存將目的操作數(shù)與源操作數(shù)相加,結果存入目的操作數(shù)中,源操作數(shù)的內容不改變。入目的操作數(shù)中,源操作數(shù)的內容不改變。 指令規(guī)范指令規(guī)范:u ADD ADD 指令可以實現(xiàn)字節(jié)或字的不帶進位的加指令可以實現(xiàn)字節(jié)或字的不帶進位的加; 但是相加的數(shù)必須是等字長的但是相加的數(shù)必須是等字長的。 例:例:ADD AX,2000H ; AX+2000HAX ADD AL,BL ;AL+BL ALu 目的操作數(shù)可以是通用寄存器或存儲器目的操作數(shù)可以是通

4、用寄存器或存儲器; 源操作數(shù)可以是通用寄存器源操作數(shù)可以是通用寄存器、存儲器或立即數(shù)存儲器或立即數(shù); 但是目的操作數(shù)與源操作數(shù)不能同時為存儲器但是目的操作數(shù)與源操作數(shù)不能同時為存儲器。 ADD BX,SI ;u ADD ADD 指令會影響標志寄存器的內容指令會影響標志寄存器的內容。 例例1 1:ADD WORD PTR BX,9F76H設設DS=2000HDS=2000H,BX=1000HBX=1000H,則目的物理地址,則目的物理地址=21000H =21000H ; 設設執(zhí)行前執(zhí)行前(21000H)=88H(21000H)=88H, (21001H)=A9H(21001H)=A9H;執(zhí)行過

5、程執(zhí)行過程: 1010100110001000B =A988H 1001111101110110B =9F76H 1 0100100011111110B =48FEH 執(zhí)行后執(zhí)行后(21000H)=FEH,(21001H)=48H(21000H)=FEH,(21001H)=48H; 標志位標志位: CF=1,最高位產(chǎn)生進位最高位產(chǎn)生進位; OF=1OF=1,兩負數(shù)相加,和為正,兩負數(shù)相加,和為正, 結果是錯的,說明溢出結果是錯的,說明溢出; ZFZF、SFSF、PFPF和和AFAF全為零。全為零。(2 2)帶進位加指令)帶進位加指令ADCADC 指令格式:指令格式: ADC destADC d

6、est,srcsrc;destdest dest+src+CFdest+src+CF 指令功能:指令功能: 將目的操作數(shù)加源操作數(shù),再加前面指令將目的操作數(shù)加源操作數(shù),再加前面指令產(chǎn)生的進位,結果送目的操作數(shù)。產(chǎn)生的進位,結果送目的操作數(shù)。u 指令規(guī)范同指令規(guī)范同ADD ADD 指令;指令;u 帶進位加法指令帶進位加法指令ADCADC常用于多字節(jié)數(shù)的運算常用于多字節(jié)數(shù)的運算例例2:求兩個求兩個4字節(jié)無符號數(shù)字節(jié)無符號數(shù) 0107A379H+10067E4FH的和。的和。法法1:程序段:程序段: MOV DX,0107HMOV AX,0A379HMOV BX,1006HMOV CX,7E4FHA

7、DD AX,CXADC DX,BXHLT結果:結果:(DX:AX)= 110E21C8H0 1 0 7 A379H1 0 0 6 7E4FH+ 1 1 0 E 21C8H、例例2:求兩個求兩個4字節(jié)無符號數(shù)字節(jié)無符號數(shù) 0107A379H+10067E4FH的和。(的和。(續(xù)續(xù))法法2:程序段:程序段: LEA BX,DA1LEA SI,DA2MOV AX,BXADD AX,SIMOV DX,BX+2ADC DX,SI+2HLTA3H07H01H79H10H06H7EH4FHDA1DA2(3 3)加)加1 1指令指令INCINC指令格式:指令格式: INC OPR INC OPR ;OPROP

8、R+1OPROPR+1指令功能:指令功能: 將目的操作數(shù)加將目的操作數(shù)加1 1,結果送目的操作數(shù)。,結果送目的操作數(shù)。uINCINC指令是一個單操作數(shù)指令,操作數(shù)可以指令是一個單操作數(shù)指令,操作數(shù)可以是是寄存器或存儲器寄存器或存儲器操作數(shù)。操作數(shù)。u可以為字節(jié)操作或字操作可以為字節(jié)操作或字操作。u加加1指令不影響指令不影響CF標志。標志。 例:設例:設BX=1234HBX=1234H,執(zhí)行指令,執(zhí)行指令 INC BX INC BX ; 結果結果:BX=1235Hu加加1 1指令可用于對計數(shù)器和地址指針進行修改。指令可用于對計數(shù)器和地址指針進行修改。INC ALINC AL;AL+1ALAL+1

9、ALINC CXINC CX;CX+1CXCX+1CXINC BYTE PTR BX+DI+2INC BYTE PTR BX+DI+2 ;(DS(DS* *16+BX+DI+2)+1(DS16+BX+DI+2)+1(DS* *16+BX+DI+2)16+BX+DI+2)(1 1)不帶借位的減指令)不帶借位的減指令 SUBSUB(2 2)帶借位減指令)帶借位減指令 SBBSBB(3 3)減)減1 1指令指令 DECDEC(4 4)求補指令)求補指令 NEGNEG(5 5)比較指令)比較指令 CMPCMP2、減法指令減法指令(1 1)不帶借位的不帶借位的減指令減指令SUBSUB 指令格式:指令格式

10、: SUB destSUB dest,srcsrc;destdest dest - srcdest - src 指令功能:指令功能: 目的操作數(shù)減源操作數(shù),結果存于目的操作目的操作數(shù)減源操作數(shù),結果存于目的操作數(shù),源操作數(shù)內容不變;數(shù),源操作數(shù)內容不變;u指令規(guī)范同指令規(guī)范同ADD ADD 指令;指令;u例:減法運算。例:減法運算。MOV AX MOV AX ,5678H5678H ;AX=5678HAX=5678HSUB AX SUB AX ,1234H1234H ;AX=4444HAX=4444HMOV BX MOV BX ,3354H3354H ;BX=3354HBX=3354HSUB

11、BX SUB BX ,3340H3340H ;BX=0014HBX=0014H 例例3:SUB DH,BP+4設設SS=4000H,BP=00E8H,物理地址,物理地址=400ECH;執(zhí)行前:執(zhí)行前:DH=45H,(400ECH)=87H;執(zhí)行后:執(zhí)行后:DH=BEH; 標志位:標志位: 最高位產(chǎn)生借位,最高位產(chǎn)生借位,CF=1; ZF=0,SF=1,AF=1,PF=1; 正數(shù)減負數(shù)等于負數(shù),結果為負,錯正數(shù)減負數(shù)等于負數(shù),結果為負,錯。原因是原因是69+121=190 +127, 則則OF=1,溢出;,溢出;u如果表示數(shù)的運算范圍受到限制如果表示數(shù)的運算范圍受到限制,可以擴展成可以擴展成16

12、位字運算,位字運算,結果就正確。結果就正確。 45H87H BEH、(2 2)帶借位減指令)帶借位減指令 SBBSBB 指令格式:指令格式: SBB destSBB dest,srcsrc;destdest dest srcdest src - CF - CF 指令功能:指令功能: 目的操作數(shù)減源操作數(shù)再減低位借位目的操作數(shù)減源操作數(shù)再減低位借位CFCF,結果送目的操,結果送目的操作數(shù),源操作數(shù)內容不變。作數(shù),源操作數(shù)內容不變。u指令規(guī)范同指令規(guī)范同ADDADD指令;指令;u主要用于多字節(jié)(字)減法運算中。主要用于多字節(jié)(字)減法運算中。u例:例: SUB AXSUB AX,BXBX SBB

13、DX SBB DX,CXCXDX AXCX BX DX AX、(3 3)減)減1 1指令指令DECDEC 指令格式:指令格式: DEC OPR DEC OPR ; OPR OPR OPR-1OPR-1 指令功能:指令功能: 將目的操作數(shù)減將目的操作數(shù)減1 1,結果送目的操作數(shù)。,結果送目的操作數(shù)。uDECDEC指令是一個單操作數(shù)指令,操作數(shù)可以是指令是一個單操作數(shù)指令,操作數(shù)可以是寄存器或存儲器操作數(shù)。寄存器或存儲器操作數(shù)。u可以為字節(jié)操作或字操作可以為字節(jié)操作或字操作。u減減1指令不影響指令不影響CF標志。標志。 例例4 4: 設設 CX=100CX=100,執(zhí)行指令,執(zhí)行指令 DEC CX

14、 DEC CX ;CXCXCXCX1 1 結果結果:CX=99u減減1 1指令指令DECDEC也一般用于對計數(shù)器和地址指針也一般用于對計數(shù)器和地址指針的修改。的修改。DEC AXDEC CLDEC WORD PTR SI(4 4)求補指令)求補指令NEGNEG 指令格式:指令格式: NEG OPR NEG OPR ;OPR OPR OPR OPR 指令功能:指令功能: 將目的操作數(shù)的每一位求反(包括符號將目的操作數(shù)的每一位求反(包括符號位)位),然,然后末位加后末位加1 1,結果送目的操作數(shù)。,結果送目的操作數(shù)。uNEGNEG指令實現(xiàn)帶符號數(shù)的求補操作;實際上指令實現(xiàn)帶符號數(shù)的求補操作;實際上

15、執(zhí)行的是執(zhí)行的是 0 0 OPR OPR OPR OPR 。uNEGNEG指令影響標志位指令影響標志位。若操作數(shù)為零時,若操作數(shù)為零時,CF=0;否則;否則,CF=1;若字節(jié)操作數(shù)為若字節(jié)操作數(shù)為-128(80H)、字操作數(shù)為)、字操作數(shù)為-32768(8000H),求補后值不變,但),求補后值不變,但OF=1。例例5 5:分析下面求補運算指令段的執(zhí)行結果。分析下面求補運算指令段的執(zhí)行結果。MOVMOVAXAX,0FF64H0FF64HNEGNEGALAL ;AX=0FF9CHAX=0FF9CH,CF=1CF=1SUBSUBALAL,9DH9DH ;AX=0FFFFHAX=0FFFFH,CF=

16、1CF=1NEGNEGAXAX ;AX=0001HAX=0001H,CF=1CF=1DECDECALAL ;AX=0000HAX=0000HNEGNEGAXAX ;AX=0000HAX=0000H,CF=0CF=0(5)比較指令)比較指令 CMP 指令格式:指令格式: CMP destCMP dest,srcsrc ; dest srcdest src , ;并;并置標志位置標志位 指令功能:指令功能: 目的操作數(shù)減源操作數(shù),根據(jù)結果置相目的操作數(shù)減源操作數(shù),根據(jù)結果置相應標志位,應標志位, destdest,srcsrc的值不變。的值不變。udestdest,srcsrc的規(guī)定同的規(guī)定同AD

17、DADD指令中的操作數(shù);指令中的操作數(shù);u比較指令設置標志位,由條件轉移指令檢測比較指令設置標志位,由條件轉移指令檢測決定是否轉移。決定是否轉移。u例例6:比較比較ALAL內容與內容與5050的大小的大小,若,若AL=50AL=50,則則AHAH的內容加的內容加1 1;否則,;否則,AH=0。程序段:程序段: CMP ALCMP AL,50 50 ;ALAL5050 JB BELOW JB BELOW ;AL50AL=50AL=50,AH+1AHAH+1AH JMP LOOPJMP LOOPBELOWBELOW:MOV AHMOV AH,00H 00H ;AH=0AH=0 LOOP LOOP:

18、HLTHLT 根據(jù)操作數(shù)是無符號數(shù)還是有符號數(shù)判斷如下:根據(jù)操作數(shù)是無符號數(shù)還是有符號數(shù)判斷如下:(1)兩個無符號數(shù))兩個無符號數(shù)A和和B的比較(的比較(AB)當當A=B時,時,ZF=1;當當AB時,時,ZF=0;當當AB時,時,CF=0; 可用可用ZF和和CF標志位來確定標志位來確定當當AB時,時,CF=1;(2)兩個帶符號數(shù))兩個帶符號數(shù)A和和B的比較(的比較(AB) 當當AB時,時,OF=SF=0或或1,即,即OF SF=0; 當當A2051H2052H ALNYMAXAL2051H MOV AL,2050H CMP AL,2051H JG MAX MOV AL,2051HMAX :MO

19、V 2052H,AL;AL大時大時 SF0;如果如果 SF=0則轉則轉MAX3 3、乘法運算指令乘法運算指令(1 1)無符號數(shù)乘法指令)無符號數(shù)乘法指令MULMUL(2 2)帶符號數(shù)乘指令)帶符號數(shù)乘指令IMULIMUL(1 1)無符號數(shù)乘法指令)無符號數(shù)乘法指令MULMUL 指令格式:指令格式: MUL srcMUL src ;隱含尋址;隱含尋址,對字或字節(jié)的乘法,對字或字節(jié)的乘法 指令功能:指令功能: 字節(jié)乘法:字節(jié)乘法:AXAXAL srcsrc (8位位) , 若若AH AH 0 0, 則則CF=OF=1CF=OF=1 字乘法:字乘法: DXDX:AX AX AX AX srcsrc

20、(16位位) , 若若DX DX 0 0,則,則CF=OF=1CF=OF=1 u例例8 8:無符號數(shù)無符號數(shù)0A3H0A3H與與11H11H相乘。相乘。MOVMOVALAL,0A3H0A3H;AL=0A3HAL=0A3HMOVMOVBLBL, 11H11H;BL=11HBL=11HMULMULBLBL ;AX=0AD3HAX=0AD3H說明:說明:u源操作數(shù)源操作數(shù)src不能是立即數(shù)和段寄存器;不能是立即數(shù)和段寄存器; MUL 03H u當當src是存儲單元時,必須在操作數(shù)之前是存儲單元時,必須在操作數(shù)之前加上屬性說明。加上屬性說明。uCF=OF=1,表明結果的高半部分不為,表明結果的高半部分

21、不為0。u乘法指令不影響其他標志位。乘法指令不影響其他標志位。(2 2)帶符號數(shù)乘法指令)帶符號數(shù)乘法指令IMULIMUL 指令格式:指令格式: IMUL srcIMUL src ;B/W B/W ,隱含尋址,隱含尋址 指令功能:指令功能: 字節(jié)乘法:字節(jié)乘法:AXAXAL srcsrc (8位位) , 若若AH AH 0 0,則,則CF=OF=1CF=OF=1 字乘法:字乘法: DXDX:AX AX AX AX srcsrc (16位位) , 若若DX DX 0 0,則,則CF=OF=1CF=OF=1 uIMULIMUL指令除運算對象是帶符號二進制數(shù)指令除運算對象是帶符號二進制數(shù)( (補碼補

22、碼) )外,其他都與外,其他都與MULMUL一樣。一樣。usrcsrc是寄存器或存儲單元的內容。是寄存器或存儲單元的內容。例例9 9:帶符號數(shù)帶符號數(shù)0B4H0B4H與與11H11H相乘。相乘。 MOV ALMOV AL,0B4H0B4H;AL=B4HAL=B4H MOV MOV BL BL,11H11H ;BL=11HBL=11H IMUL BL IMUL BL ;AX=0FAF4HAX=0FAF4H 說明:說明:l 若結果的高若結果的高8 8位為全位為全0 0或全或全1 1,表明是低,表明是低8 8位的符號位的符號位擴展位擴展;l 帶符號數(shù)的乘法,應先處理符號,然后用原碼計帶符號數(shù)的乘法,

23、應先處理符號,然后用原碼計算結果。算結果。例例1010:設設 AL=FFHAL=FFH,DL=02HDL=02H,執(zhí)行指令,執(zhí)行指令 MULMUL DL DL ; AX AX AL ALDLDL 即即:AX AX FFH FFH02H=25502H=25502 02 =510 =510 = 01FEH= 01FEH 執(zhí)行指令執(zhí)行指令 IMULIMUL DL DL ;AX AX AL ALDLDL 即即:AX AX FFHFFH02H = 02H = 1 10202 = 2 2 =FFFEH=FFFEH 4 4 、除法運算指令除法運算指令(1 1)無符號數(shù)除指令)無符號數(shù)除指令DIVDIV(2

24、2)帶符號數(shù)除指令)帶符號數(shù)除指令IDIVIDIV(1 1)無符號除指令)無符號除指令DIVDIV指令格式:指令格式: DIV srcDIV src ;B/W B/W ,隱含尋址,隱含尋址指令功能:指令功能: 字節(jié)除法:字節(jié)除法:AX/ (srcAX/ (src) ) 8 8 AL( AL(商商) ) ,AH(AH(余數(shù)余數(shù)) ) 字除法:字除法:(DX(DX:AX)/ (srcAX)/ (src ) )1616 AX( AX(商商) ) , DX(DX(余數(shù)余數(shù)) )u完成兩個不帶符號的二進制數(shù)除;完成兩個不帶符號的二進制數(shù)除;usrcsrc是寄存器或存儲單元的內容是寄存器或存儲單元的內容,

25、不能是立即數(shù),不能是立即數(shù);u運算結果只影響溢出標志運算結果只影響溢出標志OFOF,當除數(shù)為,當除數(shù)為0 0或或AL(AX)AL(AX)中的商大于中的商大于FFH(FFFFH)FFH(FFFFH)時,時,OF=1OF=1。 例例1111:寫出實現(xiàn)無符號數(shù)寫出實現(xiàn)無符號數(shù)0400H/0B4H0400H/0B4H運運算的程序段。算的程序段。MOVMOV AXAX,0400H 0400H ;AX=0400HAX=0400HMOVMOV BLBL,0B4H0B4H ;BL=0B4HBL=0B4HDIVDIV BLBL ;商;商AL=05HAL=05H, ;余數(shù)余數(shù)AH=7CHAH=7CH(2 2)帶符

26、號數(shù))帶符號數(shù)除指令除指令IDIVIDIV 指令格式:指令格式: IDIV srcIDIV src ;B/W B/W ,隱含尋址,隱含尋址 指令功能:指令功能: 字節(jié)除法:字節(jié)除法:AX/ srcAX/ src AL( AL(商商) ),AH(AH(余數(shù)余數(shù)) ); 字除法:字除法:DXDX,AX/ srcAX/ src AX( AX(商商) ) , DX( DX(余數(shù)余數(shù)) );u除法指令除法指令DIVDIV和和IDIVIDIV雖然對標志的影響未定義,雖然對標志的影響未定義,但可產(chǎn)生溢出。但可產(chǎn)生溢出。例例1212:帶符號數(shù)帶符號數(shù)0400H /0B4H0400H /0B4H運算的程序段。運

27、算的程序段。MOVMOV AX AX,0400H0400H;AX=0400HAX=0400HMOVMOV BX BX,0B4H0B4H;BX=0B4HBX=0B4HIDIVIDIV BX BX ;AL=0F3HAL=0F3H, ;AH=24HAH=24H說明說明:帶符號數(shù)的除法,也是先處理符號,然帶符號數(shù)的除法,也是先處理符號,然后用原碼計算結果。后用原碼計算結果。u完成兩個帶符號數(shù)的二進制數(shù)相除,商和余完成兩個帶符號數(shù)的二進制數(shù)相除,商和余數(shù)均為帶符號數(shù);數(shù)均為帶符號數(shù);usrc規(guī)定同規(guī)定同MUL;u除法結果不影響標志寄存器中相應位,為除法結果不影響標志寄存器中相應位,為0或或1,無意義;,

28、無意義;u商超出商超出AL(8位除位除)或或AX(16位除位除)所能表示范所能表示范圍,此時除數(shù)為圍,此時除數(shù)為0處理,產(chǎn)生零號中斷,所處理,產(chǎn)生零號中斷,所得商和余數(shù)均無效;得商和余數(shù)均無效;u當當8位位/8位、位、16位位/16位時,應進行符號位擴位時,應進行符號位擴展,否則得到錯誤結果。展,否則得到錯誤結果。5 5 、符號擴展指令、符號擴展指令(1 1)字節(jié)擴展成字指令)字節(jié)擴展成字指令CBWCBW(2 2)字擴展成雙字指令)字擴展成雙字指令CWDCWD 適用于帶符號數(shù)除法運算適用于帶符號數(shù)除法運算,當被除數(shù),當被除數(shù)的位數(shù)不夠除時。的位數(shù)不夠除時。(1 1)字節(jié)擴展成字指令)字節(jié)擴展成

29、字指令CBWCBW 指令格式:指令格式:CBW CBW ;若;若AL80H,AH=FFH 指令功能:將指令功能:將ALAL中的符號位數(shù)據(jù)擴展至中的符號位數(shù)據(jù)擴展至AHAH。u例例1313:將字節(jié)數(shù)據(jù)擴展成字數(shù)據(jù)。將字節(jié)數(shù)據(jù)擴展成字數(shù)據(jù)。MOVMOVALAL,0A5H0A5H;AL=0A5HAL=0A5HCBWCBW ;AX=0FFA5H,AH=0FFHAX=0FFA5H,AH=0FFHADDADDALAL,70H70H;AL=25HAL=25HCBWCBW;AX=0025H,AH=00HAX=0025H,AH=00H(2 2)字擴展成雙字指令)字擴展成雙字指令CWDCWD 指令格式:指令格式:

30、CWD CWD ;若;若AXAX8000H8000H,DX=0000HDX=0000H ;若;若AXAX8000H8000H,DX=FFFFHDX=FFFFH 指令功能:將指令功能:將AXAX中的符號位數(shù)據(jù)擴展至中的符號位數(shù)據(jù)擴展至DXDX。u例例1414:將字數(shù)據(jù)擴展成雙字數(shù)據(jù)。將字數(shù)據(jù)擴展成雙字數(shù)據(jù)。MOV AXMOV AX,0FFABH 0FFABH ;AX=0FFABHAX=0FFABH MOV BX MOV BX,6543H 6543H ; CWDCWD ;DX=0FFFFHDX=0FFFFH,AX=0FFABHAX=0FFABH IDIV BX IDIV BX ;(DX(DX:AX

31、)/BXAX)/BX例例15:求求(V-(X*Y+Z -540)/X,其中,其中X、Y、Z、V均為均為16位帶符號數(shù),已分別裝入位帶符號數(shù),已分別裝入X、Y、Z、V字單元中,結果的商放字單元中,結果的商放AX中,余數(shù)放中,余數(shù)放DX中。中。MOV AX,X SUB CX,540IMUL Y SBB BX,0MOV CX,AX MOV AX,VMOV BX,DX CWDMOV AX,ZSUB AX,CXCWDSBB DX,BXADD CX,AX IDIV XADC BX,DX HLT6 6 、十進制調整指令十進制調整指令u算術運算指令都是二進制數(shù)的運算,十進算術運算指令都是二進制數(shù)的運算,十進制

32、輸入制輸入二進制運算二進制運算 十進制輸出。十進制輸出。u計算機中的十進制數(shù)實際上是十進制數(shù)的計算機中的十進制數(shù)實際上是十進制數(shù)的二進制編碼。通稱為二二進制編碼。通稱為二十進制或十進制或BCD碼。常用碼。常用8421BCD碼。碼。u對應表對應表:十進制數(shù)十進制數(shù) BCD碼碼 十進制數(shù)十進制數(shù) BCD碼碼0 0000 5 01011 0001 6 01102 0010 7 01113 0011 8 10004 0100 9 1001u壓縮壓縮BCDBCD碼:一個字節(jié)表示兩位十進制數(shù)。碼:一個字節(jié)表示兩位十進制數(shù)。 例例: 8759D: 8759D壓縮壓縮BCDBCD碼為碼為8759H8759Hu

33、非壓縮非壓縮BCDBCD碼:一個字節(jié)表示一位十進制數(shù),碼:一個字節(jié)表示一位十進制數(shù),其中低四位表示其中低四位表示84218421的的BCDBCD碼,高四位為碼,高四位為00000000,沒有意義。沒有意義。 例例: 8759D: 8759D非壓縮非壓縮BCDBCD碼為碼為08070509H08070509H(1 1)壓縮)壓縮BCDBCD碼加法十進制調整指令碼加法十進制調整指令 指令格式:指令格式:DAADAA 指令功能:指令功能: ALAL寄存器的值調整成壓縮的寄存器的值調整成壓縮的BCDBCD碼格式。碼格式。u低低4 4位大于位大于9 9或輔助進位或輔助進位AF=1AF=1,則,則AL=A

34、L+6AL=AL+6且且AF=1AF=1;u如果如果AL=0A0HAL=0A0H或或CF=1CF=1,則,則AL=AL+60HAL=AL+60H且且CF=1CF=1。u用在用在ADDADD、ADCADC指令之后。指令之后。u結果均影響結果均影響SFSF、ZFZF、PFPF。u例例1616:壓縮壓縮BCDBCD碼的加法運算。碼的加法運算。MOV ALMOV AL,68H68H ;AL=68HAL=68H,6868的壓縮的壓縮BCDBCD碼碼MOV BLMOV BL,28H28H ;BL=28HBL=28H,2828的壓縮的壓縮BCDBCD碼碼 ADD ALADD AL,BLBL ;二進制加法;二

35、進制加法, ;AL=68H+28H=90HAL=68H+28H=90HDAADAA ;十進制調整;十進制調整, ;實現(xiàn)壓縮;實現(xiàn)壓縮BCDBCD碼加法碼加法 68+28=9668+28=960110100001101000 00101000001010001001000010010000二進制加法二進制加法0000011000000110十進制調整十進制調整10010000100100001001011010010110(2 2)壓縮)壓縮BCDBCD碼減法十進制調整指令碼減法十進制調整指令 指令格式:指令格式:DASDAS 指令功能:指令功能: ALAL中的值調整到壓縮中的值調整到壓縮BCD

36、BCD碼格式碼格式u如果如果ALAL寄存器中低寄存器中低4 4位大于位大于9 9,則,則AL=ALAL=AL6 6且且AF=1AF=1;u如果如果AL=0A0HAL=0A0H或或CF=1CF=1,則,則AL=ALAL=AL60H60H且且CF=1CF=1;u用在用在SUBSUB、SBBSBB指令之后。指令之后。u均影響均影響SFSF、ZFZF、PFPF。u例例1717:壓縮壓縮BCDBCD碼的減法運算。碼的減法運算。MOV ALMOV AL,68H 68H ;AL=68HAL=68H,6868的壓縮的壓縮BCDBCD碼碼MOV BLMOV BL,29H 29H ;BL=29HBL=29H,29

37、29的壓縮的壓縮BCDBCD碼碼SUB ALSUB AL,BL BL ;二進制減法;二進制減法, ;AL=68H-29H=3EHAL=68H-29H=3EHDAS DAS ;十進制調整;十進制調整, ;實現(xiàn)壓縮;實現(xiàn)壓縮BCDBCD碼減法:碼減法: ;68-29=3968-29=39例例18: 18: 編程計算編程計算 1+2+3+4+ 1+2+3+4+ + +1010 MOV AL,0 MOV CL,10 MOV CH,0NEXT:ADD AL,CL DAA ; DEC CL JNZ NEXT ; HLT程序中將程序中將DAADAA指令去掉,最后指令去掉,最后ALAL結果是?結果是? 對對A

38、L調整為十進制調整為十進制數(shù)數(shù)結果結果 AL= 55 H(即十進制數(shù)(即十進制數(shù)55)AL清清0AL AL+CL調整為十進制數(shù)調整為十進制數(shù)CL CL -1CL=0NYCX10,計數(shù)初值,計數(shù)初值結束結束CL 0 轉轉NEXT例例19:求求(BCD1)+(BCD2) (BCD3)設設(BCD1)=1834,(BCD2)=2789。程序:程序:MOV AL,BCD1 ADD AL,BCD2 DAA MOV BCD3,AL MOV AL,BCD1+1 ADC AL,BCD2+1 DAA MOV BCD3+1,AL HLT(3)非壓縮的)非壓縮的BCD碼加法調整碼加法調整 (加法的(加法的ASCII

39、調整指令)調整指令) 格式:格式:AAA 操作:操作:AL AL中的內容調整為非壓縮的中的內容調整為非壓縮的BCD碼格式碼格式AH AH+調整產(chǎn)生的進位調整產(chǎn)生的進位調整方法:調整方法:如果如果AL的低的低4位大于位大于9或或AF=1,則:,則: 1)AL AL+6;2)AL高高4位清位清0 3)CF AF=1,AH AH+1;否則僅否則僅使使AL的高的高4位清位清0例例20:MOV AL,8 ;AL 38HADD AL,4 ;AL38H+34H=6CHAAA ;AL 6CH+6=72H02H ;AH 01H結果:結果:8+4=12(4)非壓縮的)非壓縮的BCD碼的減法調整碼的減法調整 (減法

40、的(減法的ASCII調整指令)調整指令) 格式:格式:AAS 操作:操作:AL AL中的內容調整為非壓縮的中的內容調整為非壓縮的BCD碼格式碼格式AH AH-調整產(chǎn)生的進位調整產(chǎn)生的進位調整方法:調整方法:如果如果AL的低的低4位大于位大于9或或AF=1,則:,則: 1)AL AL-6;2)AL高高4位清位清0 3) CF 1,AH AH-1;否則僅否則僅使使AL的高的高4位清位清0 例例21: MOV AL,8 ; AL 38H SUB AL,4 ;AL 38H-34H AAS ;AL 04H 結果:結果:8 4=4 (5)乘法的十進制調正指令乘法的十進制調正指令AAM 對對AXAX中由兩個非壓縮中由兩個非壓縮BCDBCD碼相乘的結果進行碼相乘的結果進行調整。調整操作為:

溫馨提示

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

評論

0/150

提交評論