原创 关于51中的DA指令

2007-6-4 00:54 6034 6 6 分类: MCU/ 嵌入式

        汇编现在基本上不用了,只是在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


上面是十进制递加调整的问题,再引伸一个问题,如果是十进制递减调整呢,该如何写呢.

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条