微機(jī)原理教案7-2_第1頁
微機(jī)原理教案7-2_第2頁
微機(jī)原理教案7-2_第3頁
微機(jī)原理教案7-2_第4頁
微機(jī)原理教案7-2_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

算術(shù)運(yùn)算指令有5類指令:加法指令減法指令乘法指令除法指令十進(jìn)制調(diào)整指令算術(shù)運(yùn)算指令表2算術(shù)運(yùn)算類指令一覽表指令類型指令指令功能加法SUBd,sSBBd,sDECdNEGdCMPd,s加法(d)(d)+(s)帶進(jìn)位加法(d)(d)+(s)+CF加1(d)(d)+1減法ADDd,sADCd,sINCd減法(d)(d)-(s)帶借位減法(d)(d)-(s)-CF減1(d)(d)-1取負(fù)(求補(bǔ))(d)0-(d)比較(d)-(s)乘法MULsIMULs無符號(hào)數(shù)乘法帶符號(hào)數(shù)乘法字節(jié):(AX)(AL)*(s)字:(DX:AX)(AX)*(s)算術(shù)運(yùn)算指令表2算術(shù)運(yùn)算類指令一覽表(續(xù)

)指令類型指令指令功能除法DIVsIDIVsCBWCWD無符號(hào)數(shù)除法帶符號(hào)數(shù)除法字節(jié)擴(kuò)展成字字?jǐn)U展成雙字字節(jié):(AL)(AX)/(s)的商

(AH)(AX)/(s)余數(shù)字:

(AX)

(DX:AX)/(s)的商

(DX)

(DX:AX)/(s)余數(shù)AL的符號(hào)位擴(kuò)展至AHAX的符號(hào)位擴(kuò)展至DX十進(jìn)制調(diào)整AAADAAAASDASAAMAAD加法分離BCD碼調(diào)整加法組合BCD碼調(diào)整減法分離BCD碼調(diào)整減法組合BCD碼調(diào)整乘法分離BCD碼調(diào)整減法分離BCD碼調(diào)整加法指令共3條:ADD加法ADC帶進(jìn)位加法INC加1指令加法指令A(yù)DD指令

?

基本格式和功能指令格式:

ADDDST,SRC執(zhí)行的操作:

(DST)←(DST)+(SRC)尋址方式:

ADDmem/reg,mem/reg/data加法指令A(yù)DD指令

?

說明相加操作影響標(biāo)志位OF、SF、ZF、AF、PF、CF。src可以為通用寄存器、存儲(chǔ)器或立即數(shù)。dest可以是通用寄存器或存儲(chǔ)器,但不能是立即數(shù)。src

和dest不能同時(shí)為存儲(chǔ)器操作數(shù)。src

和dest不能使用段寄存器??蛇M(jìn)行8位或者16位的加法,但d與s長度要相同。相加后源操作數(shù)不變。加法指令A(yù)DD指令

?

例子例1:指令舉例:

ADDAX,0FF00HADDBytePTR[SI],13HADDAX,BX例2:錯(cuò)誤的指令:

ADDAX,BLADD[SI+3],[BX][DI]ADDDS,DX加法指令A(yù)DC指令

?

基本格式和功能指令格式:

ADCDST,SRC執(zhí)行的操作:

(DST)

←(DST)+(SRC)+CF尋址方式:

ADCmem/reg,mem/reg/data

加法指令A(yù)DC指令

?

說明與ADD指令一樣,ADC同樣影響6個(gè)狀態(tài)標(biāo)志位。其中CF在指令中參與計(jì)算,計(jì)算后根據(jù)結(jié)果重新設(shè)置CF的值。加法指令A(yù)DC指令

?

用途ADC指令常用在多字節(jié)數(shù)相加的場合,利用CF把低字節(jié)的進(jìn)位加到高字節(jié)中去。加法指令A(yù)DC指令

