pentiun指令系統(tǒng)之算術(shù)運算指令.ppt
-
資源ID:6399161
資源大?。?span id="37qoe8a" class="font-tahoma">540.81KB
全文頁數(shù):60頁
- 資源格式: PPT
下載積分:14.9積分
快捷下載
會員登錄下載
微信登錄下載
微信掃一掃登錄
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。
|
pentiun指令系統(tǒng)之算術(shù)運算指令.ppt
內(nèi)容 提供加 減 乘 除 轉(zhuǎn)換五種基本算術(shù)操作 利用十進制調(diào)整指令和ASCII調(diào)整指令對BCD碼表示的十進制數(shù)進行算術(shù)運算 對帶符號數(shù)與無符號數(shù)進行乘 除運算 一 加法指令 Addition 二 減法指令 Subtraction 三 乘法指令 Multiplication 四 除法指令 Division 五 類型轉(zhuǎn)換指令 TypeTrans 六 BCD碼運算指令 二 算術(shù)運算指令 Arithmetic 特點 大部分都影響標(biāo)志位 不同指令影響不同 1 加 減法指令影響SF ZF AF PF CF OF 2 加1和減1指令不影響CF 3 乘法指令影響CF OF 4 除法指令使大部分標(biāo)志位的狀態(tài)不確定 5 對BCD碼調(diào)整指令對標(biāo)志位的影響不同 源操作數(shù)可以是立即數(shù) 通用寄存器或者是存儲器中的數(shù) 目的操作數(shù)可為通用寄存器或存儲器中的數(shù) 都可以用于字節(jié) 字 雙字的運算 8位二進制數(shù)可以表示十進制數(shù)的范圍 8位無符號十進制數(shù)的范圍 0 2558位帶符號十進制數(shù)的范圍 128 12716位二進制數(shù)可以表示十進制數(shù)的范圍 16位無符號十進制數(shù)的范圍 0 6553516位帶符號十進制數(shù)的范圍 32768 32767字長為n位的帶符號數(shù) 補碼能表示范圍為 2n 1 2n 1 1如果運算結(jié)果超出該范圍 叫補碼溢出 簡稱溢出 算術(shù)運算指令涉及的一些問題 以8位二進制數(shù)為例分析一下數(shù)的溢出與進位情況 下面分4種情況加以討論 1 帶符號數(shù)和無符號數(shù)都不溢出 2 無符號數(shù)溢出 3 帶符號數(shù)溢出 4 帶符號數(shù)和無符號數(shù)都溢出 1 帶符號數(shù)和無符號數(shù)都不溢出 二進制數(shù) 看作無符號數(shù) 看作帶符號數(shù) 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1 4 11 15 4 11 15 相 加 標(biāo)志 CF 0 OF 0 CF 0 OF 0 溢出 不溢出 不溢出 同符號數(shù)相加 結(jié)果符號與其相同 2 無符號數(shù)溢出 二進制數(shù) 看作無符號數(shù) 看作帶符號數(shù) 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 0 7 251 258 7 5 2 相 加 標(biāo)志 CF 1 OF 0 CF 1 OF 0 溢出 溢出 若考慮進位所代表的數(shù)值 結(jié)果正確 不溢出 異號數(shù)相加 不可能有溢出 CF 1 3 帶符號數(shù)溢出 二進制數(shù) 看作無符號數(shù) 看作帶符號數(shù) 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 9 124 133 9 124 133 相 加 標(biāo)志 CF 0 OF 1 CF 0 溢出 不溢出 溢出 正正相加 結(jié)果為負(fù) 結(jié)果錯 OF 1 4 帶符號數(shù)和無符號數(shù)都溢出 二進制數(shù) 看作無符號數(shù) 看作帶符號數(shù) 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 0 135 245 380 121 11 132 相 加 標(biāo)志 CF 1 OF 1 CF 1 OF 1 溢出 溢出 若考慮進位CF所代表的數(shù)值 結(jié)果正確 溢出 負(fù)負(fù)相加 結(jié)果為正 結(jié)果錯 CF 1 結(jié)論 1 帶符號數(shù)相加溢出根據(jù)OF判斷帶符號數(shù)產(chǎn)生溢出 OF 1同符號數(shù)相加 結(jié)果符號與其相反 產(chǎn)生溢出 結(jié)果是錯誤的 OF 0沒有產(chǎn)生溢出 結(jié)果是正確的 2 無符號數(shù)相加溢出根據(jù)CF判斷無符號數(shù)產(chǎn)生溢出 CF 1無符號數(shù)相加產(chǎn)生溢出 但考慮進位所代表的數(shù)值后 結(jié)果并沒有錯 一 加法指令 Arithmetic 1 ADD Addition 加法指令2 ADC Addwithcarry 帶進位加法指令3 XADD ExchangeAdd 字節(jié)交換加法指令4 INC Incrementby1 加1指令 1 ADD Addition 加法指令指令格式 ADDdest src dest dest src Src 立即數(shù) 寄存器 存儲器 dest 寄存器 存儲器 例 ADDCX 1000H 寄存器 立即數(shù)ADDDX SI 寄存器 寄存器ADD BX DI AX 寄存器 存儲器ADDEAX BX 2000H 存儲器 寄存器ADDBYTEPTR DI 30H 存儲器 立即數(shù) 特點 可以進行8位 16位的無符號數(shù)和帶符號數(shù)的加法運算 源操作數(shù)和目標(biāo)操作數(shù)不能同時為存儲器 不能為段寄存器 指令影響標(biāo)志位的情況 OF 1 8位帶符號數(shù)相加 和超出范圍 128 127 16位帶符號數(shù)相加 和超出范圍 32768 32767 CF 1 8位無符號數(shù)相加 和超過255 16位無符號數(shù)相加 和超過65535 其他條件標(biāo)志 SF AF PF ZF 根據(jù)定義設(shè)定 例MOVAL 7EH AL 7EHMOVBL 5BH BL 5BHADDAL BL AL 7EH 5BH D9H影響標(biāo)志位的情況 SF 1 結(jié)果最高位 1ZF 0 結(jié)果不等于0AF 1 D3位向D4有進位PF 0 1 的個數(shù)為奇數(shù)CF 0 無進位OF 1 和超過 127 兩個正數(shù)相加 結(jié)果為負(fù) 反之亦是 2 ADC Addwithcarry 帶進位加法指令格式 ADCdest src dest dest src CFCF 進位標(biāo)志CF的現(xiàn)行值 上條指令CF值 特點 與ADD同 用途 主要用于多字節(jié)運算中 類型舉例 ADCCX 300 寄存器 立即數(shù) CFADCAL BL 寄存器 寄存器 CFADCDX COUNT SI 寄存器 存儲器 CFADCBLOCK DI BX 存儲器 寄存器 CFADCBYTEPTRMEM 6 存儲器 立即數(shù) CF 用途舉例 計算兩個多字節(jié)數(shù)相加3B74AC60F8H 20D59E36C1H 兩個多字節(jié)數(shù)存放在 DATA1 DATA2的開始單元 流程圖 多字節(jié)數(shù)內(nèi)存存放 程序 MOVCX 5MOVSI 0 清SICLC 清CFLOOPER MOVAL SI DATA2 ADC SI DATA1 ALINCSI SI 1 SI DECCX CX 1 CX JNZLOOPER CX 0轉(zhuǎn)HLT 停機 3 XADD ExchangeAdd 字節(jié)交換加法指令格式 XADDdest src B W DW dest dest src dest 寄存器 存儲器 不能是段寄存器 功能 將目的操作數(shù)送源操作數(shù) 相加的結(jié)果送目的操作數(shù)注 XADD指令的源操作數(shù)必須為寄存器 目的操作數(shù)可為寄存器或存儲器XADDAX BXXADD 1000H EAX標(biāo)志位影響情況 影響SF ZF AF PF OF 不影響CF 4 INC Incrementby1 加1指令格式 INCdest B W DW dest dest 1dest 寄存器 存儲器 不能是段寄存器 功能 對指定的目標(biāo)操作數(shù) 1 操作數(shù)單元 用途 用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù) 標(biāo)志位影響情況 影響SF ZF AF PF OF 不影響CF 操作數(shù)類型 可以是寄存器 存儲器 不能是段寄存器 例 INCDL 8位寄存器 1INCSI 16位寄存器 1INCBYTEPTR BX SI 存儲器 1 字節(jié)操作 INCWORDPTR DI 存儲器 1 字操作 INCDS 錯 二 減法指令 Subtraction 1 SUB Subtraction 減法指令2 SBB Subtractionwithborrow 帶進位減法指令3 DEC Decrementby1 減1指令4 NEG Negate 求補指令5 CMP Compare 比較指令6 CMPXCHG Compare Exchange 7 CMPXCHG8B Compare Exchange8byte 1 SUB Subtraction 減法指令格式 SUBdest src dest dest src Src 立即數(shù) 寄存器 存儲器 Dest 寄存器 存儲器 例 SUBAL 37H 寄存器 立即數(shù)SUBEBX EDX 寄存器 寄存器SUBCX VAR1 寄存器 存儲器SUBARRAY SI AX 存儲器 寄存器SUBWORDPTRALPHA BX DI 512H 存儲器減立即數(shù)這種指令影響標(biāo)志位 AF CF OF PF SF ZF標(biāo)志 2 SBB Subtractionwithborrow 帶進位減法指令格式 SBBdest src dest dest src CFCF 進位標(biāo)志CF的現(xiàn)行值 上條指令CF值 Src 立即數(shù) 寄存器 存儲器 dest 寄存器 存儲器 指令影響標(biāo)志位 B W數(shù)運算情況同SBB用途 用于多字節(jié)數(shù)相減例 SBBBX 100H 寄存器 立即數(shù) CFSBBECX EDX 寄存器 寄存器 CFSBBAL SI DATA1 寄存器 存儲器 CFSBB BP DISP BL 存儲器 寄存器 CFSBBBYTEPTR SI 6 96H 存儲器 立即數(shù) CF 多字節(jié)數(shù)的加減綜合舉例例 x y z均為32位數(shù) 分別存放在地址為X X 2 Y Y 2 Z Z 2的存儲單元中 用指令序列實現(xiàn)w x y 24 z 結(jié)果放在W W 2單元中 MOVAX XMOVDX X 2ADDAX YADCDX Y 2 x yADDAX 24ADCDX 0 x y 24SUBAX ZSBBDX Z 2 x y 24 zMOVW AXMOVW 2 DX 結(jié)果存入W W 2單元說明 低16位加減用不帶進位的指令 高16位的加減用帶進位的指令 3 DEC Decrementby1 減1指令格式 DECdest B W DW dest dest 1dest 寄存器 存儲器 不能是段寄存器 功能 對指定的目標(biāo)操作數(shù) 1 操作數(shù)單元 用途 用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù) 標(biāo)志位影響情況 影響SF ZF AF PF OF 不影響CF DEC用途舉例 MOVCX 0FFFFHCYC DECCXJNZCYCHLT 用于延時時間 4 NEG Negate 求補指令格式 NEGdest B W DW dest 0 dest dest 寄存器 存儲器 操作 把操作數(shù)按位求反后末位 1 dest 0FFFFH dest 1影響標(biāo)志 AF CF OF PF SF ZF CF 操作數(shù)為0時求補 CF 0 一般使CF 1 OF 對 128或 32768求補 OF 1 否則OF 0 應(yīng)用舉例 求絕對值在內(nèi)存中 從AREA1開始存放100個帶符號數(shù) 求各數(shù)的絕對值 并存于AREA2開始的單元 流程圖 程序 LEASI AREA1LEADI AREA2MOVCX 100CHECK MOVAL SI ORAL AL AL 內(nèi)容不變 置標(biāo)志JNSNEXT SF 0轉(zhuǎn)NEXTNEGAL 負(fù)數(shù) 求其正數(shù)的補碼NEXT MOV DI AL 送目標(biāo)INCSIINCDIDECCXJNZCHECKHLT 5 CMP Compare 比較指令格式 CMPdest src B W dest src 結(jié)果不送 但影響標(biāo)志位 影響標(biāo)志 AF CF OF PF SF ZF src 立即數(shù) 寄存器 存儲器 dest 寄存器 存儲器 例 CMPAL 0AH 寄存器與立即數(shù)比較CMPECX EDI 寄存器與寄存器比較CMPAX AREA1 寄存器與存儲器比較CMP BX 5 ESI 存儲器與寄存器比較CMPWORDPTRGAMMA 100H 存儲器與立即數(shù)比較 用途 用比較指令來比較兩個數(shù)之間的關(guān)系 兩者是否相等 兩個數(shù)中哪個大 1 根據(jù)ZF標(biāo)志 判斷兩者是否相等 2 根據(jù)CF標(biāo)志 判斷兩個無符號數(shù)的大小 3 用SF OF標(biāo)志 判斷二個帶符號數(shù)的大小 1 根據(jù)ZF標(biāo)志 可判斷兩者是否相等例 CMPAX BXZF 1 結(jié)果為0 兩者相等ZF 0 結(jié)果不為0 兩者不相等 2 根據(jù)CF標(biāo)志 判斷兩個無符號數(shù)的大小例 比較AX BX寄存器 將大數(shù) AX CMPAX BXJNCNEXT CF 0轉(zhuǎn)NEXTXCHGAX BXNEXT 結(jié)論 CF 0 AX BX CF 1 AX BX 設(shè) 被比較二個帶符號數(shù)分別為 A B分四種情況討論 A 0 B 0 A0 B0 3 用SF OF標(biāo)志 判斷二個帶符號數(shù)的大小 四種情況討論 操作數(shù)以8位為例 分析以上四種情況得出如下結(jié)論 OF 0時 SF 0 則 A BSF OF 0SF 1 則 ABSF OF 0SF 0 則 ABSF OF 1 則A B 帶符號數(shù)找最大值若自BLOCK開始的內(nèi)存緩沖區(qū)中 有100個帶符號數(shù) 找出最大值 并存放到MAX單元中 CMP指令應(yīng)用舉例 比較指令在使用時 一般在其后緊跟一條條件轉(zhuǎn)移指令 根據(jù)比較結(jié)果決定轉(zhuǎn)向 思路 第一個數(shù)取出 AX 取出第二個數(shù) 第二個字單元內(nèi)容 與 AX 比較 AX 第二個數(shù) 不做交換 否則 第二個字單元內(nèi)容 AX 再取第三個數(shù) 經(jīng)過99次比較 在 AX 中得到最大數(shù) 編程 MOVBX OFFSETBLOCKMOVAX BX INCBXINCBXMOVCX 99AGAIN CMPAX BX JGNEXT 如ZF 0且SF OF 則轉(zhuǎn)NEXTMOVAX BX NEXT INCBXINCBXDECCXJNEAGAINMOVMAX AX MAX單元存放最大值 小結(jié) 根據(jù)標(biāo)志位來判斷比較的結(jié)果 1 根據(jù)ZF判斷兩個數(shù)是否相等 若ZF 1 則兩數(shù)相等 2 若兩個數(shù)不相等 則分兩種情況考慮 比較的是兩個無符號數(shù)若CF 0 則被減數(shù) 減數(shù) 若CF 1 則被減數(shù) 減數(shù) 比較的是兩個有符號數(shù)若OF SF 0 則被減數(shù) 減數(shù) 若OF SF 1 則被減數(shù) 減數(shù) 6 比較并交換CMPXCHG Compare Exchange 指令 格式 CMPdest src B W DW dest src 影響標(biāo)志 ZF 功能 將目的操作數(shù)和累加器中的數(shù)相比較ZF 1 源操作數(shù)送目的操作數(shù) ZF 0 目的操作數(shù)送累加器 例 CMPXCHG 1000H BL 7 比較并交換CMPXCHG8B Compare Exchange8B 指令 格式 CMPXCHG8Bdest 功能 將EDX EAX中的8個字節(jié)與存儲器中的8個字節(jié)比較 如相等 則ZF 1 并將ECX EBX中的8個字節(jié)數(shù)據(jù)送目的操作數(shù)處 ZF 0 將目的操作數(shù)送EDX EAX 例 CMPXCHG 1000H BL 進行乘法時 8位 8位 16位乘積16位 16位 32位乘積 1 無符號數(shù)的乘法指令MUL MEM REG 格式 MULsrc操作 字節(jié)操作數(shù) AX AL src 字操作數(shù) DX AX AX src 雙字操作數(shù) EDX EAX EAX src 注意 一個操作數(shù)隱含在AL或AX或EAX中指令例子 MULBL AL BL 乘積在AX中MULCX AX CX 乘積在DX AX中MULDWORDPTR BX 三 乘法指令MUL IMUL Multiplication 格式與MUL指令類似 只是要求兩操作數(shù)均為有符號數(shù) 指令例子 IMULBL AX AL BL IMULWORDPTR SI DX AX AX SI 1 SI 2 有符號數(shù)乘法指令I(lǐng)MUL 注意 MUL IMUL指令中 AL AX 為隱含的乘數(shù)寄存器 AX DX AX 為隱含的乘積寄存器 除CF和OF外 對其它標(biāo)志位無定義 四 除法指令DIV IDIV Division 進行除法時 16位 8位 8位商32位 16位 16位商64位 32位 32位商對被除數(shù) 商及余數(shù)存放有如下規(guī)定 被除數(shù)商余數(shù)字節(jié)除法AXALAH字除法DX AXAXDX雙字除法EDX EAXEAXEDX 格式 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)生一個類型0的內(nèi)部中斷 1 無符號數(shù)除法指令DIV 2 有符號數(shù)除法指令I(lǐng)DIV 格式 IDIVsrc操作與DIV類似 商及余數(shù)均為有符號數(shù) 且余數(shù)符號總是與被除數(shù)符號相同 注意 對于DIV IDIV指令A(yù)X DX AX 為隱含的被除數(shù)寄存器 AL AX 為隱含的商寄存器 AH DX 為隱含的余數(shù)寄存器 src不能為立即數(shù) 對所有條件標(biāo)志位均無定義 除法運算要求被除數(shù)字長是除數(shù)字長的兩倍 若不滿足則需對被除數(shù)進行擴展 否則產(chǎn)生錯誤 對于無符號數(shù)除法擴展 只需將AH或DX清零即可 對有符號數(shù)而言 則是符號位的擴展 可使用符號擴展指令CBW CWD CWDE CDQ 關(guān)于除法操作中的字長擴展問題 例 寫出34H 25H的程序段 MOVAL 34HMOVBL 25HCBW AL的符號擴展到AHIDIVBL 0034H 25H 結(jié)果為 AH 0FH AL 01H 五 BCD碼運算的十進制調(diào)整指令 專用于對BCD碼運算的結(jié)果進行調(diào)整包括 DAA AAA DAS AAS AAM AAD均為隱含尋址 隱含的操作數(shù)為AL和AH為何要對BCD碼的運算結(jié)果進行調(diào)整 BCD碼本質(zhì)上是十進制數(shù) 即應(yīng)遵循逢十進一的規(guī)則 而計算機是按二進制 十六進制 進行運算 并未按十進制規(guī)則進行運算 調(diào)整原理 先看一個例子例1 000010008 00000101 50000110113結(jié)果為0DH 而在BCD碼中 只允許0 9這10個數(shù)字出現(xiàn) 0DH不代表任何BCD碼 為什么會出現(xiàn)這種情況呢 原因在于BCD碼是逢十進一 但計算機是逢十六進一 因此 應(yīng)在個位補上6 促其產(chǎn)生進位 對上例的結(jié)果進行加6調(diào)整 00001101 0000011000010011 13 例2000010008 00001001 900010001 1117原因在于計算機在運算過程中 如遇到低4位往高4位產(chǎn)生進位時 此時AF 1 是按逢十六進一的規(guī)則 但BCD碼要求逢十進一 因此只要產(chǎn)生進位 個位就會暗中丟失一個6 這就要進行加6調(diào)正 對上例的結(jié)果進行加6調(diào)整 00010001 0000011000010111 17 總的調(diào)整原理是 凡遇到某4位二進制碼對應(yīng)的BCD碼大于9時 則加六進行調(diào)整 凡是低4位往高4位產(chǎn)生了進位時 則加6進行調(diào)整 1 壓縮BCD碼加法調(diào)整DAA 指令操作 調(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指令之后 1 加法的十進制調(diào)整指令 兩個壓縮BCD碼相加結(jié)果在AL中 通過DAA調(diào)整得到一個正確的壓縮BCD碼 例4 0100100048HMOVAL 48H 0111010074HMOVBL 74H10111100BCHADDAL BL 0110011066HDAA100100010122H 進位 進位 執(zhí)行ADD后 AL BCH 高4位低4位均大于9 故DAA指令執(zhí)行加66H調(diào)整 最后結(jié)果為 AL 22H CF 1 AF 1 本指令對在AL中的由兩個未組合的BCD碼相加后的結(jié)果進行調(diào)整 得到一個正確的未組合的BCD碼 AAA指令只影響AF和CF 其余標(biāo)志無定義 AAA指令應(yīng)緊跟在ADD或ADC指令之后 AAA指令的操作如下 如果AL的低4位 9 AF 1 則 AL AL 6 AH AH 1 AF 1 AL AL 0FH CF AF否則AL AL 0FH 2 非壓縮BCD碼加法調(diào)整AAA 假定二數(shù)在內(nèi)存中均是低位在前 高位在后 另留出5個單元存放相加的結(jié)果 內(nèi)存中數(shù)據(jù)存放形式見下頁圖 例3 有兩個多位十進制數(shù)2658和3619 以非壓縮的BCD碼形式存放在內(nèi)存中 求二者之和 即2658 3619 06H 02H 09H 01H STRING1 STRING2 08H 05H 06H 03H 被加數(shù) 加數(shù) 數(shù)據(jù)段 8 5 6 2 9 1 6 3 SUM 結(jié)果 程序段為 LEASI STRING1 STRING1偏移地址送SILEADI STRING2 STRING2偏移地址送DILEABX SUM SUM偏移地址送BXMOVCX 4 循環(huán)4次CLC 清進位標(biāo)志AGAIN MOVAL SI ADCAL DI 帶進位加AAA 未壓縮BCD碼調(diào)正MOV BX AL 結(jié)果存入SUMINCSI 調(diào)整指針I(yè)NCDIINCBXDECCX 循環(huán)計數(shù)器減1JNZAGAIN 若未處理完 則轉(zhuǎn)AGAIN 1 壓縮BCD碼減法的十進制調(diào)正指令DAS對AL中由兩個壓縮BCD碼相減的結(jié)果進行調(diào)整 調(diào)整操作為 若AL的低4位 9 AF 1 則 AL AL 6 且AF 1若AL的高4位 9 CF 1 則 AL AL 60H 且CF 1DAS對OF無定義 但影響其余標(biāo)志位 DAS指令要求跟在減法指令之后 2 減法的十進制調(diào)整指令 2 非壓縮BCD碼減法的十進制調(diào)正指令A(yù)AS對AL中由兩個非壓縮的BCD碼相減的結(jié)果進行調(diào)整 調(diào)整操作為 若AL的低4位 9或AF 1 則 AL AL 6 AH AH 1 AF 1 AL AL 0FH CF AF否則 AL AL 0FH 3 乘法的十進制調(diào)正指令A(yù)AM對AX中由兩個非壓縮BCD碼相乘的結(jié)果進行調(diào)整 隱含的操作寄存器為AL和AH AAM跟在MUL指令之后使用 影響標(biāo)志位PF SF ZF 其它無定義 例5 按十進制乘法計算7 8 程序段如下 MOVAL 07H AL 07HMOVCL 08H CL 08HMULCL AX 0038HAAM AH 05H AL 06H所得結(jié)果為非壓縮的BCD碼 4 除法的十進制調(diào)正指令A(yù)AD 對非壓縮BCD除法運算進行調(diào)整 調(diào)整操作為 先對被除數(shù)和除數(shù)進行調(diào)整 再運算 AL AH 0AH AL AH 0隱含的操作寄存器為AH AL AAD要在DIV指令之前使用 影響標(biāo)志位PF SF ZF 其它無定義 例6 按十進制乘法計算55 7 程序段如下 MOVAX 0505H AX 55BCDMOVCL 07H CL 7AAD AX 0037HDIVCL AH 6 AL 7所得結(jié)果為非壓縮的BCD碼 商7余6