7个回答
展开全部
首先,如楼上所说,AD指令我也没见过,我估计你是想用DA吧?十进制调整指令。如果我估计得对,那就接着往下看,如果不对,无视我吧,下面是接着对DA指令说的。
如果这里用的是DA指令,那么你上面的相加所用的两个加数都是错的,DA指令前相加的两个数必须也是BCD码,即不大于09H,否则后面的调整语句就是无意义的乱码。
DA指令有可能会出现低4位和高4位进位,高4位进位时,CY=1,你若不进行软件处理,将被直接扔掉,比如相加结果若是123,就只能保存23在A中,前面的1保存在CY中。因为你用错加数(必须为BCD码),所以不会出现你所说的2以上的百位数。
如果这里用的是DA指令,那么你上面的相加所用的两个加数都是错的,DA指令前相加的两个数必须也是BCD码,即不大于09H,否则后面的调整语句就是无意义的乱码。
DA指令有可能会出现低4位和高4位进位,高4位进位时,CY=1,你若不进行软件处理,将被直接扔掉,比如相加结果若是123,就只能保存23在A中,前面的1保存在CY中。因为你用错加数(必须为BCD码),所以不会出现你所说的2以上的百位数。
追问
你好!请问八位单片机用汇编语言如何才能把000H~0FFFH中的任何十六进制数转换成十进制呢?谢谢!
追答
我不太明白你的意思,BCD码表示的本身就是十进制,只不过是用二进制表示而已,它不像十六进制,前后四位可以到1111(15),BCD码只能到1001(9),就相当于十进制的0~9,你说的转换成十进制具体是什么意思呢?计算机只懂二进制码,所以用什么来表示,对机器来说都一样,它最终都是转成二进制来进行运算的。如果你想自己容易看懂,你不一定要用十六进制的,比如#0FFH,你可以直接写成#255啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
你好!请问如何才能把0FFH,11H,或任何十六进制转换成十进制?
追答
十六进制转换成十进制 或者 十进制转换成十六进制 需要转换程序 如:
; / *** *** *** *** *** / 十六进制转换成十进制
; JTYA6 JTYA5 --> PADI3 PADI2
HZD000: MOV PADI2, #00H ; 清 PADI5 PADI4
MOV PADI3, #00H
MOV R3, #10H
HZD005: MOV R0, #JTYA5 ; 源 JTYA6 JTYA5
MOV R2, #02H
HZD006: MOV A, @R0
RLC A
MOV @R0, A
INC R0
DJNZ R2, HZD006
MOV R0, #PADI2 ; 目 PADI3 PADI2
MOV R2, #02H
HZD008: MOV A, @R0
ADDC A, @R0
DA A
MOV @R0, A
INC R0
DJNZ R2, HZD008
DJNZ R3, HZD005
RET
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
AD A;没见过这种指令
相加=255,不是256,所以结果还是在A中
0-255分别对应00-0FFH
#0F0H+#0FH=0FFH
即便是超过了255,则只保存低8位,其它的直接忽略掉
相加=255,不是256,所以结果还是在A中
0-255分别对应00-0FFH
#0F0H+#0FH=0FFH
即便是超过了255,则只保存低8位,其它的直接忽略掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那个AD A 应为 DA A 。 十进制调整指令,可能是手误。
百位数2没了,只是进位位CY 变为1,说明有进位而已。
百位数2没了,只是进位位CY 变为1,说明有进位而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询