微型計(jì)算機(jī)技術(shù)陳慈發(fā)第8講算術(shù)運(yùn)算指令_第1頁(yè)
微型計(jì)算機(jī)技術(shù)陳慈發(fā)第8講算術(shù)運(yùn)算指令_第2頁(yè)
微型計(jì)算機(jī)技術(shù)陳慈發(fā)第8講算術(shù)運(yùn)算指令_第3頁(yè)
微型計(jì)算機(jī)技術(shù)陳慈發(fā)第8講算術(shù)運(yùn)算指令_第4頁(yè)
微型計(jì)算機(jī)技術(shù)陳慈發(fā)第8講算術(shù)運(yùn)算指令_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)技術(shù)第八講三峽大學(xué)覃穎0717-6390287inying@本講課堂講授內(nèi)容:8086CPU的指令系統(tǒng)(算術(shù)運(yùn)算指令)算術(shù)運(yùn)算指令實(shí)現(xiàn)加、減、乘、除運(yùn)算,包括無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的8位和16位二進(jìn)制運(yùn)算以及無(wú)符號(hào)數(shù)的BCD碼運(yùn)算和BCD碼調(diào)整。大部分指令影響標(biāo)志寄存器中的狀態(tài)標(biāo)志位。算術(shù)運(yùn)算指令8086算術(shù)運(yùn)算指令共20條,其中包括:加法運(yùn)算指令(3條)減法運(yùn)算指令(5條)乘法運(yùn)算指令(2條)除法運(yùn)算指令(2條)符號(hào)擴(kuò)展指令(2條)BCD碼調(diào)整指令(6條)加法運(yùn)算指令1、不帶進(jìn)位加法指令A(yù)DD格式:ADDd,s功能:(d)←

(d)+(s)說(shuō)明:將目的操作數(shù)d與源操作數(shù)s相加,結(jié)果送回d中

?!纠緼DDAX,2012HADD[BP+DI-6],CLADDSI,[BX]AX,BXCX,DXSP,BPSI,DIAH,ALBH,BLCH,CLDH,DL內(nèi)存立即數(shù)看圖說(shuō)話(huà):想一想你會(huì)構(gòu)造哪些非法指令?加法運(yùn)算指令1、不帶進(jìn)位加法指令A(yù)DD影響全部狀態(tài)標(biāo)志位【例】試判斷在執(zhí)行如下指令序列后的6個(gè)狀態(tài)標(biāo)志。

MOVAX,8C21HADDAX,4178H10001100001000010100000101111000+1100110110011001CF=0ZF=0PF=1SF=1AF=0OF=0加法運(yùn)算指令2、帶進(jìn)位加法指令A(yù)DC格式:ADCd,s功能:(d)←(d)+(s)+CF說(shuō)明:將目的操作數(shù)d與源操作數(shù)s和進(jìn)位標(biāo)志CF相加,結(jié)果送回d中。該指令主要應(yīng)用于多字節(jié)數(shù)據(jù)的分段加法運(yùn)算。該指令的格式及對(duì)標(biāo)志的影響同ADD指令。加法運(yùn)算指令2、帶進(jìn)位加法指令A(yù)DC【例】雙字加法,設(shè)有兩個(gè)32位數(shù)分別放在DX:AX和BX:CX中,求(DX:AX)+(BX:CX)=?【編程實(shí)現(xiàn)】ADDAX,CXADCDX,BX加法運(yùn)算指令3、加1指令I(lǐng)NC格式:INCd功能:(d)←(d)+1說(shuō)明:將目的操作數(shù)d加1,結(jié)果送回d中。該指令不影響CF標(biāo)志,影響其它狀態(tài)標(biāo)志?!纠吭O(shè)指令執(zhí)行前CF=0,AL=FFH

在執(zhí)行指令I(lǐng)NCAL后:

AL=(),CF=(),ZF=()00H01加法運(yùn)算指令3、加1指令I(lǐng)NC容易出錯(cuò):操作數(shù)是存儲(chǔ)器操作數(shù)時(shí),必須指定類(lèi)型。INC[BX]正確實(shí)現(xiàn):

