算術(shù)運(yùn)算指令_第1頁
算術(shù)運(yùn)算指令_第2頁
算術(shù)運(yùn)算指令_第3頁
算術(shù)運(yùn)算指令_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、.u 算數(shù)類指令經(jīng)常會影響標(biāo)志位,搞清楚以下兩個概念: 對標(biāo)志沒有定義:指令執(zhí)行后這些標(biāo)志是任意的、不可預(yù)測(就是誰也不知道是0還是1) 對標(biāo)志沒有影響:指令執(zhí)行不改變標(biāo)志狀態(tài)u 注意有符號數(shù)進(jìn)行計算是用其補(bǔ)碼進(jìn)行計算的,有符號數(shù)在計算機(jī)里是以補(bǔ)碼的形式進(jìn)行存儲的!u 使用內(nèi)存地址為尋址方式時,一定要用偽指令指明操作數(shù)類型。 加法類(帶符號數(shù)相加要考慮溢出):1. 加法指令A(yù)DD(ADD 目的操作數(shù),源操作數(shù);將源與目的操作數(shù)相加,結(jié)果送到目的操作數(shù))目的操作數(shù):reg,mem源操作數(shù):imm,reg,mem注意:1. 存儲器之間不能相加。2. 根據(jù)結(jié)果對相應(yīng)的標(biāo)志位作出改變,即,影響標(biāo)志位!

2、2. 帶進(jìn)位加法指令A(yù)DC(ADD 目的操作數(shù),源操作數(shù);將源、目的操作數(shù)與CF標(biāo)志位相加,結(jié)果送到目的操作數(shù))目的操作數(shù):reg,mem源操作數(shù):imm,reg,mem注意:1.存儲器之間不能相加。2.根據(jù)結(jié)果對相應(yīng)的標(biāo)志位作出改變,即,影響標(biāo)志位!3. ADC指令主要與ADD配合,實(shí)現(xiàn)多精度加法運(yùn)算。4.CF是本指令執(zhí)行前的狀態(tài)b 多精度加法運(yùn)算示例mov ax,4652h;ax=4652hadd ax,0f0f0h;ax=3742h,CF=1mov dx,0234h;dx=0234hadc dx,0f0f0h;dx=f325h,CF=0;DX.AX0234 4652HF0F0 F0F0H

3、F325 3742H3.增量指令I(lǐng)NC(increment;INC指令對操作數(shù)加1(增量);INC reg/mem)操作數(shù):reg/mem注意:1. 不影響進(jìn)位CF標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)志。(僅不影響CF,還會影響其他)2. 主要用于對計數(shù)器和地址指針的調(diào)整,而不用來做單純的算術(shù)計算。3. 當(dāng)使用存儲器操作數(shù)時,不得出現(xiàn)二義性。 減法類:4. 減法指令SUB(目的操作數(shù)減去源操作數(shù),結(jié)果送到目的操作數(shù);sub 目的操作數(shù),源操作數(shù))目的操作數(shù):reg,mem源操作數(shù):imm,reg,mem注意:1.存儲器之間不能相減。2.根據(jù)結(jié)果對相應(yīng)的標(biāo)志位作出改變,即,影響標(biāo)志位!3. 看清誰是減數(shù),

4、誰是被減數(shù)。5. 帶借位減法指令SBB(將目的操作數(shù)減去源操作數(shù),再減去借位CF(進(jìn)位),結(jié)果送到目的操作數(shù),)目的操作數(shù):reg,mem源操作數(shù):imm,reg,mem注意:1.存儲器之間不能相減。2.根據(jù)結(jié)果對相應(yīng)的標(biāo)志位作出改變,即,影響標(biāo)志位!3. 看清誰是減數(shù),誰是被減數(shù)。4. SBB指令主要與SUB配合,實(shí)現(xiàn)多精度減法運(yùn)算5.CF是本指令執(zhí)行前的狀態(tài)b 多精度減法運(yùn)算示例mov ax,4652h;ax=4652hsub ax,0f0f0h;ax=5562h,CF=1mov dx,0234h;dx=0234hsbb dx,0f0f0h;dx=1143h,CF=1;DX.AX0234

5、4652HF0F0 F0F0H1143 5562H6. 減量指令DEC(decrement;)操作數(shù):reg/mem注意:1.不影響進(jìn)位CF標(biāo)志,按定義設(shè)置其他狀態(tài)標(biāo)志。(僅不影響CF,還會影響其他)2.主要用于對計數(shù)器和地址指針的調(diào)整,而不用來做單純的算術(shù)計算。3.當(dāng)使用存儲器操作數(shù)時,不得出現(xiàn)二義性。7. 求補(bǔ)指令NEG(negative;用零減去操作數(shù),然后結(jié)果返回該操作數(shù))操作數(shù):reg,mem注意:1. 也可以表達(dá)成:將操作數(shù)按位取反后加1。2. NEG指令對標(biāo)志的影響與用零作減法的SUB指令一樣,影響標(biāo)志位!b 課本P49頁兩種求補(bǔ)方式!8. 比較指令CMP(compare;CMP

6、指令將目的操作數(shù)減去源操作數(shù),按照定義相應(yīng)設(shè)置狀態(tài)標(biāo)志,結(jié)果不回送目的操作數(shù))目的操作數(shù):reg,mem源操作數(shù):imm,reg,mem注意:1.存儲器之間不能相減。2.根據(jù)結(jié)果對相應(yīng)的標(biāo)志位作出改變,即,影響標(biāo)志位!3. 看清誰是減數(shù),誰是被減數(shù)。4. 不更改目的操作數(shù)! 十進(jìn)制調(diào)整指令(重要)十進(jìn)制數(shù)調(diào)整指令對二進(jìn)制運(yùn)算的結(jié)果進(jìn)行十進(jìn)制調(diào)整,以得到十進(jìn)制的運(yùn)算結(jié)果分成壓縮BCD碼和非壓縮BCD碼調(diào)整(BCD碼在計算機(jī)中仍以十六進(jìn)制表示,但是認(rèn)為是十進(jìn)制數(shù)) 壓縮BCD碼壓縮BCD碼就是通常的8421碼;它用4個二進(jìn)制位表示一個十進(jìn)制位,一個字節(jié)可以表示兩個十進(jìn)制位,即0099 非壓縮BCD