?例子例:用指令實(shí)現(xiàn)以下兩個(gè)32位數(shù)的相加運(yùn)算:

107C932AH+55667788H解:

MOVAX,932AHMOVBX,107CHADDAX,7788HADCBX,5566H加法指令I(lǐng)NC指令

?

基本格式和功能指令格式:

INC

dest執(zhí)行的操作:

(dest)←(dest)+1尋址方式:

INCmem/reg加法指令I(lǐng)NC指令

?

基本格式和功能目的操作數(shù)dest可以是8位或16位通用寄存器或存儲(chǔ)單元,但不能為立即數(shù)。指令執(zhí)行時(shí)把操作數(shù)看成是無符號(hào)數(shù),加1后設(shè)置PF,AF,ZF,SF和OF,但特別要注意,INC指令不影響CF。加法指令I(lǐng)NC指令

?

基本格式和功能例1:AL=05H,則INCAL后,AL=06H例2:AX=0FFFFH,則INCAX后,AX=?答案:AX=0000H減法指令共5條:

SUB減法

SBB帶借位減

CMP比較

DEC減1指令

NEG求補(bǔ)指令

減法指令SUB,SBB和CMP指令

?

基本格式和功能指令格式:

SUB/SBB/CMPDST,SRC執(zhí)行的操作:

SUB:(DST)←(DST)-(SRC)SBB:(DST)←(DST)-(SRC)-CF

CMP:(DST)-(SRC)

不保存結(jié)果,但影響各標(biāo)志位

減法指令SUB,SBB和CMP指令

?

基本格式和功能尋址方式:

SUB(SBB,CMP)mem/reg,mem/regSUB(SBB,CMP)mem/reg,data說明:d和s不能同為存儲(chǔ)器操作數(shù)d不能為立即數(shù)。減法指令SUB,SBB和CMP指令

?

一些說明這三條指令均可進(jìn)行字節(jié)或字的減法運(yùn)算;均影響所有6個(gè)狀態(tài)標(biāo)志位;SBB指令主要用于大于16位的減法,利用CF把低位部分產(chǎn)生的借位引入高位部分的減法中。減法指令SUB與SBB指令

?

例子例:寫指令,完成32位減法:

12345678H-0123ABCDH參考答案:

movax,5678H

mov

bx,1234Hsubax,0ABCDH

sbb

bx,0123H減法指令CMP指令

?

一些說明CMP指令執(zhí)行后,d與s均保持不變;CMP指令常用于判斷2個(gè)數(shù)的大?。贿M(jìn)行大小比較時(shí),無符號(hào)數(shù)與有符號(hào)數(shù)有不同的判斷依據(jù):無符號(hào)數(shù)有符號(hào)數(shù)ZF=1d=sOFSF=0dsZF=0CF=0d>sCF=1d<sOFSF=1d<s減法指令DEC指令

?

基本格式和功能指令格式:

DECd執(zhí)行的操作:

(d)←(d)-1影響標(biāo)志位:

與INC指令一樣,不影響CF標(biāo)志,但影響其它5個(gè)狀態(tài)標(biāo)志。減法指令NEG指令

?

基本格式和功能指令格式:

NEGd功能:

(d)0-(d)減法指令NEG指令

?

說明說明:d可以是8位或16位寄存器或存儲(chǔ)器操作數(shù);不能是立即數(shù)或段寄存器。NEG指令影響6個(gè)狀態(tài)標(biāo)志位,指令執(zhí)行后,CF被置1,SF、ZF、OF、PF、AF根據(jù)NEG的結(jié)果取值。減法指令NEG指令

?例子例:設(shè)AL=00000100=+4,則執(zhí)行指令

NEGAL

后,AL=11111100=[-4]補(bǔ)乘法指令共兩條指令

MUL無符號(hào)數(shù)乘法

IMUL有符號(hào)數(shù)乘法乘法指令MUL指令

?

基本格式和功能指令格式:

MUL

