版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
二、8086/8088的指令系統(tǒng)(續(xù))2.算術(shù)運(yùn)算指令(Arithmetic)內(nèi)容:
8086/8088提供加、減、乘、除、轉(zhuǎn)換五種基本算術(shù)操作;
利用十進(jìn)制調(diào)整指令和ASCII調(diào)整指令對(duì)BCD碼表示的十進(jìn)制數(shù)進(jìn)行算術(shù)運(yùn)算;
對(duì)帶符號(hào)數(shù)與無符號(hào)數(shù)進(jìn)行乘、除運(yùn)算。(一)加法指令(Arithmetic)(二)減法指令(Subtraction)(三)乘法指令(Multiplication)(四)除法指令(Division)(五)轉(zhuǎn)換指令特點(diǎn):
大部分都影響標(biāo)志位,不同指令影響不同:(1)加、減法指令影響SF,ZF,AF,PF,CF,OF;(2)加1和減1指令不影響CF;(3)乘法指令影響CF,OF;(4)除法指令使大部分標(biāo)志位的狀態(tài)不確定;(5)對(duì)BCD碼調(diào)整指令對(duì)標(biāo)志位的影響不同;(6)轉(zhuǎn)換指令對(duì)標(biāo)志位無影響
都可以用于字節(jié)、字的運(yùn)算;
雙操作數(shù)指令除源為立即數(shù)外,其余必須有一個(gè)操作數(shù)
為寄存器;單操作數(shù)指令不能為立即數(shù)。
(一)加法指令(Arithmetic)8086具有5種加法操作指令:1、ADD(Addition)加法指令2、ADC(Addwithcarry)帶進(jìn)位加法指令3、INC(Incrementby1)加1指令
4、AAA(ASCIIadjustforaddition)加法ASCII調(diào)整指令5、DAA(Decimaladjustforaddition)加法十進(jìn)制調(diào)整指令
1、ADD(Addition)加法指令指令格式:ADDdest,src;(dest)(dest)+(src)
Src:立即數(shù),寄存器,存儲(chǔ)器。 dest:寄存器,存儲(chǔ)器。例: ADDCL,10 ;寄存器+立即數(shù) ADDDX,SI ;寄存器+寄存器 ADDAX,MEM ;寄存器+存儲(chǔ)器 ADDDATA[BX],AL ;存儲(chǔ)器+寄存器 ADDBYTEPTRALPHA[DI],30H;存儲(chǔ)器+立即數(shù)特點(diǎn):
可以進(jìn)行8位、16位的無符號(hào)數(shù)和帶符號(hào)數(shù)的加法運(yùn)算;
源操作數(shù)和目標(biāo)操作數(shù)不能同時(shí)為存儲(chǔ)器,不能為段寄存器;
指令影響標(biāo)志位的情況:
OF=1, 8位帶符號(hào)數(shù)相加,和超出范圍(-128~+127),16位帶符號(hào)數(shù)相加,和超出范圍(-32768~+32767);CF=1,8位無符號(hào)數(shù)相加,和超過255,
16位無符號(hào)數(shù)相加,和超過65535。其他條件標(biāo)志(SF,AF,PF,ZF)根據(jù)定義設(shè)定。例 MOVAL,7EH ;(AL)=7EH MOVBL,5BH ;(BL)=5BH ADDAL,BL ;(AL)=7EH+5BH=D9H影響標(biāo)志位的情況: SF=1 ,結(jié)果最高位=1 ZF=0 ,結(jié)果不等于0 AF=1 ,D3位向D4有進(jìn)位 PF=0 ,”1”的個(gè)數(shù)為奇數(shù) CF=0 ,無進(jìn)位 OF=1 ,和超過+127
(兩個(gè)正數(shù)相加,結(jié)果為負(fù);反之亦是)2、ADC(Addwithcarry)帶進(jìn)位加法指令格式:ADCdest,src;(dest)←(dest)+(src)+CF
CF:
進(jìn)位標(biāo)志CF的現(xiàn)行值(上條指令CF值)特點(diǎn):與ADD同。用途:主要用于多字節(jié)運(yùn)算中。類型舉例: ADCCX,300 ;寄存器+立即數(shù)+CF ADCAL,BL ;寄存器+寄存器+CF ADCDX,COUNT[SI] ;寄存器+存儲(chǔ)器+CF ADCBLOCK[DI],BX ;存儲(chǔ)器+寄存器+CFADCBYTEPTRMEM,6 ;存儲(chǔ)器+立即數(shù)+CF用途舉例:計(jì)算兩個(gè)多字節(jié)數(shù)相加3B74AC60F8H+20D59E36C1H=?兩個(gè)多字節(jié)數(shù)存放在:DATA1,DATA2的開始單元。多字節(jié)數(shù)內(nèi)存存放程序:
MOVCX,5 MOVSI,0 ;清SI
CLC ;清CFLOOPER: MOVAL,DATA2[SI]
ADCDATA1[SI],AL INCSI ;(SI)+1(SI) DECCX ;(CX)-1(CX) JNZLOOPER ;(CX)0轉(zhuǎn) HLT ;停機(jī)問題思考:(1) 什么叫溢出?什么叫進(jìn)位?(2) 有進(jìn)位就有溢出,沒有進(jìn)位就沒有溢出?(1)溢出------是指帶符號(hào)數(shù)的補(bǔ)碼溢出。
字長(zhǎng)為n位帶符號(hào)數(shù),補(bǔ)碼運(yùn)算能表示范圍為:-2n-1~+2n+1–1如果運(yùn)算結(jié)果超出該范圍,叫補(bǔ)碼溢出,簡(jiǎn)稱溢出。在溢出時(shí),造成運(yùn)算錯(cuò)誤。
進(jìn)位------是指運(yùn)算結(jié)果的最高位向更高位的進(jìn)位。有進(jìn)位,CF=1;無進(jìn)位,CF=0問題思考:(1) 什么叫溢出?什么叫進(jìn)位?(2) 有進(jìn)位就有溢出,沒有進(jìn)位就沒有溢出?(1)溢出------是指帶符號(hào)數(shù)的補(bǔ)碼溢出。
字長(zhǎng)為n位帶符號(hào)數(shù),補(bǔ)碼運(yùn)算能表示范圍為:-2n-1~+2n+1–1如果運(yùn)算結(jié)果超出該范圍,叫補(bǔ)碼溢出,簡(jiǎn)稱溢出。在溢出時(shí),造成運(yùn)算錯(cuò)誤。
進(jìn)位------是指運(yùn)算結(jié)果的最高位向更高位的進(jìn)位。有進(jìn)位,CF=1;無進(jìn)位,CF=0(2)有進(jìn)位就有溢出,沒有進(jìn)位就沒有溢出?結(jié)論: 有進(jìn)位不一定有溢出,沒有進(jìn)位不一定沒有溢出。以8位二進(jìn)制數(shù)為例分析一下數(shù)的溢出與進(jìn)位情況:下面分4種情況加以討論:(1) 帶符號(hào)數(shù)和無符號(hào)數(shù)都不溢出(2) 無符號(hào)數(shù)溢出(3) 帶符號(hào)數(shù)溢出(4) 帶符號(hào)數(shù)和無符號(hào)數(shù)都溢出(1) 帶符號(hào)數(shù)和無符號(hào)數(shù)都不溢出(2) 無符號(hào)數(shù)溢出二進(jìn)制數(shù)看作無符號(hào)數(shù)看作帶符號(hào)數(shù)0000011111111011+000000107251+258+7-5++2相加標(biāo)志CF=1,OF=0CF=1OF=0溢出無符號(hào)數(shù)溢出溢出結(jié)果應(yīng)為2,錯(cuò)不溢出異號(hào)數(shù)相加不可能有溢出CF=1(3) 帶符號(hào)數(shù)溢出二進(jìn)制數(shù)看作無符號(hào)數(shù)看作帶符號(hào)數(shù)00001001011111100+100001019124+133+9+124++133相加標(biāo)志CF=0,OF=1CF=0OF=1溢出帶符號(hào)數(shù)溢出不溢出溢出結(jié)果為-5結(jié)果錯(cuò)(4) 帶符號(hào)數(shù)和無符號(hào)數(shù)都溢出結(jié)論:(1)帶符號(hào)數(shù)相加溢出
根據(jù)OF=1?,判斷帶符號(hào)數(shù)產(chǎn)生溢出?
OF=1,同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相反,產(chǎn)生溢出;OF=0,同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相同,不產(chǎn)生溢出;異號(hào)數(shù)相加,不可能溢出。(2)無符號(hào)數(shù)相加溢出
根據(jù)CF=1?,判斷無符號(hào)數(shù)產(chǎn)生溢出?
CF=1,無符號(hào)數(shù)相加產(chǎn)生溢出,但結(jié)果并沒有錯(cuò), 只是結(jié)果放不下。3、INC(Incrementby1)加1指令格式:INC dest ;(B/W),(dest)←(dest)+1 dest:寄存器、存儲(chǔ)器。不能是段寄存器。功能:對(duì)指定的目標(biāo)操作數(shù)+1操作數(shù)單元。用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。標(biāo)志位影響情況:影響SF,ZF,AF,PF,OF。
不影響CF。操作數(shù)類型:可以是寄存器,存儲(chǔ)器。不能是段寄存器。例:INCDL ;8位寄存器+1INCSI ;16位寄存器+1INCBYTEPTR[BX][SI];存儲(chǔ)器+1(字節(jié)操作)INCWORDPTR[DI] ;存儲(chǔ)器+1(字操作)
INCDS ;錯(cuò)(二)減法指令(Subtraction)
8086有7條減法指令:1、SUB(Subtraction)減法指令2、SBB(Subtractionwithborrow)帶進(jìn)位減法指令
3、DEC(Decrementby1)減1指令4、NEG(Negate)求補(bǔ)指令5、CMP(Compare)比較指令6、AAS(ASCIIadjustforsubtraction)減法ASCII調(diào)整指令7、DAS(Decimaladjustforsubtraction)減法十進(jìn)制調(diào)整指令1、SUB(Subtraction)減法指令格式::SUBdest,src;(dest)←(dest)-(src)
Src:立即數(shù),寄存器,存儲(chǔ)器。 Dest:寄存器,存儲(chǔ)器。例: SUBAL,37H ;寄存器-立即數(shù) SUBBX,DX ;寄存器-寄存器 SUBCX,VAR1 ;寄存器-存儲(chǔ)器 SUBARRAY[SI],AX ;存儲(chǔ)器-寄存器SUBWORDPTRALPHA[BX][DI],512H;存儲(chǔ)器減立即數(shù)這種指令影響標(biāo)志位:A、C、O、P、S、Z標(biāo)志。
2、SBB
(Subtractionwithborrow)帶進(jìn)位減法指令
格式::SBBdest,src;(dest)←(dest)-(src)-CF CF:進(jìn)位標(biāo)志CF的現(xiàn)行值(上條指令CF值)
Src:立即數(shù),寄存器,存儲(chǔ)器。 dest:寄存器,存儲(chǔ)器。指令影響標(biāo)志位、B/W數(shù)運(yùn)算情況同SBB用途:用于多字節(jié)數(shù)相減例: SBBBX,100H ;寄存器-立即數(shù)-CF SBBCX,DX ;寄存器-寄存器-CF SBBAL,DATA1[SI] ;寄存器-存儲(chǔ)器-CF SBBDISP[BP],BL ;存儲(chǔ)器-寄存器-CFSBBBYTEPTRALPHA[SI+6],96H;存儲(chǔ)器-立即數(shù)-CF3、DEC(Decrementby1)減1指令格式:DECdest ;(B/W) (dest)←(dest)-1
dest:寄存器 、存儲(chǔ)器。不能是段寄存器。功能:對(duì)指定的目標(biāo)操作數(shù)-1操作數(shù)單元。用途:用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。標(biāo)志位影響情況:影響SF,ZF,AF,PF,OF。
不影響CF。DEC用途舉例: … MOVAX,0FFFFH CYC:DECAX JNZCYC HLT …用于延時(shí)時(shí)間。4、NEG(Negate)求補(bǔ)指令格式:NEGdest;B/W,(dest)←0-(dest)
dest:寄存器 、存儲(chǔ)器。操作:把操作數(shù)按位求反后末位+1。(dest)←0FFFFH-(dest)+1影響標(biāo)志:A、C、O、P、S、Z。CF: 操作數(shù)為0時(shí)求補(bǔ),CF=0;一般使CF=1.OF:對(duì)-128(80H)或-32768(8000H)求補(bǔ),結(jié)果沒有變化,但OF=1;否則OF=0.5、CMP(Compare)比較指令格式:CMPdest,src ;B/W(dest)-(src)
結(jié)果不送,置標(biāo)志。影響標(biāo)志:A、C、O、P、S、Z。
src: 立即數(shù),寄存器,存儲(chǔ)器。 dest:寄存器,存儲(chǔ)器。例: CMPAL,0AH ;寄存器與立即數(shù)比較 CMPCX,DI ;寄存器與寄存器比較 CMPAX,AREA1 ;寄存器與存儲(chǔ)器比較 CMP[BX+5],SI ;存儲(chǔ)器與寄存器比較CMPWORDPTRALPHAGAMMA,100H;存儲(chǔ)器與立即數(shù)比較用途:用比較指令來比較兩個(gè)數(shù)之間的關(guān)系: 兩者是否相等,兩個(gè)數(shù)中哪個(gè)大。(1)根據(jù)Z標(biāo)志,判斷兩者是否相等;(2) 根據(jù)CF標(biāo)志,判斷兩個(gè)無符號(hào)數(shù)的大?。唬?) 用S、O標(biāo)志,判斷二個(gè)帶符號(hào)數(shù)的大小。
(1)根據(jù)Z標(biāo)志,可判斷兩者是否相等例:CMPAX,BX
ZF=1,(AX)=(BX),兩者相等 ZF=0,(AX)=(BX),兩者不相等(2) 根據(jù)CF標(biāo)志,判斷兩個(gè)無符號(hào)數(shù)的大小例:比較AX,BX寄存器,將大數(shù)(AX) …
CMPAX,BX JNCNEXT;CF=0轉(zhuǎn)NEXT XCHGAX,BXNEXT:……結(jié)論:CF=0,(AX)>(BX);CF=1,(AX)<(BX)(3) 用SF、OF標(biāo)志,判斷二個(gè)帶符號(hào)數(shù)的大小設(shè):被比較二個(gè)帶符號(hào)數(shù)分別為:A、B分四種情況討論:
A>0,B>0
A<0,B<0 A>0,B<0 A<0,B>0四種情況討論(操作數(shù)以8位為例):ABCMPA,B結(jié)論75A>0,B>0SF=0,OF=0則:A>B57情況A>0,B>0SF=1,OF=0則:A<B-525-7-2-5-71-7-5-5-(-7)+2A<0,B<0SF=1,OF=0則:A<BA<0,B<0SF=0,OF=0則:A>B-7-(-5)-2
3+127-50A>0,B<0OF=1,SF=1則:A>B+127-(-50)+177
4-50+127A<0,B>0SF=0,OF=1則:A<B-50-(+127)-1777-52127-(-50)=177在計(jì)算機(jī)中運(yùn)算時(shí)
01111111+0011001010110001=-79分析以上四種情況得出如下結(jié)論:OF=SF=0或SF=OF=1時(shí):記作SFOF=0,則:
A>B;
OF、SF異號(hào)時(shí):記作SO=1,則:
A<B。CMP指令應(yīng)用舉例:帶符號(hào)數(shù)找最大值
若自BLOCK開始的內(nèi)存緩沖區(qū)中,有100個(gè)帶符號(hào)數(shù)。找出最大值。并存放到MAX單元中。思路:
第一個(gè)數(shù)取出
(AX),取出第二個(gè)數(shù)(第二個(gè)字單元內(nèi)容)與(AX)比較: (AX)>第二個(gè)數(shù),不做交換,否則,(第二個(gè)字單元內(nèi)容)(AX)。再取第三個(gè)數(shù),
…
經(jīng)過99次比較,在(AX)中得到最大數(shù)。
…編程: … MOVBX,OFFSETBLOCK MOVAX,[BX] INCBX INCBX MOVCX,99AGAIN:CMPAX,[BX]
JGNEXT
;(AX)>(16d(ds)+(BX))轉(zhuǎn)NEXT MOVAX,[BX]NEXT: INCBX INCBX DECCX
JNZAGAIN MOVMAX,AX ;MAX單元存放最大值 …(三)乘法指令無符號(hào)MUL,帶符號(hào)IMULwhy/?因?yàn)?例:3×(-2)=-6,3×14=42(2AH)方法一:直接相乘0011×111000101010=2AH方法二:去掉符號(hào)位,相乘后,再添上符號(hào)位(取補(bǔ)碼)0011
×001000000110取補(bǔ)碼111111010=FAH=-6說明?SRC只能是通用REG或M尋址,不能是立即數(shù)。?只能是字節(jié)乘字節(jié)或字乘字?存儲(chǔ)器尋址時(shí)加類型說明,如
MULBYTEPTR[BX]MULWORDPTR[BX]格式:
MUL(IMUL)SRC;SRC字節(jié):(AL)×SRCAXSRC字:(AX)×SRCDX:AX(四)除法指令
1、有符號(hào)數(shù)和無符號(hào)數(shù)除法指令格式:
DIV(IDIV)SRC;SRC字節(jié):(AX)÷SRCAL(商)…AH(余數(shù))SRC字:(DX:AX)÷
SRCAX(商)…DX(余數(shù))注意:SRC不能是立即數(shù);若商超出字或字節(jié)表示的范圍,自動(dòng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 考研政治輔導(dǎo)馬原
- 安全生產(chǎn)管理理念與案例分析
- 聯(lián)想猜詞游戲
- 車工工人轉(zhuǎn)正申請(qǐng)書15篇
- 2025年輪胎均勻性試驗(yàn)機(jī)項(xiàng)目合作計(jì)劃書
- 江蘇鹽城鹽城八校2025屆高三上學(xué)期開學(xué)考試化學(xué)試卷試題及答案解析
- 很好的高習(xí)參考計(jì)劃范文
- 駕校場(chǎng)地出租合同模板
- 技術(shù)設(shè)備融資租賃協(xié)議書
- 八年級(jí)語文上冊(cè)第二單元人物畫像6藤野先生高效教案新人教版
- IPC-7530A-2017 CN群焊工藝溫度曲線指南(再流焊和波峰焊)
- 初期支護(hù)設(shè)計(jì)驗(yàn)算
- 石關(guān)煤礦緊急避險(xiǎn)系統(tǒng)管理制度及技術(shù)檔案匯編
- 醫(yī)院醫(yī)務(wù)科科長(zhǎng)崗位競(jìng)聘答辯PPT課件(帶內(nèi)容)
- 2023年華僑、港澳、臺(tái)聯(lián)考高考語文試卷(含解析)
- 快上來吧要開車了課件
- 非織造學(xué)講義(大學(xué)期末復(fù)習(xí)資料)
- 《菜根譚》讀書分享
- 年產(chǎn)10萬噸氫化棕櫚硬脂(包含下游產(chǎn)品5萬噸硬脂酸)、5000噸甘油、黑腳擴(kuò)產(chǎn)項(xiàng)目環(huán)境影響評(píng)價(jià)報(bào)告書
- 工會(huì)法課件完整版
- 機(jī)械租賃施工公司機(jī)構(gòu)設(shè)置
評(píng)論
0/150
提交評(píng)論