汇编语言BCD减法问题......急急!!

[复制链接]
3590|15
 楼主| xiaolh 发表于 2010-5-15 14:01 | 显示全部楼层 |阅读模式
各位大虾,
本人新手一个(单片机)如此小问题还望多多指教,莫见笑....
一个两位数减法,送数码管显示P0高位P2低位,
现要求从99减至00
如何转换成BCD啊?判溢出后如何往下写啊
 楼主| xiaolh 发表于 2010-5-15 14:03 | 显示全部楼层
MOV      A,#99H
DEC      A
JNC       .....
xwj 发表于 2010-5-15 14:08 | 显示全部楼层
建议还是用十六进制计算,只在显示的时候再转成BCD码
 楼主| xiaolh 发表于 2010-5-15 14:10 | 显示全部楼层
请问如何实现
ayb_ice 发表于 2010-5-15 14:31 | 显示全部楼层
MOV      A,#99H
DEC      A
DA        A // 很重要
JNC       .....
 楼主| xiaolh 发表于 2010-5-15 14:43 | 显示全部楼层
那位指点下后面的程序啊
dengm 发表于 2010-5-15 14:46 | 显示全部楼层
本帖最后由 dengm 于 2010-5-15 14:48 编辑

; -1 = +99H
   MOV R7, #99H

SUB_DEC1:
    MOV A, R7
   ADD A, #99H
   DA A
   MOV R7, A
   RET
 楼主| xiaolh 发表于 2010-5-15 14:53 | 显示全部楼层
怎么  看不懂了
不好意思,菜鸟
dengm 发表于 2010-5-15 15:02 | 显示全部楼层
本帖最后由 dengm 于 2010-5-15 15:04 编辑

BCD    -1 = (099H-01H) + 01H = 099H      ---- 10 的补码
  BIN     -1 = (0FFH-01H) + 01H =  0FFH    ----- 2 的补码
 楼主| xiaolh 发表于 2010-5-15 15:08 | 显示全部楼层
OK    明白了
严重感谢!!
xwj 发表于 2010-5-15 15:14 | 显示全部楼层
嗯,还是邓苗的汇编厉害!

老x想是想到了-1=(100+99)%100,DA即可,就是不确定结果加成100多后DA是否能调整过来,直到看到7楼dengm贴出来才反应过来:DA这都不能调整的话那还调整什么呢???:lol

呵呵,惭愧ing....
不过偶还是更喜欢全用HEX来计算,免得转来转去的搞晕头:)
 楼主| xiaolh 发表于 2010-5-15 15:28 | 显示全部楼层
是的    就是得清零
xuyiyi 发表于 2010-5-15 18:25 | 显示全部楼层
呵呵!都是高手!玩汇编!
ejack 发表于 2010-5-15 20:12 | 显示全部楼层
从上往下看到7L就可结了:D
DA和ADD是官配。

Note that DA A will not convert a binary number to BCD. The DA A operation produces a meaningful result only as the second step in the addition of two BCD bytes.
xuyiyi 发表于 2010-5-16 06:17 | 显示全部楼层
可惜,51只支持DA和ADD是官配,不支持DA和SUB官配。
始终感到,这是51指令系统的一大败笔,很多系列的单片机都支持DA和SUB官配。
 楼主| xiaolh 发表于 2010-5-19 17:07 | 显示全部楼层
还得继续顶
谢谢  大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

256

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部