请教:51单片机,用汇编语言实现指令DAA的功能?

 我来答
lycdl
高粉答主

2013-06-03 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4935万
展开全部
DA A指令,是专门用于BCD码加法计算调整的,例如,计算十进制数26+17,用指令:
MOV A ,#26H
ADD A ,#17H
这样计算的结果是3DH,这不是十进制数,在加法指令后加上DA A,则进行十进制数调整,调整后的结果就是43了。
追问
谢谢你^O^!
顺手看看
2013-06-03 · TA获得超过1228个赞
知道小有建树答主
回答量:279
采纳率:100%
帮助的人:92.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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czpsys
2013-06-04 · TA获得超过200个赞
知道小有建树答主
回答量:430
采纳率:0%
帮助的人:160万
展开全部
用加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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式