8051单片机作业遇到的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:00:37
已知(A)=08H

HASC:ANL A,#0FH
ADD A,#90H
DA A
ADDC A,#40H
DA A
RET

求 (A)=???
我算到的跟kawenmai一样(A)=38H,但是"0234101"似乎说的对啊,我翻了翻书上面的例题用得着DA的已知条件都有BCD码后缀的...

回复"0234101": "DA指令是可以单独在的"...我对这句话有疑问.
因为我看到书上有句话是"由于调整的条件涉及当前加法运算后所影响的进位标志位C和AC,所以调整指令(DA A)必须紧跟在加法指令之后,调整才有效."

ANL A,#0FH * A=08H
ADD A,#90H
DA A * A=98H
ADDC A,#40H
DA A * A=38H ,CY=1

应该是这样吧?我也是刚查一下,自己算的.不知道对不,希望下面有人跟上~

不要管什么DA,它是一个BCD码运算时的专用指令,对二进制是没用的.你的操作数后缀是H,是16进制的,所以没有十进制调整问题

补充:昨天找书找了好长时间,DA指令是可以单独在的,具体是把A中的数据BCD化,如果前提是A中原来是数是BCD码,DA后会得到正确的结果。如果不是,而你也不想得到一个BCD码,那结果就是错误的。所以如题,你有什么样的条件和需要什么样的结果就决定了上面程序的结果。