匯編語言AAD,DAA,DAS用法解析
這篇文章主要介紹了匯編語言AAD,DAA,DAS用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
AAD 為下面的除法做準備 ,把AL 和 AH 兩個單BCD碼組成一個十進制數(shù)
1、AAD(調整除)
5.2該指令是在作除法前用于調整寄存器AH和AL之值,它是把二個寄存器中單BCD碼組成一個十進制數(shù)值,其調整規(guī)則如下:
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(余數(shù)), AL=5(商)
2、DAA(調整加十)
該指令是用于調整AL的值,該值是由指令ADD或ADC運算二個壓縮型BCD碼所得到的結果。壓縮型BCD碼是一個字節(jié)存放二個BCD碼,低四位和高四位都是一個BCD碼。其調整規(guī)則如下:
- 如果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碼所得到的結果。其調整規(guī)則如下:
- 如果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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
UEFI開發(fā)實戰(zhàn)用戶交互界面使用說明UNI文件
這篇文章主要為大家介紹了UEFI開發(fā)實戰(zhàn)用戶交互界面使用說明UNI文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06匯編語言AND指令實現(xiàn)對兩個操作數(shù)進行邏輯(按位)與操作
這篇文章主要介紹了匯編語言AND指令實現(xiàn)對兩個操作數(shù)進行邏輯(按位)與操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01從匯編代碼開始全面解析synchronized還原最真實的偏向鎖
這篇文章主要為大家介紹了從模板解釋器匯編源碼開始分析還原最真實的偏向鎖實現(xiàn),解釋monitorenter字節(jié)碼命令的方法開始,從匯編代碼開始全面解析synchronized2022-02-02