s功能:字節(jié)乘法:(AX)(AL)*(s)字乘法:(DX:AX)(AX)*(s)

乘法指令MUL指令

?說明說明:此指令為無符號(hào)數(shù)乘法指令,不能用于有符號(hào)數(shù)相乘,否則結(jié)果可能錯(cuò)誤。影響標(biāo)志位情況:若運(yùn)算結(jié)果的高位字節(jié)或高位字有效,即AH0或DX0,則將CF和OF同時(shí)置1,其他位任意。S可為8/16位通用寄存器或存儲(chǔ)器操作數(shù),不允許為立即數(shù)。乘法指令MUL指令

?

例子例1:計(jì)算兩個(gè)無符號(hào)數(shù)12H×56H,請寫出指令序列。解:

MOVAL,12HMOVBL,56HMULBL乘法指令MUL指令

?

例子例2:計(jì)算兩個(gè)無符號(hào)數(shù)1234H×5678H,請寫出指令序列。解:

MOVAX,1234HMOVBX,5678HMULBX乘法指令I(lǐng)MUL指令

?

基本格式和功能指令格式:

IMUL

s功能&說明:具體功能與MUL指令類似;但此指令為有符號(hào)數(shù)相乘指令,它完成兩個(gè)帶符號(hào)的8/16位二進(jìn)制數(shù)乘的功能。尋址方式要求、標(biāo)志位影響均與MUL指令相同。乘法指令I(lǐng)MUL指令

?

例子例:計(jì)算兩個(gè)有符號(hào)數(shù)0F2H×56H,請寫出指令序列。解:

MOVAL,0F2HMOVBL,56HIMULBL注意:程序運(yùn)行后AX中的內(nèi)容不是514CH,也不是04B4H,而是0FB4CH除法指令共4條相關(guān)指令DIV無符號(hào)數(shù)除法IDIV有符號(hào)數(shù)除法CBW符號(hào)擴(kuò)展,字節(jié)擴(kuò)展為字CWD符號(hào)擴(kuò)展,字?jǐn)U展為雙字除法指令DIV和IDIV指令

?

基本格式和功能指令格式:

DIVS

IDIVS執(zhí)行的操作:字節(jié)字(AL)(AX)/(S)的商(AH)(AX)/(S)的余數(shù)(AX)(DX:AX)/(S)的商(DX)(DX:AX)/(S)的余數(shù)除法指令DIV和IDIV指令

?

說明與標(biāo)志位的關(guān)系:除法指令對標(biāo)志位的影響不確定,而且這些影響沒有意義。尋址方式:

DIVmem/regIDIVmem/reg

S可以是8/16位的通用寄存器或存儲(chǔ)器操作數(shù),但不能為立即數(shù)或段寄存器。除法指令DIV和IDIV指令

?

說明DIV用于無符號(hào)數(shù)除法,IDIV用于有符號(hào)數(shù)除法。除法是字還是字節(jié)除法,由S的寬度決定。若除法運(yùn)算所得的商數(shù)超出累加器的容量,則系統(tǒng)將其當(dāng)作除數(shù)為0處理,自動(dòng)產(chǎn)生類型0中斷,CPU轉(zhuǎn)去執(zhí)行類型0中斷服務(wù)程序作適當(dāng)處理,此時(shí)所得商數(shù)和余數(shù)均無效。除法指令DIV和

IDIV指令

?

例子例:進(jìn)行無符號(hào)數(shù)除法:20017,寫出指令。解:

MOVAX,00C8HMOVBL,11HDIVBL除法指令DIV和IDIV指令

?

例子例:進(jìn)行有符號(hào)數(shù)除法:(-3200)(+269),寫出指令。解:

MOVAX,0C80HNEGAX;MOVAX,F(xiàn)380H也可以

MOVDX,0FFFFH;用CWD指令更準(zhǔn)確

