這篇文章主要介紹了匯編語言AAD,DAA,DAS用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
AAD 為下面的除法做準備 ,把AL 和 AH 兩個單BCD碼組成一個十進制數
1、AAD(調整除)
5.2該指令是在作除法前用于調整寄存器AH和AL之值,它是把二個寄存器中單BCD碼組成一個十進制數值,其調整規則如下:
AL←AH*10+AL,AH←0
受影響的標志位:PF、SF和ZF(AF、CF和OF等都是無定義)
MOV AX, 0502H
MOV BL, 10D
AAD ;AH=0, AL=52H
DIV BL ;AH=2(余數), AL=5(商)
2、DAA(調整加十)
該指令是用于調整AL的值,該值是由指令ADD或ADC運算二個壓縮型BCD碼所得到的結果。壓縮型BCD碼是一個字節存放二個BCD碼,低四位和高四位都是一個BCD碼。其調整規則如下:
- 如果AL的低四位大于9,或AF=1,那么,AL=AL+06H,并置AF=1;
- 如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;
- 如果以上兩點都不成立,則,清除標志位AF和CF。
經過調整后,AL的值仍是壓縮型BCD碼,即:二個壓縮型BCD碼相加,并進行調整后,得到的結果還是壓縮型BCD碼。
受影響的標志位:AF、CF、PF、SF和ZF(OF無定義)
MOV AL, 43H
MOV BL, 29H
ADD AL, BL ;AL=6CH,其不是壓縮型的BCD碼,因為低四位‘B‘不是BCD碼
DAA ;調整后,AL=72H,這是壓縮型的BCD碼,也有:43+29=72
3、DAS(調整減十)
該指令也是用于調整AL的值,AL是由指令SUB或SBB運算二個壓縮型BCD碼所得到的結果。其調整規則如下:
- 如果AL的低四位大于9,或AF=1,那么,AL=AL-06H,并置AF=1;
- 如果AL的高四位大于9,或CF=1,那么,AL=AL-60H,并置CF=1;
- 如果以上兩點都不成立,則,清除標志位AF和CF。
經過調整后,AL的值仍是壓縮型BCD碼,即:二個壓縮型BCD碼相減,并進行調整后,得到的結果還是壓縮型BCD碼。
受影響的標志位:AF、CF、PF、SF和ZF(OF無定義)
MOV AL, 43H
MOV BL, 29H
SUB AL, BL ;AL=1AH,其不是壓縮型的BCD碼,因為低四位‘A‘不是BCD碼
DAS ;調整后,AL=14H,這是壓縮型的BCD碼,也有:43-29=14
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持html5模板網。
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!