匯編語言AAD,DAA,DAS用法解析
這篇文章主要介紹了匯編語言AAD,DAA,DAS用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
AAD 為下面的除法做準(zhǔn)備 ,把AL 和 AH 兩個單BCD碼組成一個十進(jìn)制數(shù)
1、AAD(調(diào)整除)
5.2該指令是在作除法前用于調(diào)整寄存器AH和AL之值,它是把二個寄存器中單BCD碼組成一個十進(jìn)制數(shù)值,其調(diào)整規(guī)則如下:
AL←AH*10+AL,AH←0
受影響的標(biāo)志位:PF、SF和ZF(AF、CF和OF等都是無定義)
MOV AX, 0502H MOV BL, 10D AAD ;AH=0, AL=52H DIV BL ;AH=2(余數(shù)), AL=5(商)
2、DAA(調(diào)整加十)
該指令是用于調(diào)整AL的值,該值是由指令A(yù)DD或ADC運(yùn)算二個壓縮型BCD碼所得到的結(jié)果。壓縮型BCD碼是一個字節(jié)存放二個BCD碼,低四位和高四位都是一個BCD碼。其調(diào)整規(guī)則如下:
- 如果AL的低四位大于9,或AF=1,那么,AL=AL+06H,并置AF=1;
- 如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;
- 如果以上兩點都不成立,則,清除標(biāo)志位AF和CF。
經(jīng)過調(diào)整后,AL的值仍是壓縮型BCD碼,即:二個壓縮型BCD碼相加,并進(jìn)行調(diào)整后,得到的結(jié)果還是壓縮型BCD碼。
受影響的標(biāo)志位:AF、CF、PF、SF和ZF(OF無定義)
MOV AL, 43H MOV BL, 29H ADD AL, BL ;AL=6CH,其不是壓縮型的BCD碼,因為低四位‘B‘不是BCD碼 DAA ;調(diào)整后,AL=72H,這是壓縮型的BCD碼,也有:43+29=72
3、DAS(調(diào)整減十)
該指令也是用于調(diào)整AL的值,AL是由指令SUB或SBB運(yùn)算二個壓縮型BCD碼所得到的結(jié)果。其調(diào)整規(guī)則如下:
- 如果AL的低四位大于9,或AF=1,那么,AL=AL-06H,并置AF=1;
- 如果AL的高四位大于9,或CF=1,那么,AL=AL-60H,并置CF=1;
- 如果以上兩點都不成立,則,清除標(biāo)志位AF和CF。
經(jīng)過調(diào)整后,AL的值仍是壓縮型BCD碼,即:二個壓縮型BCD碼相減,并進(jìn)行調(diào)整后,得到的結(jié)果還是壓縮型BCD碼。
受影響的標(biāo)志位:AF、CF、PF、SF和ZF(OF無定義)
MOV AL, 43H MOV BL, 29H SUB AL, BL ;AL=1AH,其不是壓縮型的BCD碼,因為低四位‘A‘不是BCD碼 DAS ;調(diào)整后,AL=14H,這是壓縮型的BCD碼,也有:43-29=14
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
匯編語言系列之匯編實現(xiàn)各種碼制的轉(zhuǎn)換(思路詳解)
本文列出了十六進(jìn)制轉(zhuǎn)二進(jìn)制、十進(jìn)制、ASCII碼及大小寫字母轉(zhuǎn)換的代碼,對匯編語言系列之實現(xiàn)各種碼制的轉(zhuǎn)換問題感興趣的朋友跟隨小編一起看看吧2021-11-11
UEFI開發(fā)實戰(zhàn)用戶交互界面基礎(chǔ)說明
這篇文章主要為大家介紹了UEFI開發(fā)實戰(zhàn)用戶交互界面的基礎(chǔ)說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