7、碼非壓縮BCD碼用8個二進(jìn)制位表示一個十進(jìn)制位,只用低4個二進(jìn)制位表示一個十進(jìn)制位09,高4位任意,通常默認(rèn)為0b 示例:二進(jìn)制編碼的十進(jìn)制數(shù):一位十進(jìn)制數(shù)用4位二進(jìn)制編碼來表示8086支持壓縮BCD碼和非壓縮BCD碼的調(diào)整運(yùn)算真值 8 64二進(jìn)制編碼 08H 40H壓縮BCD碼 08H 64H非壓縮BCD碼08H 0604Hl 壓縮BCD碼加(DAA)、減(DAS)調(diào)整指令操作數(shù)隱含,為寄存器AL(ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8) DAA(注意課本P47例題!兩條件都滿足的情況。)使用條件:1. 當(dāng)AF標(biāo)志位為0;或AL寄存器的低4位超出BCD數(shù)的計數(shù)符號,

8、則AL寄存器的內(nèi)容加06F,且將AF置1;2. 當(dāng)CF標(biāo)志位為1,或AL 寄存器的高四位超出BCD數(shù)的計數(shù)符號,則AL寄存器的內(nèi)容加60H,且將CF置1.;AL將AL的加和調(diào)整為壓縮BCD碼(SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8) DAS使用條件:1.當(dāng)AF標(biāo)志位為1;或AL寄存器的低4位超出BCD數(shù)的計數(shù)符號,則AL寄存器的內(nèi)容減06F,且將AF置1;2.當(dāng)CF標(biāo)志位為1,或AL 寄存器的高四位超出BCD數(shù)的計數(shù)符號,則AL寄存器的內(nèi)容減60H,且將CF置1.;AL將AL的減差調(diào)整為壓縮BCD碼注意:1. 使用DAA或DAS指令前,應(yīng)先執(zhí)行以AL為目的操作數(shù)的加法

9、或減法指令;2. DAA和DAS指令對OF標(biāo)志無定義,按結(jié)果影響其他標(biāo)志,例如CF反映壓縮BCD碼相加或減的進(jìn)位或借位狀態(tài). 乘法類乘法指令1. 無符號乘法MUL r8/m8;無符號字節(jié)乘法,AXALr8/m8MUL r16/m16;無符號字乘法;DX.AXAXr16/m16操作數(shù):u 目的操作數(shù)隱含,為AX、AL;u 源操作數(shù)為imm8,reg8或imm16,reg162.有符號乘法IMUL r8/m8;有符號字節(jié)乘法,AXALr8/m8IMUL r16/m16;有符號字乘法,DX.AXAXr16/m16注意:1 立即數(shù)不能作操作數(shù):MUL 3是錯的;2 分清楚是有符號乘法還是無符號乘法;3

10、 影響標(biāo)志位。對標(biāo)志位的影響: 乘法指令如下影響OF和CF標(biāo)志:n MUL指令若乘積的高一半(AH或DX)為0,則OF=CF=0;否則OF=CF=1n IMUL指令若乘積的高一半是低一半的符號擴(kuò)展,則OF=CF=0;否則均1 乘法指令對其他狀態(tài)標(biāo)志沒有定義標(biāo)識為影響示例:mov al,0b4h;al=b4h=180mov bl,11h;bl=11h=17mul bl;ax=Obf4h=3060;OF=CF=1,AX高8位不為0mov al,0b4h;al=b4h=76mov bl,11h;bl=11h=17imul bl;ax=faf4h=1292;OF=CF=1,AX高8位含有效數(shù)字 除法類

11、除法指令1.無符號除法DIV r8/m8;無符號字節(jié)除法:ALAXr8/m8的商,AhAXr8/m8的余數(shù)DIV r16/m16;無符號字除法:AXDX.AXr16/m16的商,DXDX.AXr16/m16的余數(shù)操作數(shù): 目的操作數(shù)隱含,為AX或DX; 源操作數(shù)為imm8,reg8或imm16,reg162.有符號除法IDIV r8/m8;有符號字節(jié)除法:ALAXr8/m8的商,AhAXr8/m8的余數(shù)IDIV r16/m16;有符號字除法:AXDX.AXr16/m16的商,DXDX.AXr16/m16的余數(shù)注意:1立即數(shù)不能作操作數(shù):DIV 3是錯的;2分清楚是有符號乘法還是無符號乘法;3.除法指令對標(biāo)志沒有定義;4.除法指令會產(chǎn)生結(jié)果溢出。l 溢出:當(dāng)被除數(shù)遠(yuǎn)大于除數(shù)時,所得的商就有可能超出它所能表達(dá)的范圍。如果存放商的寄存器AL/AX不能表達(dá),便產(chǎn)生溢出,8086CPU中就產(chǎn)生編號為0的內(nèi)部中斷除法錯中斷 對DIV指令,除數(shù)為0,或者在字節(jié)除時商超過8位,或者在字除時商超過16位,則發(fā)生除法溢出 對IDIV指令,除數(shù)為0,或者在字節(jié)除時商不在-128127范圍內(nèi),或者在字除時商不在-32768

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論