汇编 DA A 十进制调整指令
【轉載】小伙伴們求同去《匯編 DA A十進制調整指令》, 一起來圍觀吧 https://blog.csdn.net/m0_58836581/article/details/121525715?utm_source=app&app_version=4.20.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
二進制加法指令不能完全適用BCD碼十進制的加法運算,故應對壓縮的BCD碼的加法結果需要進行有條件的修正。
出錯原因及調整方法
BCD碼(4位二進制編碼)共有十六個編碼,但只用了其中的10個,剩余六個就沒有用到。而這六個沒有用到的編碼為無效編碼。故1位BCD碼加法運算出錯的情況有兩種:
1)相加結果大于9無進位,及已經進入無效編碼區;
2)相加結果有進位,及已經跳過無效編碼區;
無論哪一種出錯情況,都是因為六個無效編碼造成的。
調整方法是把運算結果加6調整,即所謂的十進制調整修正。
修正方法
1)累加器低四位大于9或輔助進位位Ac=1,則進行低四位加6修正。
2)累加器高四位大于9或進位位Cy=1,則進行高四位加6修正。
3)累加器高四位為9,低四位大于9,則高四位和低四位分別加6修正。
整個過程由DA A可自動實現
舉例
(A)=56H,(R5)=67H,把他們看作兩個壓縮的BCD數進行BCD數加法。
執行指令:
ADD A,R5
DA A
0101 0110 (56H)
+) 0110 0111 (67H)
= 1011 1101 高四位和第四位都大于9 故要都加6來對結果修正、
+) 0110 0110
= 1 0010 0011
結果(A)=23H,Cy=1。
56+65=123 結果是正確的
總結
以上是生活随笔為你收集整理的汇编 DA A 十进制调整指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 波兰球之战怎么进入战争?
- 下一篇: 飞行员宋凯飞怎么通过演习进入红细胞