或:INCWORDPTR[BX]INCBYTEPTR[BX]減法運(yùn)算指令4、不帶進(jìn)位減法指令SUB格式:SUBd,s功能:(d)←(d)-(s)說(shuō)明:將目的操作數(shù)d與源操作數(shù)s相減結(jié)果送回d中。該指令的格式及對(duì)標(biāo)志的影響同ADD指令。減法運(yùn)算指令5、帶進(jìn)位減法指令SBB格式:SBBd,s功能:(d)←(d)-(s)-CF說(shuō)明:將目的操作數(shù)d與源操作數(shù)s和進(jìn)位標(biāo)志CF相減,結(jié)果送回d中。該指令主要應(yīng)用于多字節(jié)數(shù)據(jù)的分段減法運(yùn)算。該指令的格式及對(duì)標(biāo)志的影響同SUB指令。減法運(yùn)算指令6、減1指令DEC格式:DECd功能:(d)←(d)-1說(shuō)明:將目的操作數(shù)d減1,結(jié)果送回d中。該指令不影響CF標(biāo)志,影響其它狀態(tài)標(biāo)志。減法運(yùn)算指令7、取負(fù)指令NEG格式:NEGd說(shuō)明:將目的操作數(shù)d取負(fù)后送回d中?!纠吭O(shè)AX=00FFH,則

NEG AX

;AX=()

NEG

AL ;AL=()功能:(d)←(d)+1FF01H01H減法運(yùn)算指令8、比較指令CMP格式:CMPd,s功能:(d)–(s)說(shuō)明:僅將目的操作數(shù)d與源操作數(shù)s相減,結(jié)果并不送回d中。該指令只影響標(biāo)志,不改變操作數(shù)。該指令常用于比較后進(jìn)行條件轉(zhuǎn)移的分支結(jié)構(gòu)中。CMPAL,0 ;將AL與0比較JGGT0 ;如果大于0則跳轉(zhuǎn)(JNGLT0 ;如果小于0則跳轉(zhuǎn))乘法運(yùn)算指令9、無(wú)符號(hào)數(shù)乘法指令MUL格式:MULs功能:當(dāng)s為字節(jié)數(shù)據(jù)時(shí)AX←AL×s當(dāng)s為字?jǐn)?shù)據(jù)時(shí)DX:AX←AX×s說(shuō)明:將無(wú)符號(hào)的源操作數(shù)s與累加器相乘,結(jié)果送回AX或DX:AX中?!纠縈ULCL;AX←AL×CLMULBX;DX:AX←AX×BXMULBYTEPTR[BX];AX←AL×(DS:[BX])乘法運(yùn)算指令9、無(wú)符號(hào)數(shù)乘法指令MUL注意:指令格式上是單操作數(shù),但被乘數(shù)必須預(yù)先準(zhǔn)備在默認(rèn)的累加寄存器AL或AX中。對(duì)標(biāo)志的影響:僅影響CF和OF,其它標(biāo)志無(wú)意義。CF=0OF=0:表示乘積的高半部分為0CF=1OF=1:表示乘積的高半部分不為0乘法運(yùn)算指令9、無(wú)符號(hào)數(shù)乘法指令MUL容易出錯(cuò):操作數(shù)是存儲(chǔ)器操作數(shù)時(shí),必須指定類(lèi)型。MUL[SI]正確實(shí)現(xiàn):

或:MULWORDPTR[SI]MULBYTEPTR[SI]s只能是通用寄存器或存儲(chǔ)器操作數(shù)。MULESMULWORDPTR200H乘法運(yùn)算指令10、有符號(hào)數(shù)乘法指令I(lǐng)MUL格式:IMULs功能:當(dāng)s為字節(jié)數(shù)據(jù)時(shí)AX←AL×s當(dāng)s為字?jǐn)?shù)據(jù)時(shí)DX:AX←AX×s說(shuō)明:將有符號(hào)的源操作數(shù)s與累加器相乘,結(jié)果送回AX或DX:AX中?!纠縄MULCL;AX←AL×CLIMULBX;DX:AX←AX×BXIMULBYTEPTR[BX];AX←AL×(DS:[BX])乘法運(yùn)算指令10、有符號(hào)數(shù)乘法指令I(lǐng)MUL指令格式上及功能操作上與MUL相同。對(duì)標(biāo)志的影響:僅影響CF和OF,其它標(biāo)志無(wú)意義。CF/OF=00:表示乘積的高半部分為符號(hào)位擴(kuò)展。CF/OF=11:表示乘積的高半部分為有效數(shù)據(jù)。除法運(yùn)算指令11、無(wú)符號(hào)數(shù)除法指令DIV格式:DIVs功能:s為字節(jié):AL←AX/s,AH←AX%s