MOVBX,010DHIDIVBX除法指令?符號(hào)擴(kuò)展指令CBW和CWD指令

?

基本格式和功能格式:

CBW

CWD功能:CBW:將AL中的符號(hào)位擴(kuò)展到AHCWD:將AX中的符號(hào)位擴(kuò)展到DX除法指令?符號(hào)擴(kuò)展指令CBW和CWD指令

?

說明除法指令的被除數(shù)的數(shù)據(jù)寬度應(yīng)該是除數(shù)的2倍。當(dāng)被除數(shù)寬度不夠時(shí),必須進(jìn)行擴(kuò)展,例如:要用存放在AX中的數(shù)65535除以存放BX中的數(shù)256,需要把AX中的被除數(shù)擴(kuò)展為32位,為此,只要(DX)←0即可。但有符號(hào)數(shù)除法,情況更復(fù)雜一些,擴(kuò)展時(shí)必須考慮符號(hào)。有符號(hào)數(shù)的最高位是符號(hào)位,擴(kuò)展時(shí),只需用其填充擴(kuò)展累加器的高位即可。十進(jìn)制調(diào)整指令共六條:AAA分離BCD碼的加法十進(jìn)制調(diào)整DAA組合BCD碼的加法十進(jìn)制調(diào)整AAS分離BCD碼的減法十進(jìn)制調(diào)整DAS組合BCD碼的減法十進(jìn)制調(diào)整AAM乘法的十進(jìn)制調(diào)整(分離BCD碼)AAD除法的十進(jìn)制調(diào)整(分離BCD碼)十進(jìn)制調(diào)整指令DAA指令

?

基本格式和功能格式:

DAA功能:進(jìn)行組合BCD碼加法調(diào)整。十進(jìn)制調(diào)整指令DAA指令

?

說明DAA指令對AL中的組合型BCD碼(1個(gè)字節(jié)2個(gè)碼)進(jìn)行調(diào)整(僅對AL進(jìn)行調(diào)整)當(dāng)AL中的運(yùn)算結(jié)果出現(xiàn)非法碼或產(chǎn)生半進(jìn)位或進(jìn)位時(shí),DAA自動(dòng)加6修正。DAA必須緊跟在ADD或ADC指令之后使用。DAA指令影響SF、ZF、AF、PF、CF,而OF的值任意。十進(jìn)制調(diào)整指令DAA指令

?

例子例:設(shè)AX=6698H,BX=2877H,它們均為組合型BCD碼。請寫出能正確實(shí)現(xiàn)AX+BX的指令序列。(運(yùn)算結(jié)果放回AX中。)解:

ADDAL,BL;低字節(jié)相加

DAA;低字節(jié)調(diào)整

MOVCL,ALMOVAL,AHADCAL,BH;高字節(jié)相加

DAA;高字節(jié)調(diào)整

MOVAH,ALMOVAL,CL十進(jìn)制調(diào)整指令DAS指令

?

基本格式和功能格式:

DAS功能:進(jìn)行組合BCD碼減法調(diào)整。除了是對減法進(jìn)行修正外,其余均與DAA指令類似。

十進(jìn)制調(diào)整指令A(yù)AA和AAS指令

?

基本格式和功能格式:

AAAAAS功能:對AL中的分離BCD碼加法/減法運(yùn)算的結(jié)果進(jìn)行二——十進(jìn)制修正。十進(jìn)制調(diào)整指令A(yù)AA和AAS指令

?

說明AAA和AAS指令負(fù)責(zé)把AL中的結(jié)果調(diào)整為正確的分離型BCD碼,

AL中高四位清零,調(diào)整后結(jié)果仍保留在AL中;低四位如果向高四位有進(jìn)/借位(AF=1),則傳遞到AH中。十進(jìn)制調(diào)整指令A(yù)AM指令

?

基本格式和功能格式:

AAM功能:對AL中的乘

溫馨提示

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

最新文檔

評論

0/150

提交評論