




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章指令系統(tǒng)(3)13.2.2算術(shù)運(yùn)算指令涉及兩種類型數(shù)據(jù):無符號(hào)數(shù)和有符號(hào)數(shù)。對(duì)加減法指令,無符號(hào)和有符號(hào)數(shù)可采用同一套指令,但應(yīng)注意:參加的操作數(shù)必須都是無符號(hào)數(shù)或都是有符號(hào)數(shù)。需使用不同的標(biāo)志位來檢查無符號(hào)數(shù)和有符號(hào)數(shù)的運(yùn)算結(jié)果是否溢出。第三章指令系統(tǒng)(3)2兩個(gè)8位數(shù)相加時(shí)有4種情況:①無符號(hào)數(shù)和有符號(hào)數(shù)均不溢出二進(jìn)制相加無符號(hào)數(shù)加有符號(hào)數(shù)加
000010008+8+00011110
+30
+(+30)0010011038+38
結(jié)果38 CF=0OF=0第三章指令系統(tǒng)(3)3②無符號(hào)數(shù)溢出
000010008+8+11111101
+253
+(-3)100000101261+5
結(jié)果為5 CF=1 OF=0③有符號(hào)數(shù)溢出
000010008+8+01111101
+125
+(+125)
10000101133+133
結(jié)果為-123CF=0OF=1(補(bǔ)碼表示)第三章指令系統(tǒng)(3)4④無符號(hào)數(shù)和有符號(hào)數(shù)均溢出
10001000136-120+11110111
+247
+(-9)101111111383-129
結(jié)果127CF=1OF=1
上面四種情況說明,CF標(biāo)志可用來表示無符號(hào)數(shù)的溢出,OF標(biāo)志可用來表示有符號(hào)數(shù)的溢出。有符號(hào)數(shù)的溢出是一種出錯(cuò)狀態(tài),在運(yùn)算過程中應(yīng)當(dāng)避免。第三章指令系統(tǒng)(3)51.加法指令共有5條:(1)不帶進(jìn)位的加法指令A(yù)DD
格式:ADD acc,dataADD mem/reg,dataADDmem/reg1,mem/reg2例:ADD AL,30HADD AX,[BX+20H]ADD CX,SIADD [DI],200HADD指令對(duì)標(biāo)志位(指狀態(tài)標(biāo)志)都有影響。第三章指令系統(tǒng)(3)6(2)帶進(jìn)位位的加法指令A(yù)DC
ADC指令在形式上和功能上都有與ADD類似,只是相加時(shí)還要包括進(jìn)位標(biāo)志CF的內(nèi)容,例如:
ADCAL,68H;AL←(AL)+68H+(CF) ADCAX,CX;AX←(AX)+(CX)+(CF)ADCBX,[DI];BX←(BX)+[DI+1][DI]+(CF)第三章指令系統(tǒng)(3)7ADC指令主要用于多字節(jié)加法運(yùn)算中例:有兩個(gè)4字節(jié)的無符號(hào)數(shù)相加:
2C56F8AC+309E47BE=?設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū),如下頁(yè)圖所示。因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此可將加法分4次或2次進(jìn)行。56H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加數(shù)加數(shù)數(shù)據(jù)段多字節(jié)加法示意圖
......第三章指令系統(tǒng)(3)8程序段如下:
MOVCX,4;置循環(huán)次數(shù)
MOVSI,0;置SI初值為零
CLC;清進(jìn)位標(biāo)志CFLL:
MOVAL,BUFFER2[SI] ADC BUFFER1[SI],AL;帶進(jìn)位加
INC SI;(SI)+1DEC CX;(CX)-1JNZLL;若(CX)0,則轉(zhuǎn)LL思考:若最高位有進(jìn)位,如何改?第三章指令系統(tǒng)(3)9格式:INCreg/mem功能:類似于C語言中的++操作:對(duì)指定的操作數(shù)加1例:INCALINCSIINCBYTEPTR[BX+4]注:本指令不影響CF標(biāo)志。3)加1指令I(lǐng)NC(單操作數(shù)指令)第三章指令系統(tǒng)(3)10ADD/ADC對(duì)條件標(biāo)志位(CF/OF/ZF/SF)的影響:CF位表示無符號(hào)數(shù)相加的溢出。OF位表示帶符號(hào)數(shù)相加的溢出。1結(jié)果為負(fù)0非負(fù)SF=1結(jié)果為00非零ZF=1和的最高有效位有向高位的進(jìn)位0無進(jìn)位CF=1兩個(gè)操作數(shù)符號(hào)相同,而結(jié)果符號(hào)與之相反0無溢出OF=第三章指令系統(tǒng)(3)11(1)不考慮借位的減法指令SUB格式:SUBdest,src操作:dest←(dest)-(src)注:1.源和目的操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)
2.立即數(shù)不能作為目的操作數(shù)指令例子:SUBAL,60HSUB[BX+20H],DXSUBAX,CX2.減法指令第三章指令系統(tǒng)(3)12SBB指令主要用于多字節(jié)的減法。格式:SBBdest,src操作:dest←(dest)-(src)-(CF)指令例子:SBBAX,CXSBBWORDPTR[SI],2080HSBB[SI],DX(2)考慮借位的減法指令SBB第三章指令系統(tǒng)(3)13例:x、y、z均為32位數(shù),分別存放在地址為X,X+2;Y,Y+2;Z,Z+2的存儲(chǔ)單元中,用指令序列實(shí)現(xiàn)wx+y+24-z,結(jié)果放在W,W+2單元中。MOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+yADDAX,24ADCDX,0;x+y+24
SUBAX,Z
SBBDX,Z+2;x+y+24-zMOVW,AXMOVW+2,DX;結(jié)果存入W,W+2單元第三章指令系統(tǒng)(3)14作用類似于C語言中的”--”操作符。格式:DECopr 操作:opr←(opr)-1指令例子:DECCLDECBYTEPTR[DI+2]
DECSI(3)減1指令DEC第三章指令系統(tǒng)(3)15格式:NEGopr操作:opr←0-(opr)對(duì)一個(gè)操作數(shù)取補(bǔ)碼相當(dāng)于用0減去此操作數(shù),故利用NEG指令可得到負(fù)數(shù)的絕對(duì)值。例:若(AL)=0FCH,則執(zhí)行NEGAL 后,
(AL)=04H,CF=1本例中,0FCH為-4的補(bǔ)碼,執(zhí)行求補(bǔ)指令后,即得到4(-4的絕對(duì)值)。(4)求補(bǔ)指令NEG第三章指令系統(tǒng)(3)16SUB/SBB對(duì)標(biāo)志位(CF/OF/ZF/SF)的影響CF=1表示無符號(hào)數(shù)減法溢出。OF=1表示帶符號(hào)數(shù)減法溢出。NEG指令對(duì)CF/OF的影響:CF:操作數(shù)為0時(shí),求補(bǔ)的結(jié)果使CF=0,否則CF=1。OF:字節(jié)運(yùn)算對(duì)-128求補(bǔ)或字運(yùn)算對(duì)-32768求補(bǔ)時(shí)OF=1,否則OF=0。1被減數(shù)的最高有效位有向高位的借位0無借位CF=1兩個(gè)操作數(shù)符號(hào)相反,而結(jié)果的符號(hào)與減數(shù)相同0否OF=第三章指令系統(tǒng)(3)17格式:CMPdest,src操作:(dest)-(src)CMP也是執(zhí)行兩個(gè)操作數(shù)相減,但結(jié)果不送目標(biāo)操作數(shù),其結(jié)果只反映在標(biāo)志位上。指令例子:CMPAL,0AHCMPCX,SICMPDI,[BX+03](5)比較指令CMP第三章指令系統(tǒng)(3)18根據(jù)標(biāo)志位來判斷比較的結(jié)果1)根據(jù)ZF判斷兩個(gè)數(shù)是否相等。若ZF=1,則兩數(shù)相等。2)若兩個(gè)數(shù)不相等,則分兩種情況考慮:①比較的是兩個(gè)無符號(hào)數(shù)若CF=0,則dest>src;若CF=1,則dest<src。②比較的是兩個(gè)有符號(hào)數(shù)若OF⊕SF=0,則dest>src;
若OF⊕SF=1,則dest<src。第三章指令系統(tǒng)(3)19比較指令在使用時(shí),一般在其后緊跟一條條件轉(zhuǎn)移指令,根據(jù)結(jié)果決定程序的流向。舉例:比較AL、BL、CL中帶符號(hào)數(shù)的大小,將最小數(shù)放在AL中。程序:CMPAL,BL;AL和BL比較
JNGBBB
;若AL≤BL,則轉(zhuǎn)
XCHGAL,BL;若AL>BL,則交換
BBB:CMPAL,CL;AL和CL比較
JNGCCC;若AL≤CL,則轉(zhuǎn)
XCHGAL,CL;若AL>CL,則交換
CCC:HLT第三章指令系統(tǒng)(3)20進(jìn)行乘法時(shí):8位*8位→16位乘積 16位*16位→32位乘積(1)無符號(hào)數(shù)的乘法指令MUL(MEM/REG)格式:MULsrc操作:字節(jié)操作數(shù)(AX)(AL)×(src)
字操作數(shù)(DX,AX)(AX)×(src)指令例子:MULBL;(AL)×(BL),乘積在AX中
MULCX;(AX)×(CX),乘積在DX,AX中
MULBYTEPTR[BX]3.乘法指令
第三章指令系統(tǒng)(3)21格式與MUL指令類似,只是要求兩操作數(shù)均為有符號(hào)數(shù)。指令例子:
IMULBL;(AX)←(AL)×(BL)IMULWORDPTR[SI];(DX,AX)←(AX)×([SI+1][SI])
(2)有符號(hào)數(shù)乘法指令I(lǐng)MUL注意:MUL/IMUL指令中●AL(AX)為隱含的乘數(shù)寄存器;
●
AX(DX,AX)為隱含的乘積寄存器;
●
SRC不能為立即數(shù);
●除CF和OF外,對(duì)其它標(biāo)志位無定義。第三章指令系統(tǒng)(3)22乘法指令對(duì)CF/OF的影響:00乘積的高一半為零11否MUL指令:CF/OF=00乘積的高一半是低一半的符號(hào)擴(kuò)展11否
IMUL指令:CF/OF=例:(AL)=A5H(-5B),(BL)=11H(1)IMULBL;(AX)(AL)×(BL)
;A5×11-5B×11=-060BF9F5;(AX)=F9F5HCF=OF=1(2)MULBL;(AX)(AL)×(BL)
;A5×11=0AF5;(AX)=0AF5HCF=OF=1第三章指令系統(tǒng)(3)234.除法指令進(jìn)行除法時(shí):16位/8位→8位商
32位/16位→16位商對(duì)被除數(shù)、商及余數(shù)存放有如下規(guī)定: 被除數(shù)商余數(shù)字節(jié)除法AX ALAH字除法 DX:AXAXDX第三章指令系統(tǒng)(3)24格式:DIVsrc操作:字節(jié)操作:
(AL)(AX)/(SRC)的商
(AH)(AX)/(SRC)的余數(shù)字操作:
(AX)(DX,AX)/(SRC)的商
(DX)(DX,AX)/(SRC)的余數(shù)指令例子:DIVCLDIVWORDPTR[BX]注:若除數(shù)為零或AL中商大于FFH(或AX中商大于FFFFH),則CPU產(chǎn)生一個(gè)類型0的內(nèi)部中斷。(1)無符號(hào)數(shù)除法指令DIV第三章指令系統(tǒng)(3)25(2)有符號(hào)數(shù)除法指令I(lǐng)DIV格式:IDIVsrc操作與DIV類似。商及余數(shù)均為有符號(hào)數(shù),且余數(shù)符號(hào)總是與被除數(shù)符號(hào)相同。注意:
對(duì)于DIV/IDIV指令A(yù)X(DX,AX)為隱含的被除數(shù)寄存器。
AL(AX)為隱含的商寄存器。
AH(DX)為隱含的余數(shù)寄存器。
src不能為立即數(shù)。
對(duì)所有條件標(biāo)志位均無定義。5/(-3)=-1…...2(-5)/3=-1……-2第三章指令系統(tǒng)(3)26除法運(yùn)算要求被除數(shù)字長(zhǎng)是除數(shù)字長(zhǎng)的兩倍,若不滿足則需對(duì)被除數(shù)進(jìn)行擴(kuò)展,否則產(chǎn)生錯(cuò)誤。對(duì)于無符號(hào)數(shù)除法擴(kuò)展,只需將AH或DX清零即可。對(duì)有符號(hào)數(shù)而言,則是符號(hào)位的擴(kuò)展。可使用前面介紹過的符號(hào)擴(kuò)展指令CBW和CWD關(guān)于除法操作中的字長(zhǎng)擴(kuò)展問題第三章指令系統(tǒng)(3)27例:寫出34H÷25H的程序段。
MOVAL,34HMOVBL,25HCBW;AL的符號(hào)擴(kuò)展到AHIDIVBL;0034H÷25H,結(jié)果為;(AH)=0FH,(AL)=01H第三章指令系統(tǒng)(3)28*5.BCD碼運(yùn)算的十進(jìn)制調(diào)整指令專用于對(duì)BCD碼運(yùn)算的結(jié)果進(jìn)行調(diào)整包括:AAA、DAA、AAS、DAS、AAM、AAD均為隱含尋址,隱含的操作數(shù)為AL和AH為何要對(duì)BCD碼的運(yùn)算結(jié)果進(jìn)行調(diào)整?
BCD碼本質(zhì)上是十進(jìn)制數(shù),即應(yīng)遵循逢十進(jìn)一的規(guī)則。而計(jì)算機(jī)是按二進(jìn)制(十六進(jìn)制)進(jìn)行運(yùn)算,并未按十進(jìn)制規(guī)則進(jìn)行運(yùn)算。第三章指令系統(tǒng)(3)291)加法的十進(jìn)制調(diào)整指令(1)非壓縮BCD碼加法調(diào)整AAA本指令對(duì)在AL中的由兩個(gè)未組合的BCD碼相加后的結(jié)果進(jìn)行調(diào)正,得到一個(gè)正確的未組合的BCD碼。AAA指令只影響AF和CF,其余標(biāo)志無定義。AAA指令應(yīng)緊跟在ADD或ADC指令之后。第三章指令系統(tǒng)(3)30如果AL的低4位>9∨AF=1,則:①AL←(AL)+6,(AH)←(AH)+1,AF←1②AL←((AL)∧0FH)③CF←AF否則AL←(AL)∧0FHAAA指令的操作如下:第三章指令系統(tǒng)(3)31調(diào)整原理:先看一個(gè)例子
計(jì)算8+9
00001000
見右式
+00001001
00010001=11
結(jié)果應(yīng)為17,而計(jì)算機(jī)相加為11,原因在于運(yùn)算過程中,如遇到低4位往高4位產(chǎn)生進(jìn)位時(shí)(此時(shí)AF=1)是按逢十六進(jìn)一的規(guī)則,但BCD碼要求逢十進(jìn)一,因此只要產(chǎn)生進(jìn)位,個(gè)位就會(huì)少6,這就要進(jìn)行加6調(diào)正。這個(gè)1代表了16,而實(shí)際上僅應(yīng)為10,即多進(jìn)了6。第三章指令系統(tǒng)(3)32實(shí)際上當(dāng)?shù)?位的結(jié)果>9(即A~F之間)時(shí),也應(yīng)進(jìn)行加6調(diào)正(原因是逢十沒有進(jìn)位,故用加6的方法強(qiáng)行產(chǎn)生進(jìn)位)。如對(duì)上例的結(jié)果進(jìn)行加6:0001000111
+00000110
6
0000011117
AND00001111----------------------100000111第三章指令系統(tǒng)(3)33例2:有兩個(gè)字符串形式的十進(jìn)制數(shù),2658和3619,求二者之和。即2658+3619=?
由題意知,被加數(shù)和加數(shù)的每一位都以ASCII碼形式存放在內(nèi)存中。假定二數(shù)在內(nèi)存中均是低位在前,高位在后,另留出5個(gè)單元存放相加的結(jié)果。內(nèi)存中數(shù)據(jù)存放形式見下頁(yè)圖。第三章指令系統(tǒng)(3)3436H32H39H31HSTRING1STRING238H35H36H33H被加數(shù)加數(shù)數(shù)據(jù)段‘8’‘5’‘6’‘2’‘9’‘1’‘6’‘3’SUM結(jié)果......第三章指令系統(tǒng)(3)35程序段為:
LEASI,STRING1;STRING1偏移地址送SILEADI,STRING2;STRING2偏移地址送DILEABX,SUM;SUM偏移地址送BXMOVCX,4;循環(huán)4次
CLC;清進(jìn)位標(biāo)志AGAIN:MOVAL,[SI]ADCAL,[DI];帶進(jìn)位加
AAA;未壓縮BCD碼調(diào)正
MOV[BX],AL;結(jié)果存入SUMINCSI;調(diào)整指針
INCDIINCBXDECCX;循環(huán)計(jì)數(shù)器減1
JNZAGAIN;若未處理完,則轉(zhuǎn)AGAIN第三章指令系統(tǒng)(3)36思考題:1.根據(jù)程序?qū)懗鼋Y(jié)果SUM的值。2.若最高位有進(jìn)位,程序如何修改?3.從此例不難看出,用AAA指令也可對(duì)字符串形式的十進(jìn)制數(shù)加法進(jìn)行調(diào)整,所以它又被稱為加法的ASCII調(diào)正指令。為什么AAA指令既可對(duì)非壓縮BCD碼加法進(jìn)行調(diào)整,也可對(duì)ASCII碼形式的十進(jìn)制數(shù)進(jìn)行調(diào)整?(注意AAA指令的第②步)第三章指令系統(tǒng)(3)37(2)壓縮BCD碼加法調(diào)整DAA兩個(gè)壓縮BCD碼相加結(jié)果在AL中,通過DAA調(diào)整得到一個(gè)正確的壓縮BCD碼.指令操作(調(diào)整方法):若AL的低4位>9∨AF=1
則(AL)←(AL)+6,AF←1
若AL的高4位>9∨CF=1
則(AL)←(AL)+60H,CF←1除OF外,DAA指令影響所有其它標(biāo)志。DAA指令應(yīng)緊跟在ADD或ADC指令之后。第三章指令系統(tǒng)(3)38例:0100100048H
MOVAL,48H+01110100
74HMOVBL,74H10111100BCHADDAL,BL+01100110
66HDAA100100010122H (進(jìn)位)(進(jìn)位)執(zhí)行ADD后,(AL)=BCH,高4位低4位均大于9,故DAA指令執(zhí)行加66H調(diào)整,最后結(jié)果為:(AL)=22H,CF=1,AF=1第三章指令系統(tǒng)(3)39(1)非壓縮BCD碼減法的十進(jìn)制調(diào)正指令A(yù)AS對(duì)AL中由兩個(gè)非壓縮的BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:若AL的低4位>9或AF=1,則:①AL←(AL)-6,AH←(AH)-1,AF←1②AL←(AL)∧0FH③CF←AF
否則:AL←(AL)∧0FH2)減法的十進(jìn)制調(diào)整指令第三章指令系統(tǒng)(3)40舉例:16-8=?MOVAX,0106H0000011006MOVBL,08H-00001000
-08SUBAL,BL 11111110FEAAS-00000110
-0611111000F8
∧00001111
∧0F0000100008結(jié)果為:(AL)=08H,(AH)=0,CF=AF=1第三章指令系統(tǒng)(3)41(2)壓縮BCD碼減法的十進(jìn)制調(diào)正指令DAS對(duì)AL中由兩個(gè)壓縮BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:若AL的低4位>9∨AF=1,則:
AL←(AL)-6,且AF←1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)產(chǎn)業(yè)園可行性分析報(bào)告
- 建筑給排水設(shè)計(jì)規(guī)范gb50015
- 商業(yè)街區(qū)商業(yè)規(guī)劃手冊(cè)
- 智能生產(chǎn)線設(shè)備維護(hù)指南
- 三農(nóng)文化傳播策略方案
- 重慶高新技術(shù)產(chǎn)業(yè)
- 開題可行性分析報(bào)告模板
- 醫(yī)療設(shè)備操作與使用說明手冊(cè)
- 農(nóng)業(yè)產(chǎn)業(yè)鏈協(xié)同發(fā)展方案
- 衛(wèi)星導(dǎo)航定位系統(tǒng)技術(shù)應(yīng)用文檔
- GB 2758-2012食品安全國(guó)家標(biāo)準(zhǔn)發(fā)酵酒及其配制酒
- 基因工程 (genetic engineering)課件
- 屠宰宰豬場(chǎng)輕工行業(yè)雙控體系建設(shè)文件風(fēng)險(xiǎn)分級(jí)管控體系
- 《色彩基礎(chǔ)知識(shí)》PPT課件(完整版)
- 專利管理制度管理辦法
- 拖拉機(jī)和聯(lián)合收割機(jī)駕駛?cè)松眢w條件證明
- 機(jī)電控制與可編程序控制器課程設(shè)計(jì)
- 基于ADAMS的懸置剛度仿真指南
- 彎矩二次分配法EXCEL計(jì)算
- 童話故事《老鼠搬雞蛋》.ppt
- 偏差管理和CAPA_王麗麗
評(píng)論
0/150
提交評(píng)論