s為字:AX←DX:AX/s,DX←DX:AX%s說(shuō)明:將被除數(shù)AX或DX:AX與無(wú)符號(hào)的源操作數(shù)s相除,商送回AL或AX,余數(shù)送回AH或DX中。【例】DIVCL;AH:AL←AX/CLDIVBX;DX:AX←DX:AX/BXDIVBYTEPTR[BX];AH:AL←AX/(DS:[BX])除法運(yùn)算指令11、無(wú)符號(hào)數(shù)除法指令DIV對(duì)標(biāo)志的影響:所有狀態(tài)標(biāo)志均無(wú)定義。商溢出錯(cuò)時(shí),自動(dòng)產(chǎn)生除法出錯(cuò)中斷(INT0),此時(shí)商和余數(shù)都不確定。s只能是通用寄存器或存儲(chǔ)器操作數(shù),不能是段寄存器或立即數(shù)。除法運(yùn)算指令12、有符號(hào)數(shù)除法指令I(lǐng)DIV格式:IDIVs功能:同DIV,只是針對(duì)有符號(hào)數(shù)。有符號(hào)數(shù)除法的余數(shù)可以為正也可以為負(fù)。例如,-17除以+5,可以是商為-3余數(shù)為-2,也可以是商為-4余數(shù)為+3。為了避免結(jié)果的不唯一性,IDIV指令規(guī)定余數(shù)的符號(hào)必須和被除數(shù)的符號(hào)相同。符號(hào)擴(kuò)展指令13、字節(jié)符號(hào)擴(kuò)展指令CBW格式:CBW功能:若AL7=0,AH=00000000B=00H若AL7=1,AH=11111111B=FFH說(shuō)明:將AL中的8位有符號(hào)數(shù)進(jìn)行符號(hào)擴(kuò)展,變?yōu)橥笮〉?6位有符號(hào)數(shù)存放在AX中。符號(hào)擴(kuò)展指令不影響標(biāo)志。符號(hào)擴(kuò)展指令13、字節(jié)符號(hào)擴(kuò)展指令CBW該指令主要用于有符號(hào)數(shù)除法指令前對(duì)被除數(shù)進(jìn)行擴(kuò)展以達(dá)到除法指令中對(duì)被除數(shù)位數(shù)的要求?!纠吭O(shè)AL和BL中有兩個(gè)8位有符號(hào)數(shù),求AL÷BL【編程實(shí)現(xiàn)】CBW;AX←(擴(kuò)展)AL

IDIVBL;AH:AL←AX/BL

符號(hào)擴(kuò)展指令14、字符號(hào)擴(kuò)展指令CWD格式:CWD功能:若AX15=0,則DX=0000H若AX15=1,則DX=FFFFH說(shuō)明:將AX中的16位有符號(hào)數(shù)進(jìn)行符號(hào)擴(kuò)展,變?yōu)橥笮〉?2位有符號(hào)數(shù)存放在DX:AX中。符號(hào)擴(kuò)展指令不影響標(biāo)志。BCD碼調(diào)整指令15、加法的壓縮BCD碼調(diào)整指令DAA格式:DAA功能:對(duì)AL中的壓縮BCD碼加法結(jié)果進(jìn)行調(diào)整。說(shuō)明:必須緊跟在ADD或ADC指令后出現(xiàn)。AL為隱含操作數(shù),且為壓縮BCD碼。對(duì)標(biāo)志的影響:除OF不確定外,其余標(biāo)志均受影響。其中CF=1表示結(jié)果大于99BCD碼調(diào)整指令15、加法的壓縮BCD碼調(diào)整指令DAA【調(diào)整算法】AL低4位>9AF=1AL←

AL+06H調(diào)整算法AL高4位>9CF=1AL←

AL+60HBCD碼調(diào)整指令15、加法的壓縮BCD碼調(diào)整指令DAA【例】設(shè)AL=25H,BL=37H,問(wèn)執(zhí)行下列指令后,AL=?CF=?

ADD AL,BL DAA00100101+0011011101011100大于9+06H修正01011100+0000011001100010AL=62HCF=0BCD碼調(diào)整指令15、加法的壓縮BCD碼調(diào)整指令DAA【例】CPU執(zhí)行下列指令后,AL=?CF=?

MOVAL,68H

ADD AL,89H DAA01101000+100010011111

0001AF=1+66H修正1111

0001+01100110101010111AL=57HCF=1大于9CF=1BCD碼調(diào)整指令15、加法的壓縮BCD碼調(diào)整指令DAA【例】設(shè)AX和BX中存放著兩個(gè)4位的壓縮BCD碼,求兩數(shù)之和,并將和放在AX中。【錯(cuò)誤編程1】ADDAX,BXDAA【錯(cuò)誤編程2】ADDAL,BLDAAADCAH,BHDAA【正確實(shí)現(xiàn)】ADDAL,BLDAAADCAL,BHDAAXCHGAL,AHXCHGAL,AHBCD碼調(diào)整指令16、加法的非壓縮BCD碼調(diào)整指令A(yù)AA格式:AAA功能:對(duì)AL中的非壓縮BCD碼加法結(jié)果進(jìn)行調(diào)整。說(shuō)明:必須緊跟在ADD或ADC指令后出現(xiàn)。AL/AH為隱含操作數(shù),且為非壓縮BCD碼。對(duì)標(biāo)志的影響:影響AF、CF,其余標(biāo)志不受影響。BCD碼調(diào)整指令16、加法的非壓縮BCD碼調(diào)整指令A(yù)AA【調(diào)整算法】如果:AL低4位>9或AF=1,則執(zhí)行:AL

