版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1微機原理與接口技術(shù)2§3-38086的指令系統(tǒng)
——算術(shù)運算指令二、算術(shù)運算指令算術(shù)運算指令可處理4種類型的數(shù):無符號二進制整數(shù)帶符號二進制整數(shù)無符號壓縮十進制整數(shù)(PackedDecimal)無符號非壓縮十進制整數(shù)(UnpackedDecimal)一個8位二進制數(shù)可看成4種不同類型的數(shù),所表示的數(shù)值亦不同。3§3-38086的指令系統(tǒng)
——算術(shù)運算指令數(shù)的表示:二進制數(shù):可以是8位或16位,若是帶符號數(shù),則用補碼表示。壓縮十進制數(shù):一個字節(jié)中存放兩個BCD碼十進制數(shù)。非壓縮十進制數(shù):一個字節(jié)的低半字節(jié)存放十進制數(shù),高半字節(jié)為全零。例如,對十進制數(shù)字58:壓縮十進制數(shù)表示:只需一個字節(jié),即01011000B;非壓縮十進制數(shù)表示:需兩個字節(jié),即00000101B和00001000B。4§3-38086的指令系統(tǒng)
——算術(shù)運算指令8086/8088指令系統(tǒng)提供:加、減、乘、除運算指令:處理無符號或帶符號的8位/16位二進制數(shù)的算術(shù)運算;調(diào)整操作指令:進行壓縮的或非壓縮的十進制數(shù)的算術(shù)運算;加法和減法運算指令:帶符號數(shù)和無符號數(shù)的加法和減法的運算可以用同一條加法或減法指令來完成。乘法和除法運算:分別設(shè)置無符號數(shù)和帶符號數(shù)的乘、除法指令。絕大部分算術(shù)運算指令都影響狀態(tài)標志位!5§3-38086的指令系統(tǒng)
——算術(shù)運算指令加法減法ADD加法SUB減法ADC帶進位的加法SBB帶借位的減法INC增量DEC減量AAA加法的ASCII調(diào)整NEG取負DAA加法的十進制調(diào)整CMP比較除法AAS減法的ASCII調(diào)整DIV無符號數(shù)除法DAS減法的十進制調(diào)整IDIV整數(shù)除法乘法AAD除法的ASCII調(diào)整MUL無符號數(shù)乘法CBW把字節(jié)轉(zhuǎn)換成字IMUL整數(shù)乘法CWD把字轉(zhuǎn)換成雙字AAM乘法的ASCII調(diào)整算術(shù)運算指令61.加法指令(Addition)⑴ADD加法指令(Addition)
指令格式:ADD目的,源指令功能:目的←源十目的⑵ADC帶進位的加法指令(AdditionwithCarry)
指令格式:ADC目的,源指令功能:目的←源十目的十CF注意:源操作數(shù)可以是寄存器、存儲器、立即數(shù);目的操作數(shù):只能用寄存器、存儲單元。源、目的操作數(shù)不能同時為存儲器,且類型必須一致,均為字節(jié)或字;這兩條指令影響的標志位為:CF、OF、PF、SF、ZF和AF?!?-38086的指令系統(tǒng)
——算術(shù)運算指令7§3-38086的指令系統(tǒng)
——算術(shù)運算指令例:兩種加法指令的實例
ADDAL,18H ;AL←
AL十18HADCBL,CL ;BL←
BL十CL十CFADCAX,DX ;AX←
AX十DX十CFADDAL,COST[BX];AL內(nèi)容和地址=DS:(COST+BX);的存儲字節(jié)相加,結(jié)果送ALADDCOST[BX],BL;將BL與物理地址=DS:(COST十BX)
;的存儲字節(jié)相加,結(jié)果留在該存儲單元中例:用加法指令對兩個8位16進制數(shù)5EH和3CH求和,并分析加法運算指令執(zhí)行后對標志位的影響。解:MOVAL,5EH ;AL=5EH(94)
MOVBL,3CH ;BL=3CH(60)
ADDAL,BL ;結(jié)果AL=9AH8§3-38086的指令系統(tǒng)
——算術(shù)運算指令討論ADD對標志位的影響:▲兩個數(shù)的相加過程:
010111105EH=94
+00111100即:
+3CH=60100110109AH=154運算后標志位:ZF=0,AF=1,CF=0,SF=1,PF=1,OF=1。思考:23467821H+4221A012H怎么寫程序?9§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑶INC增量指令(Increment)
指令格式:INC目的指令功能:目的←目的十1
操作數(shù)的要求:通用寄存器、內(nèi)存。注意:▲這條指令主要用在循環(huán)程序中,對地址指針和循環(huán)計數(shù)器等進行修改;▲指令執(zhí)行后影響AF、OF、PF、SF和ZF,但不影響進位標志CF?!绻箖?nèi)存單元的內(nèi)容增1,程序中必須說明該存儲單元是字還是字節(jié)。例INCBYTEPTR[BX];內(nèi)存字節(jié)單元內(nèi)容增1INCWORDPTR[BX];內(nèi)存字單元內(nèi)容增110§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑷AAA加法的ASCII調(diào)整指令(ASCIIAdjustforAddition)指令格式:AAA指令功能:在用ADD或ADC指令對兩個非壓縮十進制數(shù)或ASCII碼表示的十進制數(shù)作加法后,運算結(jié)果已存在AL中,用此指令將AL寄存器中的運算結(jié)果調(diào)整為一位非壓縮十進制數(shù),仍保留在AL中。如果AF=1,表示向高位有進位,則進到AH寄存器中。調(diào)整過程:若AL低4位>9或AF=1
則:①AL←AL十6;②用與操作(∧)將AL高4位清0③AF置1,CF置1,AH←AH十1
否則,僅將AL寄存器的高4位清0。11§3-38086的指令系統(tǒng)
——算術(shù)運算指令例若AL=BCD9,BL=BCD5,求兩數(shù)之和。解:設(shè)AH=0,則運算過程如下:ADDAL,BL;00001001…9;+00000101…5
AAA;00001110…低4為>9;+00000110…加6調(diào)整;00010100
;^00001111…清高4位;00000100…AL=4
;CF=1,AF=1,AH=1;結(jié)果為AX=0104H,表示非壓縮十進制數(shù)14
12§3-38086的指令系統(tǒng)
——算術(shù)運算指令例
求ASCII碼表示的數(shù)9(39H)與5(35H)之和。
設(shè)AH=0,則運算過程如下:MOVAL,‘9’;AL=39HMOVBL,‘5’;BL=35HADDAL,BL;00111001…’9’;+00110101…’5’AAA;01101110…低4為>9;+00000110…加6調(diào)整;01110100
;^00001111…清高4位;00000100…AL=4
;CF=1,AF=1,AH=1;結(jié)果為AX=0104H,表示非壓縮十進制數(shù)14
13§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑸DAA加法的十進制調(diào)整指令(DecimalAdjustforAddition)
指令格式:DAA
指令功能:將兩個壓縮BCD數(shù)相加后的結(jié)果調(diào)整為正確的壓縮BCD數(shù)。注意:相加后的結(jié)果必須在AL中,才能使用DAA指令。
調(diào)整過程:①若AL的低4位>9或AF=1,則AL←AL十6,對低4位進行調(diào)整;②若此時AL的高4位>9或CF=1,則AL←AL十60H,對高4位進行調(diào)整,并使CF置1,否則CF置0。14§3-38086的指令系統(tǒng)
——算術(shù)運算指令例若AL=BCD88,BL=BCD49,求兩數(shù)之和。解運算過程為:MOVAL,88H;AL=88HMOVBL,49H;BL=49HADDAL,BL;10001000…88;+01001001…49DAA;11010001…AF=1;+00000110…加6調(diào)整;11010111…調(diào)整后高半字節(jié)>9
;+01100000…加60H調(diào)整;00110111…結(jié)果為AL=BCD37,CF=1
15§3-38086的指令系統(tǒng)
——算術(shù)運算指令2.減法指令(Subtration)
⑴SUB減法指令(Subraction)
指令格式:SUB目的,源指令功能:目的←目的-源
例
SUBAX,BX ;AX←AX-BXSUBDX,1850H;DX←DX-1850HSUBBL,[BX] ;BL中內(nèi)容減去物理地址=DS:(BX)處的字節(jié),結(jié)果存入BL
⑵SBB帶借位的減法指令(SubtractwithBorrow)
指令格式:SBB目的,源
指令功能:目的←目的-源-CF
(SBB主要用于多字節(jié)減法中)例
SBBAL,CL
;AL←AL-CL-CF16§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑶DEC減量指令(Decrement)
指令格式:DEC目的指令功能:目的←目的-1
例
DECBX ;BX←BX-1DECWORDPTR[BP] ;堆棧段中位于[BP]偏置處的字減1⑷NEG取負指令(Negate)指令格式:NEG目的指令功能:目的←0-目的,即對目的操作數(shù)取負
例
NEGAX ;將AX中的數(shù)取負
NEGBYTEPTR[BX];對數(shù)據(jù)段中位于[BX]偏置處的字節(jié)取負
17§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑸CMP比較指令(Compare)
指令格式:CMP目的,源指令功能:目的-源,結(jié)果不回送到目的操作數(shù)中,僅反映在標志位上。用途:用在比較兩個數(shù)大小又不破壞原操作數(shù)的場合。18§3-38086的指令系統(tǒng)
——算術(shù)運算指令減法指令小結(jié):①對于雙操作數(shù)指令(SUB、SBB、CMP):▲源操作數(shù)可以是寄存器、存儲器或立即數(shù);▲目的操作數(shù)可以是寄存器、存儲器,但不能為立即數(shù);▲兩個操作數(shù)不能同時為存儲器。②對于單操作數(shù)指令(DEC、NEG):▲目的操作數(shù)可以是寄存器、存儲器,但不能為立即數(shù);▲如果是存儲器操作數(shù),還必須說明其類型是字節(jié)還是字。③運算之后,除DEC指令不影響CF標志外,其它均影響OF、SF、ZF、AF、PF和CF標志。④在減法操作后,如果源操作數(shù)大于目的操作數(shù),需要借位時,進位/借位標志CF將被置1。
19§3-38086的指令系統(tǒng)
——算術(shù)運算指令
例
設(shè)AL=10110001B,DL=01001010B,求AL-DL。解:SUBAL,DL
;與加法操作一樣,對結(jié)果的解釋取決于參與運算的數(shù)的性質(zhì),運算過程如下:
二進制減法當成無符號數(shù)當成帶符號數(shù)
10110001177-79(11001111B)-01001010-74-)+7401100111103+103
運算后標志位ZF=0,AF=1,CF=0,SF=0,PF=0,OF=1。討論:▲兩數(shù)為無符號數(shù):表示177與74的差是103。CF=0表示沒有借位,SF和OF無意義。▲兩數(shù)為帶符號數(shù):表示-79-(+74),結(jié)果應(yīng)為-153。但結(jié)果卻為正數(shù)(103),這是由于-153溢出造成的。此時,SF和OF有重要意義。
20§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑹AAS減法的ASCII調(diào)整指令(ASCIIAdjustforSubtraction)
指令格式:AAS
指令功能:將AL寄存器中的運算結(jié)果調(diào)整為正確的非壓縮十進制數(shù)之差,仍保留在AL中。使用前提:用SUB或SBB指令對兩個非壓縮十進制數(shù)或ASCII碼表示的十進制數(shù)作減法,運算結(jié)果已存在AL。
調(diào)整過程:若AL寄存器的低4位>9或AF=1,則:①AL←AL-6,AF置1②將AL寄存器高4位清零③AH←AH-1,CF置1
否則,不需要調(diào)整21§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑺DAS減法的十進制調(diào)整指令(DecimalAdjustforSubtracion)
指令格式:DAS
指令功能:將AL中兩個壓縮BCD數(shù)相減后的結(jié)果調(diào)整為正確的壓縮BCD數(shù)。高4位和低4位分別進行調(diào)整。使用前提:在兩個壓縮十進制數(shù)用SUB或SBB相減后,結(jié)果在AL中。
調(diào)整過程:①如果AL寄存器的低4位>9或AF=1
則:AL←AL-6,AF置1②如果此時AL高半字節(jié)>9或標志位CF=1
則:AL←AL-60H,CF置122§3-38086的指令系統(tǒng)
——算術(shù)運算指令
例
設(shè)AL=BCD56,CL=BCD98,求兩數(shù)之差。解:運算過程如下:SUBAL,CL;01010110…BCD56;-10011000…BCD98DAS;10111110…低4位>9,CF=AF=1;-00000110…減6調(diào)整;10111000…調(diào)整后高半字節(jié)>9
;-01100000…減60H調(diào)整;01011000…BCD58,CF=1
;結(jié)果為:AL=BCD58,CF=1,表示有借位23§3-38086的指令系統(tǒng)
——算術(shù)運算指令
3.乘法指令(Multiply)⑴MUL無符號數(shù)乘法指令(Multiply)
指令格式:MUL源指令功能:把源操作數(shù)和累加器中的數(shù)都當成無符號數(shù),然后將兩個數(shù)相乘,操作數(shù)可以是字節(jié)或字。
▲源操作數(shù)是一個字節(jié):源操作數(shù)與累加器AL中的內(nèi)容相乘,乘積為雙倍長的16位數(shù),高8位送到AH,低8位送AL。即
AX←AL×源。
▲源操作數(shù)是一個字:源操作數(shù)與累加器AX的內(nèi)容相乘,結(jié)果為32位數(shù),高位字放在DX寄存器中,低位字放在AX寄存器中。即
(DX,AX)←
AX×源24§3-38086的指令系統(tǒng)
——算術(shù)運算指令操作數(shù)要求:可以是寄存器、存儲單元,但不能是立即數(shù);源操作數(shù)是存儲單元時,必須在操作數(shù)前加BYTE或WORD說明是字節(jié)還是字。
例
MULDL ;AX←AL×DLMULCX;(DX,AX)←AX×CXMULBYTEPTR[SI];AX←AL×(內(nèi)存中某字節(jié)),B說明字節(jié)乘法
MULWORDPTR[BX];(DX,AX)←AX×(內(nèi)存中某字),W說明字乘法25§3-38086的指令系統(tǒng)
——算術(shù)運算指令注意:▲MUL指令執(zhí)行后影響CF和OF標志。如果結(jié)果的高半部分不為零,表明其內(nèi)容是結(jié)果的有效位,則CF和OF均置1。否則,CF和OF均清0。
據(jù)此可檢測并去除結(jié)果中的無效前導(dǎo)零。▲乘法指令使AF、PF、SF和ZF的狀態(tài)不定。
26§3-38086的指令系統(tǒng)
——算術(shù)運算指令
例試計算FFH×FFH。解:用二進制表示成如下形式:
11111111×111111111111111000000001▲作為無符號數(shù):表示255×255=65025,結(jié)果正確?!鳛閹Х枖?shù):表示(-1)×(-1)=-511,顯然結(jié)果不正確?!肕UL指令作帶符號數(shù)的乘法,會得到錯誤的結(jié)果,必須用IMUL指令,才能使(-1)×(-1)得到正確的結(jié)果0000000000000001。
27§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑵IMUL整數(shù)乘法指令(IntegerMultiply)指令格式:IMUL源指令功能:把源操作數(shù)和累加器中的數(shù)都作為帶符號數(shù),進行相乘。
▲存放結(jié)果的方式與MUL相同:源操作數(shù)為字節(jié):與AL相乘,雙倍長結(jié)果送到AX中;源操作數(shù)為字:與AX相乘,雙倍長結(jié)果送到DX和AX中,最后給乘積賦予正確的符號?!鴮酥疚坏挠绊懀撼朔e的高半部分不是低半部分的符號擴展(不是全0或全1),則高位部分為有效位,表示它是積的一部分,于是置CF=OF=1;結(jié)果的高半部分為全0或全1,表明它僅包含了符號位,那么使CF=OF=0。AF、PF、SF和ZF不定。28§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑶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ù)
29§3-38086的指令系統(tǒng)
——算術(shù)運算指令注意:▲兩個ASCII碼數(shù)相乘之前,先屏蔽掉每個數(shù)字的高半字節(jié),使每個字節(jié)包含一個非壓縮十進制數(shù)(BCD數(shù)),再用MUL指令相乘,乘積放到AL寄存器中,然后用AAM指令進行調(diào)整。▲標志位的影響:影響ZF、SF和PF,但AF、CF和OF無定義。▲8086的指令系統(tǒng)中,十進制乘法運算不允許采用壓縮十進制數(shù),故調(diào)整指令僅此一條。
30§3-38086的指令系統(tǒng)
——算術(shù)運算指令例求兩個非壓縮十進制數(shù)09和06之乘積。
解:MOVAL,09H ;置初值
MOVBL,06HMULBL ;AL
09與06之乘積36HAAM ;調(diào)整得AH=05H(十位),AL=04H(個位)
結(jié)果:AX=0504H,即BCD數(shù)54。
例如果AL和BL中分別存放9和6的ASCII碼,求兩數(shù)之積。解:用以下指令實現(xiàn):
ANDAL,0FH ;屏蔽高半字節(jié)
ANDBL,0FHMULBL ;相乘
AAM ;調(diào)整如要將結(jié)果轉(zhuǎn)換成ASCII碼,可用指令ORAX,3030H實現(xiàn),使AX=3534H。31§3-38086的指令系統(tǒng)
——算術(shù)運算指令
4.除法指令(Division)⑴DIV無符號數(shù)除法指令(Division,unsigned)
指令格式:DIV源指令功能:對兩個無符號二進制數(shù)進行除法操作。
▲源操作數(shù)為字節(jié):16位被除數(shù)必須放在AX中,8位除數(shù)為源操作數(shù)。
AL←AX/源(字節(jié))的商
AH←AX/源(字節(jié))的余數(shù)
若被除數(shù)只有8位,必須把它放在AL中,并將AH清0。32§3-38086的指令系統(tǒng)
——算術(shù)運算指令▲源操作數(shù)為字:32位被除數(shù)在(DX,AX)中,16位除數(shù)作源操作數(shù)。
AX←
(DX,AX)/源(字)的商
DX←
(DX,AX)/源(字)的余數(shù)
若被除數(shù)、除數(shù)都是16位,則將16位被除數(shù)送到AX中,再將DX清0。
注意:●源操作數(shù)可以是寄存器、存儲單元;
●DIV指令執(zhí)行后,所有標志位均無定義。
33§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑵IDIV整數(shù)除法指令(IntegerDivision)
指令格式:IDIV源指令功能:對兩個帶符號二進制數(shù)進行除法操作(也稱為帶符號數(shù)除法)
注意:
▲操作與DIV相同;▲商和余數(shù)都是帶符號數(shù),且規(guī)定余數(shù)的符號和被除數(shù)的相同;▲指令執(zhí)行后,所有標志位均無定義。34§3-38086的指令系統(tǒng)
——算術(shù)運算指令⑶CBW把字節(jié)轉(zhuǎn)換為字指令(ConvertBytetoWord)
指令格式:CBW
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030文化旅游項目開發(fā)與運營管理分析研究報告
- 2025-2030文化品牌行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 國際貿(mào)易合作項目文檔管理方案
- 職場健康飲食講座及推廣活動方案
- 企業(yè)商務(wù)文書寫作標準課程方案
- 小學(xué)軟筆書法教學(xué)活動設(shè)計方案
- 學(xué)生學(xué)業(yè)提升及轉(zhuǎn)差復(fù)習(xí)方案
- 護理健康教育質(zhì)量控制體系構(gòu)建
- 企業(yè)盈虧分析案例及解決方案
- 初中體育跳繩技巧及訓(xùn)練方案
- 2023年個稅工資表
- 勞動者個人職業(yè)健康監(jiān)護檔案
- 2023新青年新機遇新職業(yè)發(fā)展趨勢白皮書-人民數(shù)據(jù)研究院
- 《兩角和與差的正弦、余弦、正切公式》示范公開課教學(xué)PPT課件【高中數(shù)學(xué)人教版】
- 管理學(xué)原理教材-大學(xué)適用
- 變電站一次側(cè)設(shè)備溫度在線監(jiān)測系統(tǒng)設(shè)計
- GB/T 6579-2007實驗室玻璃儀器熱沖擊和熱沖擊強度試驗方法
- GB/T 26389-2011衡器產(chǎn)品型號編制方法
- GB/T 16913.3-1997粉塵物性試驗方法第3部分:堆積密度的測定自然堆積法
- GB/T 12621-2008管法蘭用墊片應(yīng)力松弛試驗方法
- 重慶大學(xué)介紹課件
評論
0/150
提交評論