打印

三字节bcd码减法程序(汇编)急

[复制链接]
4362|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
relaxgirl|  楼主 | 2007-5-16 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请大虾帮忙一下:现在急需三字节bcd码减法程序(汇编),能否直接用subb进行在网上下了一个看的不是很懂请指教:不明白为什么只要将100减去此数即可。因为9AH经十进制调整后为100,相当100减去此数。 

    分析:在二进制数中,当采用补码后可以将减法转换成加法。同样,BCD码中采用补数后也可以将减法转换成加法,减数对10取补,只要将100减去此数即可。因为9AH经十进制调整后为100,相当100减去此数。 

子程序名称:SUBMSB 

入口参数:被减数及减数的末地址分别存放在R0、R1中,字节长度存放在R2中 

出口参数:差存放在被减数单元 

使用的寄存器:A,R0,R1,R2 

子程序如下: 

 SUBMSB:CLR    C          ;减数对10取补 

 LOOP:MOV   A, #9AH     

SUBB  A, @R1      

ADD   A,  @R0      ;两数相加 

DA    A            ;十进制调整 

MOV  @R0,A        ;送结果 

DEC  R0            ;修改被减数地址指针 

DEC  R1            ;修改减数地址指针 

CPL  C             ;转换成借位 

DJNZ  R2,LOOP     ;判多字节减法完成否,若未完则继续 

RET 

END 

主程序:设三字节BCD码的被减数及减数由高位到低位存放在片内RAM中,它们的首地址分别为10H及20H,要求将其差存放到被减数单元,编写相应的程序。 

                  ORG  0000H 

                  LJMP  MAISUB 

                  ORG  1000H 

MAISUB:MOV   R0, #12H 

                  MOV  R1 ,#22H 

                  MOV R2,#03H 

                   ACALL    SUBMSB 

                  SJMP    $ 

        END 

相关帖子

沙发
relaxgirl|  楼主 | 2007-5-16 15:38 | 只看该作者

帮自己顶一下

帮自己顶一下,过路的大虾多指教!多谢!

使用特权

评论回复
板凳
wang21| | 2007-5-16 15:46 | 只看该作者

快学C51吧

早就不用汇编了。只要程序的结果正确就OK了,无需去分析,快学C51吧

使用特权

评论回复
地板
conwh| | 2007-5-16 21:12 | 只看该作者

你看看这个

        MOV    R0,        #COM_0
        MOV    R1,        #DERT_2_0
        MOV    R2,        #5
        CLR    C
TIMER1-1-LOOP:                        ;标准数据-实际数
        MOV    A,        @R0
        SUBB    A,        @R1
        JNC    TIMER1-1-LOOP-1            ;如果产生进位(溢出),则应符合BCD码转换的规则,数值多六
        CLR    C
        SUBB    A,        #6        ;按照规则应减六
        ANL    A,        #0FH        ;屏蔽高位
        SETB    C                ;恢复进位位
TIMER1-1-LOOP-1:
        MOV    @R1,        A
        INC    R0
        INC    R1
        DJNZ    R2,        TIMER1-1-LOOP

使用特权

评论回复
5
ayb_ice| | 2007-5-17 07:41 | 只看该作者

看来LZ的数学不行啊...

使用特权

评论回复
6
gyt| | 2007-5-17 10:39 | 只看该作者

自己想

这一关总是要过的

使用特权

评论回复
7
ashaoxin| | 2007-5-17 12:19 | 只看该作者

同意4楼的看法

同意4楼的看法,要判断溢出的

使用特权

评论回复
8
lirui5528| | 2010-8-10 23:24 | 只看该作者
如果使用DA指令,还得判断溢出吗?

使用特权

评论回复
9
123jj| | 2010-8-11 07:34 | 只看该作者
如果使用DA指令,还得判断溢出吗?
lirui5528 发表于 2010-8-10 23:24


51系列DA指令只适用于加法,不适用于减法,这个问题一直是51系列指令系统的缺陷。

使用特权

评论回复
10
ayb_ice| | 2010-8-11 14:29 | 只看该作者
LS
C中几乎没有人使用BCD码

使用特权

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

本版积分规则

14

主题

48

帖子

1

粉丝