AL+06HAH←

AH+1AL

ALAND0FHAF=CF=1否則執(zhí)行:AL

ALAND0FHAF=CF=0BCD碼調(diào)整指令16、加法的非壓縮BCD碼調(diào)整指令A(yù)AA【例】設(shè)AX=0339H,BL=36H,問(wèn)執(zhí)行下列指令后,AX=(),CF=()

ADD AL,BL AAA0405H1【答】AL←AL+BL=39H+36H=6FH由于AL低四位1111>9,所以AAA執(zhí)行如下調(diào)整:AL←AL+06H=6FH+06H=75HAH←AH+1=03H+01H=04HAL←ALAND0FH=75HAND0FH=05HAF=CF=1BCD碼調(diào)整指令17、減法的壓縮BCD碼調(diào)整指令DAS格式:DAS功能:對(duì)AL中的壓縮BCD碼減法結(jié)果進(jìn)行調(diào)整。說(shuō)明:必須緊跟在SUB或SBB指令后出現(xiàn)。AL為隱含操作數(shù),且為壓縮BCD碼。對(duì)標(biāo)志的影響:除OF不確定外,其余標(biāo)志均受影響。其中CF=1表示結(jié)果小于0BCD碼調(diào)整指令17、減法的壓縮BCD碼調(diào)整指令DAS【調(diào)整算法】AL低4位>9AF=1AL←

AL-06H調(diào)整算法AL高4位>9CF=1AL←

AL-60HBCD碼調(diào)整指令17、減法的壓縮BCD碼調(diào)整指令DAS【例】CPU執(zhí)行下列指令后,AL=?CF=?

MOVAL,34H

SUB AL,89H DAS00110100-100010011010

1011大于9且AF=1-66H修正1010

1011-01100110

01000101AL=45HCF=1大于9且CF=1BCD碼調(diào)整指令18、減法的非壓縮BCD碼調(diào)整指令A(yù)AS格式:AAS功能:對(duì)AL中的非壓縮BCD碼減法結(jié)果進(jìn)行調(diào)整。說(shuō)明:必須緊跟在SUB或SBB指令后出現(xiàn)。AL/AH為隱含操作數(shù),且為非壓縮BCD碼。對(duì)標(biāo)志的影響:影響AF、CF,其余標(biāo)志不受影響。BCD碼調(diào)整指令18、減法的非壓縮BCD碼調(diào)整指令A(yù)AS【調(diào)整算法】如果:AL低4位>9或AF=1,則執(zhí)行:AL

AL-06HAH←

AH-1AL

ALAND0FHAF=CF=1否則執(zhí)行:AL

ALAND0FHAF=CF=0BCD碼調(diào)整指令18、減法的非壓縮BCD碼調(diào)整指令A(yù)AS【例】設(shè)AX=0531H,BL=09H,問(wèn)執(zhí)行下列指令后,AX=(),CF=()

SUB AL,BL AAS0402H1【答】AL←AL-BL=31H-09H=28H由于AF=1,所以AAA執(zhí)行如下調(diào)整:AL←AL-06H=28H-06H=22HAH←AH-1=05H-01H=04HAL←ALAND0FH=22HAND0FH=02HAF=CF=1BCD碼調(diào)整指令19、乘法的非壓縮BCD碼調(diào)整指令A(yù)AM格式:AAM功能:將AX中的內(nèi)容調(diào)整為兩位非壓縮BCD碼。說(shuō)明:必須緊跟在MUL指令后出現(xiàn)。AX為隱含操作數(shù),且只適用于字節(jié)乘后的調(diào)整?!纠縈OVAX,0705HMULAH;AX←AL×AH=23HAAM;調(diào)整后AX=0305HBCD碼調(diào)整指令20、除法的非壓縮BCD碼調(diào)整指令A(yù)AD格式:AAD功能:將AX中兩位非壓縮BCD碼調(diào)整成二進(jìn)制數(shù)。說(shuō)明:必須出現(xiàn)在DIV指令之前。AX為隱含操作數(shù),且只適用于非壓縮BCD碼的調(diào)整?!纠縈OVAX,0205HMOVBL,04HAAD;AX=19HDIV

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論