请教:51单片机,用汇编语言实现指令DAA的功能?
3个回答
展开全部
DA指令实质上是低四位或者高四位超过9的话加6,然后向上进位,用汇编指令应该很好实现,分别对低四位、高四位进行超过9的比较,如果超过则加6之后进位
追问
能否帮我写写这个程序呢?感激不尽
追答
MOV A,R0 ;R0存储要运算的数据
ANL A,#0FH ;取低四位
CJNE A,#0AH,NEXT_L ;不等于10,跳转
ADD06H: ADD A,#06H
MOV 30H,A
LJMP HIG
NEXT_L: JC NOADDL ;小于10,跳转
LJMP ADD06H
NOADDL: MOV 30H,A
HIG: MOV A,R0
ANL A,#0F0H ;取高四位
ADD A,30H ;加低位进位
ANL A,#0F0H
CJNE A,#0A0H,NEXT_H
ADD60H: ADD A,#60H
MOV 31H,A
LJMP ADDALL
NEXT_H: JC NOADDH
LJMP ADD60H
NOADDH: MOV 31H,A
ADDALL: MOV A,30H
ANL A,#0FH
ADD A,31H
MOV R1,A ;运算结果保存于R1
RET
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用加06H,60H 66H方式,就可以了.
更多追问追答
追问
能把程序写给我吗,谢了!~
追答
就是如果底四位大于9的,就加06h
如果高四位大于9的,就加60h\
如果高低四位都大于9的就加66h
例子:mov a,#0ah;
add a,#06h;
立即数A就为十进制的10;
mov a,#0a0h;
add a,#060h;
立即数A0就为十进制的100;
mov a,#0aah;
add a,#66h;
立即数Aa就为十进制的110;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询