




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章8086的尋址方式和指令系統(tǒng)
第6講教學(xué)目的和要求【教學(xué)目標(biāo)】通過8086指令結(jié)構(gòu)的講解,使學(xué)生了解并掌握乘法、除法類指令、邏輯運(yùn)算類指令和移位指令的結(jié)構(gòu)、功能和使用方法。【教學(xué)重點(diǎn)】①乘法指令;②移位指令;【教學(xué)難點(diǎn)】算術(shù)運(yùn)算指令和邏輯運(yùn)算指令的區(qū)別。乘法指令指令含義時鐘數(shù)MUL無符號數(shù)乘法70~139+EAIMUL整數(shù)乘法80~160+EAAAM乘法的ASCII調(diào)整83①M(fèi)UL無符號數(shù)乘法指令MUL無符號數(shù)乘法指令
(Multiplyunsigned)格式
MULsrc。功能
將源操作數(shù)和累加器中的數(shù)都當(dāng)成無符號數(shù),然后將兩數(shù)相乘,src可以是字(0~65535)和字節(jié)(0~255)。操作數(shù)要求可以是寄存器、存儲單元,但不能是立即數(shù);源操作數(shù)是存儲單元時,必須在操作數(shù)前加B或W說明是字節(jié)還是字。①M(fèi)UL無符號數(shù)乘法指令運(yùn)算情況
源操作數(shù)是一個字節(jié)源操作數(shù)與累加器AL中的內(nèi)容相乘,乘積為雙倍長的16位數(shù),高8位送到AH,低8位送AL。即
AX
AL×源。AL被乘數(shù)8位操作數(shù)乘數(shù)×8位AX乘積16位①M(fèi)UL無符號數(shù)乘法指令運(yùn)算情況
源操作數(shù)是一個字源操作數(shù)與累加器AX的內(nèi)容相乘,結(jié)果為32位數(shù),高位字放在DX寄存器中,低位字放在AX寄存器中。即
(DX,AX)
AX×源AX被乘數(shù)16位操作數(shù)乘數(shù)×16位AX乘積32位DX
舉例MULCL ;AL乘CL,結(jié)果在AX中MULBX;AX乘BX,結(jié)果在DX:AX中MULBYTE[DI];AL乘存儲器(8位),結(jié)果在AX中MULWORD[BX];AX乘存儲器字,結(jié)果在DX:AX中
如果運(yùn)算結(jié)果的高半部分(在AH或DX中)為零,則狀態(tài)標(biāo)志位(CF)=(OF)=0,否則(CF)=(OF)=1。因此,狀態(tài)標(biāo)志位(CF)=(OF)=1,表示AH或DX中包含著乘積的有效位。
①M(fèi)UL無符號數(shù)乘法指令
舉例
MOV AL,14H ;(AL)=14H--20 MOV CL,05H ;(CL)=05H--5 MUL CL ;(AX)=0064H--100
本例中結(jié)果的高半部分(AH)=0,因此,狀態(tài)標(biāo)志位(CF)=(OF)=0,通過檢測標(biāo)志,可以去除結(jié)果中的前導(dǎo)無效零。
有了乘法(和除法)指令,使有些運(yùn)算程序的編程變得簡單方便。但是必須注意,乘法指令的執(zhí)行速度很慢,除法指令也是如此。①M(fèi)UL無符號數(shù)乘法指令②IMUL整數(shù)乘法指令I(lǐng)MUL整數(shù)乘法指令
(IntegerMultiply)格式
IMULsrc。功能
將源操作數(shù)和累加器中的數(shù)都當(dāng)成有符號數(shù),然后將兩數(shù)相乘,src可以是字(-32768~32767)和字節(jié)(-128~127)。操作數(shù)要求和運(yùn)算情況
與MUL要求相同。
舉例IMULCL ;AL乘CL,結(jié)果在AX中IMULBX;AX乘BX,結(jié)果在DX:AX中IMULBYTE[DI];AL乘存儲器(8位),結(jié)果在AX中IMULWORD[BX];AX乘存儲器字,結(jié)果在DX:AX中
如果運(yùn)算結(jié)果的高半部分(在AH或DX中)為0或1,則狀態(tài)標(biāo)志位(CF)=(OF)=0,否則(CF)=(OF)=1。因此,狀態(tài)標(biāo)志位(CF)=(OF)=1,表示AH或DX中包含著乘積的有效位。為0,則表示高半部分是符號擴(kuò)展。
②IMUL整數(shù)乘法指令正數(shù),AH或DX為全0負(fù)數(shù),AH或DX為全1
舉例
MOV AX,04E8H;(AX)=04E8H MOV BX,4E20H;(BX)=4E20H IMUL?BX ;(DX:AX)=(AX)
(BX)以上指令的執(zhí)行結(jié)果為:(DX)=017FH,(AX)=4D00H,且(CF)=(OF)=1。實(shí)際上,以上指令完成帶符號數(shù)+1256和+20000的乘法運(yùn)算,得到乘積為+25120000。由于此時DX中結(jié)果的高半部分包含著乘積的有效數(shù)字,故狀態(tài)標(biāo)志位(CF)=(OF)=1。②IMUL整數(shù)乘法指令③AAM乘法的ASCII調(diào)整指令A(yù)AM乘法的ASCII調(diào)整指令(ASCIIAdjustforMultiply)格式
AAM。功能
對AL中的兩個非壓縮十進(jìn)制數(shù)相乘的乘積進(jìn)行十進(jìn)制數(shù)的調(diào)整,在AX中得到正確的非壓縮十進(jìn)制數(shù)的乘積,高位在AH中,低位在AL中。調(diào)整的過程
把AL寄存器內(nèi)容除以10,商放在AH中,余數(shù)在AL中。即:AH
AL/10所得的商;AL
AL/10所得的余數(shù).③AAM乘法的ASCII調(diào)整指令舉例
求兩個非壓縮十進(jìn)制數(shù)08和04之乘積。解:MOVAL,08H;置初值
MOVBL,04HMULBL;AL
08與04之乘積20HAAM;
調(diào)整得AH=03H(十位),AL=02H(個位)
結(jié)果:AX=0302H,即BCD數(shù)32。
若想轉(zhuǎn)換成ASCII碼,需再執(zhí)行
ORAX,3030H除法指令指令含義時鐘數(shù)DIV無符號除法80~168+EAIDIV整數(shù)除法101~190+EAAAD除法的ASCII調(diào)整60CBW把字節(jié)轉(zhuǎn)換成字2CWD把字轉(zhuǎn)換成雙字5①DIV無符號數(shù)除法指令DIV無符號數(shù)除法指令
(Divisionunsigned)格式
DIVsrc。功能
將兩個無符號數(shù)相除,被除數(shù)的長度必須是除數(shù)長度的兩倍,若不夠,必須擴(kuò)展被除數(shù)的長度。操作數(shù)要求可以是寄存器、存儲單元,但不能是立即數(shù);源操作數(shù)是存儲單元時,必須在操作數(shù)前加B或W說明是字節(jié)還是字。①DIV無符號數(shù)除法指令運(yùn)算情況
源操作數(shù)是一個字節(jié)
16位被除數(shù)必須放入AX中,src為8位。
AL
AX/src字節(jié)的商
AH
AX/src字節(jié)的余數(shù)
AX16位被除數(shù)操作數(shù)8位除數(shù)AL商
AH余數(shù)
①DIV無符號數(shù)除法指令運(yùn)算情況
源操作數(shù)是一個字
32位被除數(shù)必須放入(DX,AX)中,src為16位。
AX
(DX,AX)/src字的商
DX
(DX,AX)/src字的余數(shù)
DX,AX32位被除數(shù)操作數(shù)16位除數(shù)AX商
DX余數(shù)
舉例MOV AX,0F05H ;(AX)=0F05HMOV DX,068AH;(DX)=068AHMOV CX,08E9H;(CX)=08E9HDIV CX ;
運(yùn)算完畢后,商(AX)=BBE1H,余數(shù)(DX)=073CH①DIV無符號數(shù)除法指令
注意事項(xiàng)
執(zhí)行DIV指令時,如果除數(shù)為0,或字節(jié)除法時AL寄存器中的商大于FFH,或字除法時AX寄存器中的商大于FFFFH,則CPU立即自動產(chǎn)生一個類型號為0的內(nèi)部中斷。
①DIV無符號數(shù)除法指令②IDIV整數(shù)除法指令I(lǐng)DIV整數(shù)除法指令
(IntegerDivision)格式
IDIVsrc。功能
將兩個帶符號數(shù)相除,被除數(shù)的長度必須是除數(shù)長度的兩倍,若不夠,必須用CBW或CWD擴(kuò)展被除數(shù)的長度。操作數(shù)要求與運(yùn)算情況
同DIV。
注意事項(xiàng)
執(zhí)行IDIV指令時,如果除數(shù)為0,或字節(jié)除法時AL寄存器中的商超出-128~127范圍,或字除法時AX寄存器中的商超出-32768~32767范圍,則CPU立即自動產(chǎn)生一個類型號為0的內(nèi)部中斷。
②IDIV整數(shù)除法指令②IDIV整數(shù)除法指令
關(guān)于余數(shù)的符號
在對有符號數(shù)進(jìn)行除法運(yùn)算時,例如-30除以8,可以得到商為-4,余數(shù)為+2;也可以得到商為-3,余數(shù)為-6,兩結(jié)果都是正確的。
對于8086,規(guī)定余數(shù)的符號和被除數(shù)的符號相同,因此第二種結(jié)果是8086執(zhí)行完以后的結(jié)果。被除數(shù)擴(kuò)展問題無論是無符號數(shù)還是有符號數(shù)除法時,必須滿足被除數(shù)長度是除數(shù)長度的兩倍。當(dāng)不夠時,涉及到被除數(shù)的擴(kuò)展。
無符號數(shù):被除數(shù)的擴(kuò)展比較簡單,添上足夠的零就可以了。以下指令將AL中的一個8位無符號數(shù)擴(kuò)展成為16位,存放在AX中。
MOV AL,0FBH ;(AL)=11111011B XOR AH,AH ;(AH)=00000000B
有符號數(shù):被除數(shù)的擴(kuò)展必須根據(jù)各自的符號來完成,因此,需要借助指令CBW和CWD完成。③CBW把字節(jié)轉(zhuǎn)換成字指令CBW把字節(jié)轉(zhuǎn)換成字指令
(ConvertBytetoWord)格式
CBW。功能
把寄存器AL中字節(jié)的符號位擴(kuò)充到AH的所有位。(AH被稱為AL的符號擴(kuò)充),不影響標(biāo)志位。擴(kuò)展方法
AL為正數(shù)(AL<80H)時,即D7=0時,使AH=00H。
AL為負(fù)數(shù)(AL>=80H)時,即D7=1時,使AH=0FFH。擴(kuò)展方法MOVAL,4FH ;(AL)=01001111BCBW;
由于AL<80H,或者說AL為正數(shù)時,符號位為0,AH應(yīng)補(bǔ)0,因此(AH)=00000000BMOVAL,0F4H ;(AL)=11110100B CBW ;
由于AL>7FH,或者說AL為負(fù)數(shù)時,符號位為1,AH應(yīng)補(bǔ)1,因此(AH)=11111111B③CBW把字節(jié)轉(zhuǎn)換成字指令④CWD把字轉(zhuǎn)換成雙字指令CWD把字轉(zhuǎn)換成雙字指令
(ConvertWordtoDoubleWord)格式
CWD。功能
把寄存器AX中字的符號位擴(kuò)充到DX的所有位。擴(kuò)展方法
AX為正數(shù)(AX<8000H)時,即D15=0時,使DX=0000H。
AX為負(fù)數(shù)(AX>7FFFH)時,即D15=1時,使DX=0FFFFH。
CBW和CWD指令在帶符號數(shù)的乘法(IMUL)和除法(IDIV)運(yùn)算中十分有用,在字節(jié)或字的運(yùn)算之前,將AL或AX中數(shù)據(jù)的符號位進(jìn)行擴(kuò)展。例如:MOV AL,MUL_BYTE;(AL)←8位被乘數(shù)(帶符號數(shù))CBW ;擴(kuò)展成為16位帶符號數(shù),在AX中IMUL?BX;兩個16位帶符號數(shù)相乘,結(jié)果在DX:AX中
CBW和CWD⑤AAD除法的ASCII調(diào)整指令A(yù)AD除法的ASCII調(diào)整指令
(ASCIIAdjustforDivision)格式
AAD。功能
在做除法之前,將AX中BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)并存入AL中。調(diào)整過程
AL←AH×10+AL;AH←00。位運(yùn)算指令(12條)①邏輯運(yùn)算②循環(huán)移位NOT取反ROL循環(huán)左移AND與ROR循環(huán)右移OR或RCL通過進(jìn)位的循環(huán)左移XOR異或RCR通過進(jìn)位的循環(huán)右移TEST測試③算術(shù)邏輯移位SHL/SAL邏輯/算術(shù)左移SHR邏輯右移SAR算術(shù)右移
位操作指令是對8位或16位的寄存器或存儲單元中的內(nèi)容按位進(jìn)行操作。邏輯運(yùn)算指令命令含義時鐘數(shù)NOT取反3~16+EAAND與3~17+EAOR或3~16+EAXOR異或3~17+EATEST測試3~11+EA①NOT取反指令NOT取反指令
(LogicalNot)格式
NOTdst。功能
dst←dst取反,執(zhí)行完后不影響標(biāo)志位。操作數(shù)要求①可以是8位或16位寄存器、存儲器。②對于存儲器操作,需指明是字還是字節(jié)。②AND邏輯與指令A(yù)ND邏輯與指令
(LogicalAND)格式
ANDdst,src。src可以是立即數(shù)。功能
dst←dst∧src,執(zhí)行完后影響標(biāo)志位。主要用于使操作數(shù)的某些位保留(和“1”相與),而使某些位清除(和“0”相與)。操作數(shù)要求①可以是8位或16位寄存器、存儲器,不能同時為men。②對于存儲器操作,需指明是字還是字節(jié)。③OR邏輯或指令OR邏輯或指令
(LogicalOR)格式
ORdst,src。src可以是立即數(shù)。功能
dst←dst∨src,執(zhí)行完后影響標(biāo)志位。主要用于使操作數(shù)的某些位保留(和“0”相或),而使某些位置1(和“0”相或)。操作數(shù)要求①可以是8位或16位寄存器、存儲器,不能同時為men。②對于存儲器操作,需指明是字還是字節(jié)。AND,OR,NOT舉例舉例
MOVAL,35H;AL=0011,0101BANDAL,0FH;
∧0000,1111B,得AL=05HORAL,70H;
∨
0111,0000B,得AL=75HNOTAL;
取反得1000,1010B,即AL=8AH④XOR異或指令XOR異或指令
(ExclusiveOR)格式
XORdst,src。src可以是立即數(shù)。功能
dst←dst⊕src,執(zhí)行完后影響標(biāo)志位。主要用于使操作數(shù)的某些位保留(和“0”相異或),而使某些位取反(和“1”相異或)。操作數(shù)要求
①可以是8位或16位reg、men,不能同時為men。
②對于存儲器操作,需指明是字還是字節(jié)。⑤TEST測試指令TEST測試指令
(Test)格式
TESTdst,src。src可以是立即數(shù)。功能
dst∧src,執(zhí)行完后影響標(biāo)志位。但是與完后的結(jié)果不回送。主要用于對某些位數(shù)據(jù)的檢測,編程時,其后往往緊跟條件轉(zhuǎn)移指令。操作數(shù)要求①可以是8位或16位寄存器、存儲器,不能同時為men。②對于存儲器操作,需指明是字還是字節(jié)。邏輯運(yùn)算指令總結(jié)
除了NOT指令外,其他指令都影響狀態(tài)標(biāo)志位。這些指令將根據(jù)各自邏輯運(yùn)算的結(jié)果影響SF、ZF和PF狀態(tài)標(biāo)志位,同時將CF和OF置“0”,但AF的值不確定。
算術(shù)邏輯移位指令命令含義時鐘數(shù)SHL/SAL邏輯/算術(shù)左移2~20+EA+4*位SHR邏輯右移2~20+EA+4*位SAR算術(shù)右移2~20+EA+4*位①SHL/SAL邏輯算術(shù)左移指令SHL/SAL邏輯算術(shù)左移指令
(ShiftLogic/ArithmeticLeft)格式
SHL/SALdst,1/CL。功能
將寄存器或存儲器中的目的操作數(shù)的各位左移,每移一次,最低有效位LSB補(bǔ)0,而最高有效位MSB進(jìn)入標(biāo)志位CF。MSBLSB……0CF①SHL/SAL邏輯算術(shù)左移指令舉例MOVAH,06H;AH=06H=00000110BSALAH,1;將AH的內(nèi)容左移1次,AH=
00001100BMOVCL,03HSHLDI,CL;將DI的內(nèi)容左移3次SALBYTEPTR[BX];將內(nèi)存單元的字節(jié)左移1位
左移一次,相當(dāng)于乘以2,僅移位一次時,可以直接用立即數(shù)表示,否則,移位次數(shù)必須送入CL中。②SHR邏輯右移指令SHR邏輯右移指令
(ShiftLogicRight)格式
SHRdst,1/CL。功能
各位進(jìn)行右移。每移一次,低位進(jìn)入CF,最高位補(bǔ)0。MSBLSB……0CF②SHR邏輯右移指令說明
若目的操作數(shù)為無符號數(shù),每右移一次,目的操作數(shù)除以2,余數(shù)被丟掉。舉例用右移的方法作除法133/8=16…5。解:MOVAL,10000101B;AL=133MOVCL,03H;CL=移位次數(shù)SHRAL,CL;右移3次指令執(zhí)行后,AL=10H=16,余數(shù)5被丟失。標(biāo)志位CF、AF不定。③SAR算術(shù)右移指令SAR算術(shù)右移指令
(ShiftArithmeticRight)格式
SARdst,1/CL。功能
各位進(jìn)行右移。每移一次,低位進(jìn)入CF,最高位保持不變。所謂算術(shù)和邏輯的區(qū)別就是在右移時,是補(bǔ)符號位還是零。MSBLSB……CF③SAR算術(shù)右移指令說明
若目的操作數(shù)為帶符號數(shù),每右移一次,目的操作數(shù)除以2,余數(shù)被丟掉。舉例用右移的方法作除法-128/8=-16。解:
MOVAL,10000000B;AL=-128
MOVCL,03H;CL=移位次數(shù)
SHRAL,CL;右移3次指令執(zhí)行后,AL=1111,0000B=0F0H=-16。循環(huán)移位指令命令含義時鐘數(shù)ROL循環(huán)左移2~20+EA+4*位ROR循環(huán)右移2~20+EA+4*位RCL通過進(jìn)位的循環(huán)左移2~20+EA+4*位RCR通過進(jìn)位的循環(huán)右移2~20+EA+4*位①R
溫馨提示
- 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-2030年中國面膜行業(yè)競爭格局及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國隔音玻璃產(chǎn)業(yè)運(yùn)營狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國鏈鋸行業(yè)十三五規(guī)劃與發(fā)展趨勢預(yù)測報(bào)告
- 2025-2030年中國資產(chǎn)管理行業(yè)運(yùn)行動態(tài)與營銷策略研究報(bào)告
- 2025-2030年中國聚苯醚行業(yè)風(fēng)險(xiǎn)評估規(guī)劃分析報(bào)告
- 南寧理工學(xué)院《美國文學(xué)選讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 邢臺醫(yī)學(xué)高等??茖W(xué)?!渡鷳B(tài)文明建設(shè)理論與實(shí)踐前沿》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西科技學(xué)院《公共管理與服務(wù)課程開發(fā)與教材分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 贛南師范大學(xué)科技學(xué)院《海報(bào)設(shè)計(jì)(數(shù)字方向)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025安徽省安全員知識題庫及答案
- 新生兒早期基本保健課件
- 采礦學(xué)課程設(shè)計(jì)硯北煤礦新井設(shè)計(jì)全套圖紙
- 大型儲罐計(jì)算書
- 檢體診斷-頭頸部檢查(診斷學(xué)課件)
- 煤礦提升機(jī)作業(yè)理論考試參考題庫(200題)
- 侯馬北車輛段2023年運(yùn)用機(jī)考復(fù)習(xí)題-曲沃作業(yè)場
- 手術(shù)室停電和突然停電應(yīng)急預(yù)案PPT演示課件
- 職業(yè)病危害告知卡(油漆)
- 抗震支吊架安裝檢驗(yàn)批
- 橋梁各部位加固及橋梁維修技術(shù)總結(jié)
- GB/T 40336-2021無損檢測泄漏檢測氣體參考漏孔的校準(zhǔn)
評論
0/150
提交評論