資源描述:
《微機原理課件第6講.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第3章8086的尋址方式和指令系統(tǒng)3.18086的尋址方式3.28086指令格式及數(shù)據(jù)類型3.38086的指令集乘法指令指令含義時鐘數(shù)MUL無符號數(shù)乘法70~139+EAIMUL整數(shù)乘法80~160+EAAAM乘法的ASCII調(diào)整83①MUL無符號數(shù)乘法指令MUL無符號數(shù)乘法指令(Multiplyunsigned)格式MULsrc。功能將源操作數(shù)和累加器中的數(shù)都當成無符號數(shù),然后將兩數(shù)相乘,src可以是字(0~65535)和字節(jié)(0~255)。操作數(shù)要求可以是寄存器、存儲單元,但不能是立即數(shù);源操作數(shù)是存儲單元時,必須在操作數(shù)前加B或W說明是字節(jié)還是字。①MUL無符號數(shù)乘法指
2、令運算情況源操作數(shù)是一個字節(jié)源操作數(shù)與累加器AL中的內(nèi)容相乘,乘積為雙倍長的16位數(shù),高8位送到AH,低8位送AL。即AX?AL×源。AL被乘數(shù)8位操作數(shù)乘數(shù)×8位AX乘積16位①MUL無符號數(shù)乘法指令運算情況源操作數(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乘存儲器字,
3、結(jié)果在DX:AX中如果運算結(jié)果的高半部分(在AH或DX中)為零,則狀態(tài)標志位(CF)=(OF)=0,否則(CF)=(OF)=1。因此,狀態(tài)標志位(CF)=(OF)=1,表示AH或DX中包含著乘積的有效位。①MUL無符號數(shù)乘法指令?舉例MOVAL,14H;(AL)=14H--20MOVCL,05H;(CL)=05H--5MULCL;(AX)=0064H--100本例中結(jié)果的高半部分(AH)=0,因此,狀態(tài)標志位(CF)=(OF)=0,通過檢測標志,可以去除結(jié)果中的前導無效零。有了乘法(和除法)指令,使有些運算程序的編程變得簡單方便。但是必須注意,乘法指令的執(zhí)行速度很慢,除法指令
4、也是如此。①MUL無符號數(shù)乘法指令②IMUL整數(shù)乘法指令I(lǐng)MUL整數(shù)乘法指令(IntegerMultiply)格式IMULsrc。功能將源操作數(shù)和累加器中的數(shù)都當成有符號數(shù),然后將兩數(shù)相乘,src可以是字(-32768~32767)和字節(jié)(-128~127)。操作數(shù)要求和運算情況與MUL要求相同。?舉例IMULCL;AL乘CL,結(jié)果在AX中IMULBX;AX乘BX,結(jié)果在DX:AX中IMULBYTE[DI];AL乘存儲器(8位),結(jié)果在AX中IMULWORD[BX];AX乘存儲器字,結(jié)果在DX:AX中如果運算結(jié)果的高半部分(在AH或DX中)為0或1,則狀態(tài)標志位(CF)=(O
5、F)=0,否則(CF)=(OF)=1。因此,狀態(tài)標志位(CF)=(OF)=1,表示AH或DX中包含著乘積的有效位。為0,則表示高半部分是符號擴展。②IMUL整數(shù)乘法指令正數(shù),AH或DX為全0負數(shù),AH或DX為全1?舉例MOVAX,04E8H;(AX)=04E8HMOVBX,4E20H;(BX)=4E20HIMUL?BX;(DX:AX)=(AX)?(BX)以上指令的執(zhí)行結(jié)果為:(DX)=017FH,(AX)=4D00H,且(CF)=(OF)=1。實際上,以上指令完成帶符號數(shù)+1256和+20000的乘法運算,得到乘積為+25120000。由于此時DX中結(jié)果的高半部分包含著乘積的
6、有效數(shù)字,故狀態(tài)標志位(CF)=(OF)=1。②IMUL整數(shù)乘法指令③AAM乘法的ASCII調(diào)整指令AAM乘法的ASCII調(diào)整指令(ASCIIAdjustforMultiply)格式AAM。功能對AL中的兩個非壓縮十進制數(shù)相乘的乘積進行十進制數(shù)的調(diào)整,在AX中得到正確的非壓縮十進制數(shù)的乘積,高位在AH中,低位在AL中。調(diào)整的過程把AL寄存器內(nèi)容除以10,商放在AH中,余數(shù)在AL中。即:AH?AL/10所得的商;AL?AL/10所得的余數(shù).③AAM乘法的ASCII調(diào)整指令舉例求兩個非壓縮十進制數(shù)08和04之乘積。解:MOVAL,08H;置初值MOVBL,04HMULBL;AL?
7、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ù)長度的兩倍,若不夠,必須擴