打印

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

[复制链接]
2830|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaolh|  楼主 | 2010-5-15 14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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 | 只看该作者
请问如何实现

使用特权

评论回复
5
ayb_ice| | 2010-5-15 14:31 | 只看该作者
MOV      A,#99H
DEC      A
DA        A // 很重要
JNC       .....

使用特权

评论回复
6
xiaolh|  楼主 | 2010-5-15 14:43 | 只看该作者
那位指点下后面的程序啊

使用特权

评论回复
7
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

使用特权

评论回复
8
xiaolh|  楼主 | 2010-5-15 14:53 | 只看该作者
怎么  看不懂了
不好意思,菜鸟

使用特权

评论回复
9
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 的补码

使用特权

评论回复
10
xiaolh|  楼主 | 2010-5-15 15:08 | 只看该作者
OK    明白了
严重感谢!!

使用特权

评论回复
11
xwj| | 2010-5-15 15:14 | 只看该作者
嗯,还是邓苗的汇编厉害!

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

呵呵,惭愧ing....
不过偶还是更喜欢全用HEX来计算,免得转来转去的搞晕头:)

使用特权

评论回复
12
xiaolh|  楼主 | 2010-5-15 15:28 | 只看该作者
是的    就是得清零

使用特权

评论回复
13
xuyiyi| | 2010-5-15 18:25 | 只看该作者
呵呵!都是高手!玩汇编!

使用特权

评论回复
14
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.

使用特权

评论回复
15
xuyiyi| | 2010-5-16 06:17 | 只看该作者
可惜,51只支持DA和ADD是官配,不支持DA和SUB官配。
始终感到,这是51指令系统的一大败笔,很多系列的单片机都支持DA和SUB官配。

使用特权

评论回复
16
xiaolh|  楼主 | 2010-5-19 17:07 | 只看该作者
还得继续顶
谢谢  大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

256

帖子

0

粉丝