跳到内容

文章类别:编程

关于汇编的DA指令

如果随意对一个累加器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码加法指令以后,否则是没有实际意义的!

原文链接

MCS-51 单片机的存储器地址空间

MCS-51的存储器有 片内RAM , 片外RAM , 片内ROM 和 片外ROM 三个空间.

 

片内RAM,00H-FFH,256B.

128B用户RAM.
00H-1FH,32B,分成四个工作寄存器区,每区有寄存器R0~R7,对此区域,可以使用R0~R7来操作,但是,当前只有一个区是可以这样读写的,也可以使用字节地址,来读写.
20H-2FH,16B,是位寻址区,共有128个bit.此区域,也可按照字节寻址,来读写.
30H-7FH,没有什么特色,只进行字节寻址.

128B特殊RAM.
80H-FFH,寄存器借用区.用于定义功能各异的寄存器.

 

片外RAM,0000H-FFFFH,64KB.

对片外RAM读写,需用MOVX指令。

 

片内ROM,0000H-0FFFH,4KB.

当EA为高电平时,用户在0000H-0FFFH范围内使用内部ROM,大于0FFFH后,单片机CPU自动访问外部程序存储器.对ROM读出,需用MOVC指令.

 

片外ROM,0000H-FFFFH,64KB.

当EA为低电平时,用户在0000H-FFFFH范围内全使用外部部ROM。对ROM读出,需用MOVC指令.

如果说ppnn13%dkstFeb.1st是娉娉袅袅十三余,豆蔻梢头二月初的话

如果说ppnn13%dkstFeb.1st是娉娉袅袅十三余,豆蔻梢头二月初的话;

两个黄鹂鸣翠柳就等于Tree_0f0=sprintf(“2_Bird_ff0/a”);

池上碧苔三四点,叶底黄鹂一两声可写成csbt34.ydhl12s;

人生自古谁无死就是for_n(@RenSheng)_n+=”die”;

两岸猿声啼不住 while(1)Ape1Cry&&Ape2Cry;

无边落木萧萧下,不尽长江滚滚来 doWhile(1){LeavesFly();YangtzeRiverFlows()};

停车坐爱枫林晚,霜叶红于二月花[tcmlflw,syred>febhua];

锄禾日当午dig?F*ckDang5;

一道残阳铺水中,半江瑟瑟半江红 1dcypsz1/2jss1/2j#f00

平生不看武腾兰,便称男人也枉然 ps!see(5tl)shit!say(man)

鱼和熊掌不可兼得  hold?fish:palm

白日依山尽  White*NearMountainJin

姑苏城外寒山寺 hanshansi.location()!∈[gusucity]

不服床上单挑 if(not Convinced){ Singled out in the bed}

FLZX3000cY4yhx9day (飞流直下三千尺,疑似银河下九天)

【前端开发遇车祸成植物人,IE6将他唤醒】

【前端开发遇车祸成植物人,IE6将他唤醒】

北京程序员王xx遭遇车祸成植物人,医生说活下来希望只有万分之一,唤醒更为渺茫。

他的Leader和亲人没放弃,他们根据王xx视工作如命的作风,每天都在他身边念:

“xxIE6侧边栏又乱了,线上BUG啊!快起来改!”

奇迹发生,王醒来,第一句话:

我这是好的。

网络论坛见证程序员7年爱情,有真相

2004-09-07 12:43:05

sfEvil:

昨天下午回去,一直等到女孩下班回来,犹豫了10多分钟,终于走了过去,对她说:我想和你交个朋友,不知道行不行。她说可以,我就请她吃饭,吃晚饭后逛了下街,聊了聊彼此的情况。回去后各自回到自己的家。(我们是租的房子,我和她一层,她搬来8个月,我只和她说过3句话),正想去她那里在聊聊,可是她说要出去了。我只好回去编程序,半个小时她回来了,已经九点种了,我觉得太晚了,不好意思过去。一会她来了一个朋友(女),我很想过去,可是还是放弃了。
现在想想觉得当时自己的勇气真太大了,不知道以后该怎么办,如何和她继续交往,直到成为我的女朋友(我现在想想,当时应该说做我女朋友吧,可是这样是不是太唐突了)。
我现在不知道接着该怎么办,我想晚上下班去租李伯清的 ,然后买点小吃,晚上请她来我这边看看,增进一下感情。
我现在很茫然,不知道接着该怎么办,大家住得这么近,我不知道该什么时候和她说明白,天天过去,又没有确立关系,周围的看到也不太好吧。
希望有经验的朋友教教小弟。

http://topic.csdn.net/t/20040907/12/3347800.html

2011-12-01 12:12:51

sfEvil:

(昨天终于鼓起勇气,和隔壁的女孩交了朋友,但不知道下一步该怎么办,望各位大哥指点
http://topic.csdn.net/t/20040907/12/3347800.html)
当年写了这个帖子,得无数的兄弟姐妹支持,时隔7年了,来汇报结果。
1.和她相恋了2年,在2006年结婚了,
2.2007年3月生了一个女儿
3.目前生活美满幸福
4.当年是我去买菜做饭,现在已经多年不做了,教会了徒弟,饿死了师傅
5.她的性格好,脾气好,心地好,相处融洽。
6.为当年没有给大家结果表示歉意
7.再次感谢当年出谋划策的兄弟们。

http://topic.csdn.net/u/20111201/12/8ac8e816-86ca-4872-a68e-f2565038d856.html