原创 DA调整

2007-10-11 12:01 3875 10 11 分类: MCU/ 嵌入式

请教DA 的用法

来源:21ic 作者:wxq22 栏目:新手园地
请教DA 的用法
哪位大哥能给我讲解以下DA这个十进制调整指令的用法?  
都加6是什么意思?


1楼:>>参与讨论
maychang


Re:
十进制调整用于BCD码加法。两个压缩BCD数相加,先按照二进制相加,然后用十进制调整指令,该指令检查结果是否正确,如错误则进行调整。
例如,55H与66H相加,按照二进制是BBH,没有进位。但按照十进制则应该是21H,有进位。
MOV     A,#55H
ADD     A,#66H
结果是BBH,C清零
MOV     A,#55H
ADD     A,#66H
DA      A
结果是21H,C置位



2楼:>>参与讨论
wxq22


还是有点问题
1-前面为什么要清0
2-后面21H是怎么来的,能否再说明一下.
因为我看的书上把这个DA的用法省略掉了,请指教.THANK YOU VERY MUCH!


3楼:>>参与讨论
wxq22


BCD码的范围?
BCD码的范围是0-F吗?


4楼:>>参与讨论
twz8858877


DA指令
一般用于加法以后做十进制调整,具体操作是累加器低四位大于9或辅助进位为1时,低四位加6;高四位大于9或进位位为1时高四位加6。在maychang举的例子中加法以后累加器中高四位与低四位均大于9,所以调整时高低四位同时加6,结果为21H,C置位。
BCD码范围为0~9,称为二-十进制数,即用二进制来表示的十进制数,DA指令中的加6正是这两种数制范围不同而得来的。(单片机中的运算指令都是基于二进制的)

 


如果随意对一个累加器A中的二进制数据进行“二进制转十进制”调整是没有任何实际意义的!


DA调整的对象是ADD或ADDC以后的结果,而且是BCD码相加以后才能够加以调整,否则没有实际意义!


比如,现在我想执行12D+39D也就是两个十进制数相加这样一个加法(有时候程序处理的需要,数据在单片机中是以BCD码的形式存储的,也就是12H和39H(十六进制),但我们可以人为将它们看为12D和39D(十进制),而且还希望相加以后的结果为51H,也就是说符合十进制运算规则12+39=51,而不是4BH的结果),但这样的十进制加法运算在单片机中是不能够直接实现的。因为单片机只能够执行二进制加法指令,也就是所有的运算都按照二进制中的规则进行!


于是就出现了DA调整指令!


现在12H+39H,将12H放于A中,执行 ADD A,#39H指令,则结果为4BH,这不是我们希望的51H的数据形式!!这时执行DA A 指令后,就会将A中的数据调整为51H(具体调整过程和原理你可以详细看书,如果单片机书中讲的不详细,那么微机原理中一定说的非常详细),而我们按照BCD码规则就将其看为51D,符合我们的要求!


也就是说加数和被加数都是BCD码的形式,最大也只可能是99H,也就是我们十进制数中的99,只有这样才会有实际的意义!所以楼主所说的当A=# 9AH的时候的情况是不会存在的,严格的说是没有意义的!


而且DA A指令只用于十进制BCD码加法指令以后,否则是没有实际意义的!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1335339 2009-12-1 12:22

支持

huli184_389376486 2008-7-4 10:54

顶,支持一下!

用户1099353 2008-5-29 19:23

支持一下

用户479881 2008-5-21 17:22

请问一下你这几个流水灯的实验,用的晶振是多少MHZ的?

用户479881 2008-5-21 17:21

谢谢博主! 请问一下你这几个流水灯的实验,用的晶振是多少MHZ的?

用户142361 2008-4-22 11:14

太感谢了。

用户34281 2008-1-20 19:34

gaoshoua xiele
相关推荐阅读
用户41648 2008-11-13 09:16
步进电机。。(转载)
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算...
用户41648 2008-07-22 14:17
转载 3V与5V混合系统中逻辑器接口问题
3V与5V混合系统中逻辑器接口问题  3V与5V混合系统中逻辑器接口问题1 引言近年来,随着便携式数字电子产品棗笔记本计算机、数字式移动电话、寻呼机、手持式测试仪表等的迅速发展,要求使用体积小、功耗低...
用户41648 2008-07-03 15:16
GB ma
GB码 GB 即"国标"的汉语拼音缩写,为中华人民共和国国家标准的意思. 国标编码就是中华人民共和国信息交换汉字编码标准(GB2312-80), 在此标准中制定了每一个汉字及非汉字符号的编码。规定将汉...
用户41648 2008-06-30 14:21
俄文866编码及其与ANSI编码的转换
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщыьэюяёъ(俄文866编码,用一个字节表示,在WORD中用西里尔文(DOS))80...
用户41648 2008-05-07 16:15
液晶扫描一帧的行数N的倒数叫占空比,半选择点和选择点的电压比叫偏压。
液晶扫描一帧的行数N的倒数叫占空比,半选择点和选择点的电压比叫偏压。很抽象?具体的说液晶是n行的(com端的数目),占空比就是1/n,在电压一定的情况下,行数的增加意味着占空比下降,使液晶的显示质量下...
用户41648 2008-03-21 09:30
区位码和国标码转换
国标与机内码的转换   国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国标码有一个相对位置差的代码,;再将这个代码的第...
我要评论
1
10
关闭 站长推荐上一条 /3 下一条