汇编现在基本上不用了,只是在C反汇编的时候阅读,而DA在使用中就更少了.
重新翻资料看了一遍!
使用格式: DA A 单周期指令,机器码为0D4H.十进制调整;
当A_bit3----Abit0>9 或者AC=1 时,低4位加6既A_bit3----Abit0+6;
当A_bit7----Abit4>9 或者C=1 时,高4位加6既A_bit7----Abit4+6;
两段代码的区别:
INC A
DA A
===============
ADD A,#01H
DA A
===============
这两段都是BCD码递加1,但是实际使用中应该注意一个问题,就是在DA A之前,AC和C两个标志位的状态.
INC A递加1是对AC和C没有影响的,也就说AC和C的状态取决于INC A之前的状态,如果在INC 之前AC=1或者C=1的,DA A也会在不到9之前就进行加6了.
ADD A,#01H同样也是递加1,但是ADD指令操作时会根据3和7位是否有进位,进行置位或者复位.所以DA A时是正确的.
那第一段应该这么写,才能保证正确
CLR AC
CLR C
INC A
DA A
上面是十进制递加调整的问题,再引伸一个问题,如果是十进制递减调整呢,该如何写呢.
文章评论(0条评论)
登录后参与讨论