版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——算術(shù)運算指令一、算術(shù)運算指令算術(shù)運算中的溢出問題以8位二進(jìn)制數(shù)的加法為例,兩個8位數(shù)相加時有4種狀況:二進(jìn)制運算對應(yīng)的十進(jìn)制運算數(shù)據(jù)作為無符號數(shù)Case1:無符號數(shù)和有符號數(shù)均不溢出00001000+0001111000100110結(jié)果:26H(38)CF=0,OF=0Case2:無符號數(shù)溢出,有符號數(shù)不溢出00001000+11111101100000101結(jié)果:5CF=1,OF=0Case3:無符號數(shù)不溢出,有符號數(shù)溢出00001000+0111110110000101結(jié)果:-123(補(bǔ)碼)CF=0,OF=1Case4:無符號數(shù)和有符號數(shù)均溢出10001000+11110111101111111結(jié)果:127CF=1,OF=18+3038未超出8位無符號二進(jìn)制數(shù)表示范圍8+253261超出8位無符號二進(jìn)制數(shù)表示范圍8+125133未超出8位無符號二進(jìn)制數(shù)表示范圍136+247383超出8位無符號二進(jìn)制數(shù)表示范圍數(shù)據(jù)作為有符號數(shù)+8+(+30)+38未超出8位有符號二進(jìn)制數(shù)表示范圍+8+(-3)+5未超出8位有符號二進(jìn)制數(shù)表示范圍+8+(+125)+133超出8位有符號二進(jìn)制數(shù)表示范圍-120+(-9)-129超出8位有符號二進(jìn)制數(shù)表示范圍上面四種狀況說明,算術(shù)運算溢出的判別是比較繁雜的,不能只用一個標(biāo)志位來判別。算術(shù)運算溢出是一種出錯狀態(tài),在運算過程中應(yīng)當(dāng)避免。1加法運算指令A(yù)DDCL,20H;CL←(CL)+20HADDAX,SI;AX←(AX)+(SI)ADD[BX+2],AL;(BX+2)←((BX)+2)+(AL)ADDDX,[BX+SI];DX←(DX)+((BX)+(SI))ADDAX,CL;錯誤!操作數(shù)類型應(yīng)一致ADD[SI],[BX];錯誤!不允許兩個操作數(shù)都是存儲器ADDDS,AX;錯誤!不允許把段寄放器作為操作數(shù)加法指令對全部6個狀態(tài)標(biāo)志位都會產(chǎn)生影響。試分析以下兩條指令執(zhí)行后的狀態(tài):MOVAL,7EHADDAL,5BH分析:我們用手工的方法來模擬以上兩條指令的執(zhí)行,如下01111110+01011011110110011
根據(jù)運算過程可得出各狀態(tài)標(biāo)志位的值:(Ci表示第i位的進(jìn)位)C3=1,所以AF=1;C7=0,所以CF=0;C7⊕C6=1,所以O(shè)F=1;
結(jié)果中1的個數(shù)為奇數(shù),所以PF=0;結(jié)果的bit7=1,所以SF=1;結(jié)果不為零,所以ZF=0。
其中CF=0意味著若操作數(shù)是無符號數(shù),則結(jié)果沒有產(chǎn)生溢出;而OF=1意味著若操作數(shù)是有符號數(shù),則運算結(jié)果溢出。事實上,根據(jù)運算結(jié)果AL=D9H>7FH(8位有符號數(shù)的最大值)和D9H<FFH(8位無符號數(shù)的最大值)也可得到一致結(jié)果。②帶進(jìn)位的加法指令A(yù)DC
設(shè)CF=1,寫出以下指令執(zhí)行后的結(jié)果。MOVAL,7EHADCAL,86H
指令執(zhí)行后:AL=7EH+ABH+1=2AH,且CF=1。
求兩個32位無符號數(shù)0107A379H與10067E4FH二者之和。MOVDX,0107H;第一個數(shù)高16位傳送到DXMOVAX,0A379H;第一個數(shù)低16位傳送到AXMOVBX,1006H;其次個數(shù)高16位傳送到BXMOVCX,7E4FH;其次個數(shù)低16位傳送到CXADDAX,CX;低16位相加,進(jìn)位在CF中ADCDX,BX;高16位相加,并加上低16位的進(jìn)位相加的最終結(jié)果為:110E21C8H。2減法運算指令
②帶借位的減法指令SBB
x、y、z均為32位數(shù),分別存放在地址為X、Y、Z的三個存儲單元中,用指令序列實現(xiàn)w=x+y+24-z,結(jié)果放在W單元中。
解:由于x、y、z均為32位數(shù),所以我們用兩個16位寄放器完成32位運算。程序段如下:MOVAX,X
MOVDX,X+2;DX:AX←xADDAX,Y
ADCDX,Y+2;DX:AX←x+yADDAX,24
ADCDX,0;DX:AX←x+y+24SUBAX,Z
SBBDX,Z+2;DX:AX←x+y+24-zMOVW,AX
MOVW+2,DX;32位結(jié)果存入W單元⑤求補(bǔ)指令NEG
若AL=47H,則執(zhí)行NEGAL后,AL=B9H,CF=1。本例中,結(jié)果B9H為(-47H)的補(bǔ)碼。
NEG指令對六個狀態(tài)標(biāo)志位均有影響。但要注意以下兩點:
(1)執(zhí)行NEG指令后,一般狀況下都會使CF為1。由于用零減去某個操作數(shù),自然會產(chǎn)生借位,而減法的CF值正是反映無符號數(shù)運算中的借位狀況。除非給定的操作數(shù)為零才會使CF為0。
2
(2)若操作數(shù)的值為80H(-128)或為8000H(-32768),則執(zhí)行NEG指令后,其結(jié)果仍為80H或8000H,但OF置1,其它狀況下OF均置0。3乘法運算指令①無符號數(shù)乘法指令MULMULDL;AX←(AL)×(DL)MULBX;DX:AX←(AX)×(BX)MULBYTEPTR[SI];AX←(AL)×((SI))MULW0RDPTR[DI];DX:AX←(AX)×((DI)+1):(DI))MUL10;錯誤!源操作數(shù)不能為馬上數(shù)MULAL,BL;錯誤!目的操作數(shù)無需寫出②有符號數(shù)乘法指令I(lǐng)MUL設(shè)AL=FEH,CL=11H,求AL的內(nèi)容與CL的內(nèi)容的乘積。解:若將兩個寄放器中內(nèi)容看做無符號數(shù),則應(yīng)使用指令:MULCL,指令執(zhí)行后:AX=10DEH,因AH中的結(jié)果不為零,故CF=0F=l。若將兩個寄放器中內(nèi)容看作有符號數(shù),則應(yīng)使用指令:IMULCL,指令執(zhí)行后:AX=FFDEH=-34。因AH的內(nèi)容是AL的符號擴(kuò)展,故CF=0F=0。4BCD碼運算調(diào)整指令①BCD碼的加法運算調(diào)整指令A(yù)AA/DAA(1)非壓縮BCD碼的加法調(diào)整指令A(yù)AA用十進(jìn)制計算9+4MOVAL,09H;AL←9MOVBL,04H;BL←4ADDAL,BL;AL=(AL)+(BL)=0DHAAA;AL=(0DH+06H)∧0FH=03H;AH←AH+1;CF←1(2)壓縮BCD碼的加法調(diào)整指令DAA用十進(jìn)制計算48+27,程序段如下:MOVAL,48HADDAL,27HDAA其中,ADD指令的運算過程為:01001000?001001110110111148+27應(yīng)等于75,但ADD指令運算的結(jié)果為6FH,結(jié)果不正確。執(zhí)行DAA指令時,因低4位>9,故進(jìn)行加6調(diào)整:01101111?0000011001110101可以看出,調(diào)整后:AL=(75)BCD,AF=1,CF=0,結(jié)果正確。②BCD碼的減法運算調(diào)整指令A(yù)AS/DAS(1)非壓縮的BCD碼減法運算調(diào)整指令A(yù)AS3
用十進(jìn)制計算16-8
MOVAX,0106H;AX←非壓縮BCD數(shù)16MOVBL,08H;BL←非壓縮BCD數(shù)8SUBAL,BL;AL←(AL)-(BL)AAS;BCD碼減法調(diào)整,AL=8
程序中SUB指令和AAS指令的具體操作如下:
指令操作0000011006
SUBAL,BL-00001000-0811111110FEAAS-00000110-0611111000F8∧00001111∧0F0000100008
最終結(jié)果為:AL=08H,AH=0,CF=AF=1(2)壓縮的BCD碼減法運算調(diào)整指令DAS③BCD碼的乘法運算調(diào)整指令A(yù)AM
按十進(jìn)制乘法計算7×8,程序段如下:MOVAL,07H;AL←07HMOVCL,08H;CL←08H
MULCL;AX=0038H(56的二進(jìn)制數(shù)表示)AAM;AH=05H,AL=06H
AX=0506H為正確的非壓縮的BCD碼結(jié)果。
AAM的操作實質(zhì)上是把AL中的二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),所以對于不超過99的二進(jìn)制數(shù),用一條AAM指令即可實現(xiàn)二進(jìn)制數(shù)到十進(jìn)制數(shù)的轉(zhuǎn)換。把3AH轉(zhuǎn)換成等值的十進(jìn)制數(shù)。MOVAL,3AHAAM
結(jié)果:AX=0508H,即與3AH等值的十進(jìn)制數(shù)為58。④BCD碼的除法運算調(diào)整指令A(yù)AD
按十進(jìn)制除法計算55÷7,程序段如下:MOVAX,0505H;AX=55BCDMOVCL,07H;CL=7AAD;AX=0037HDIVCL;AH=6,AL=7
所得結(jié)果為非壓縮的BCD碼(商7余6)。例2:把73轉(zhuǎn)換成等值的二進(jìn)制數(shù)。MOVAX,0703H;AX=73BCDAAD;AX=0049H
所得結(jié)果49H為十進(jìn)制數(shù)73的二進(jìn)制數(shù)表示。
二、規(guī)律運算指令
4
把AH和AL中的非壓縮BCD碼組合成壓縮的BCD碼,放到AL中。MOVCL,4;移位次數(shù)SHLAH,CL;將AH中的BCD碼左移4位ORAL,AH;AH與AL的內(nèi)容拼接在一起用不同的指令將AX寄放器清零。指令優(yōu)缺點速度快、指令短;會影響標(biāo)志位不影響標(biāo)志位;指令長影響標(biāo)志位;指令長速度快、指令短;會影響標(biāo)志位指令多、執(zhí)行時間長;會影響標(biāo)志位方法1XORAX,AX方法2MOVAX,0方法3ANDAX,0方法4SUBAX,AX方法5MOVCL,8SHLAX,CL1移位指令把AX中的16位無符號數(shù)乘以10。把一個數(shù)乘10可寫成:10x=8x+2x=2x+2x,用左移指令實現(xiàn)乘10運算的程序段如下:SHLAX,1;AX←2xMOVBX,AX;BX←2xSHLAX,1;AX←4xSHLAX,1;AX←8xADDAX,BX;AX←8x+2x=10x將AL中的兩位壓縮BCD數(shù)轉(zhuǎn)換成ASCII碼送入BL和BH,AL的內(nèi)容保持不變。MOVBL,AL;先轉(zhuǎn)換BCD數(shù)的個位數(shù)ANDBL,0FH;高4位清零ADDBL,30H;個位數(shù)的ASCII碼在BL中MOVCL,4;再轉(zhuǎn)換BCD數(shù)的十位數(shù)RORAL,CL;把高4位移到低4位MOVBH,ALANDBH,0FHADDBH,30H;十位數(shù)的ASCII碼在BH中RORAL,CL;恢復(fù)AL原來的內(nèi)容三、串操作指令將2000H:1200H地址開始的200個字節(jié)傳送到6000H:2000H開始的存儲單元中。程序段如下:MOVAX,2000HMOVDS,AX;設(shè)置源串段地址MOVAX,6000HMOVES,AX;設(shè)置目的串段地址MOVSI,1200H;設(shè)置源串偏移地址MOVDI,2000H;設(shè)置目的串偏移地址MOVCX,100;串長度送CXCLD;DF←0,方向為從低地址到高地址REPMOVSB;每次傳送一個字節(jié),并自動修改地址指針及CX內(nèi)容;若修改后CX≠0就重復(fù)執(zhí)行5
31把6000H:1200H開始的100個字節(jié)存儲單元全部設(shè)置為55H。MOVAX,6000H
MOVES,AX;ES←目
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版木工班組承包施工進(jìn)度管理合同4篇
- 養(yǎng)殖場環(huán)保設(shè)施建設(shè)與運營合同(2025年度)3篇
- 2025年度自愿解除勞動合同及社會保險轉(zhuǎn)移協(xié)議
- 2025年度綠色生態(tài)住宅裝飾公司合同模板
- 二零二五年度毛紗品牌授權(quán)及市場推廣合同4篇
- 揭陽匯金中心C違法分包導(dǎo)致的工程質(zhì)量問題解決合同(2025年)2篇
- 二零二五年度路燈照明設(shè)施維護(hù)與綠色環(huán)保合同4篇
- 2025年度個人出租公寓管理服務(wù)合同規(guī)范范本4篇
- 2025年度特色公寓購買合同示范4篇
- 超市裝修合同終止協(xié)議書
- 無人化農(nóng)場項目可行性研究報告
- 《如何存款最合算》課件
- 社區(qū)團(tuán)支部工作計劃
- 拖欠工程款上訪信范文
- 《wifi協(xié)議文庫》課件
- 中華人民共和國職業(yè)分類大典是(專業(yè)職業(yè)分類明細(xì))
- 2025年新高考語文復(fù)習(xí) 文言文速讀技巧 考情分析及備考策略
- 2024年??谑羞x調(diào)生考試(行政職業(yè)能力測驗)綜合能力測試題及答案1套
- 一年級下冊數(shù)學(xué)口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫大全-下(多選題部分)
- 真人cs基于信號發(fā)射的激光武器設(shè)計
評論
0/150
提交評論