单片机中十进制调整的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 06:53:30
DA A 有这样一个法则:① 若A3~A0>9或AC=1,则(A) + 06H → A

② 若A7~A4>9或Cy=1,则(A) + 60H → A
下面请根据这个法则详细解释下:M0V A,#1FH ADD A,#09H 因为它会形成AC,变成28H+06H,对于这个可以又形成AC或是字母形式,所以不知道怎么处理,请高手解读。。
刚才后面少了个 DA A 问结果等于多少就是,我确认下。。谢谢了

M0V A,#1FH ;1FH
ADD A,#09H ;28H
DA A ;+06H = 2EH

程序的最后结果并不是BCD码,原因在于原始数据1FH就不是BCD码。

DA A 的用法你可以这么理解 例如当A中为0BH的时候 语句执行后 你可以看成是转成了十进制数11 但后面要加H 即A=11H 即高4位为BCD的1 低四位为BCD的1 ,再例如
当A中为12H的时候 语句执行后 你可以看成是转成了十进制数18 但后面要加H 即A=18H 即高4位为BCD的1 低四位为BCD的8
懂否

在下面直接加一句DA A就好了啊,他会自动的进行修正

DA A 语句之前的加法指令中的两个数都要是压缩的BCD码
“若A7~A4>9或Cy=1,则(A) + 60H → A ”
是错的吧 加的应该还是06H