打印
[51单片机]

求双字节补码的问题

[复制链接]
2006|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 一颗心的思考 于 2015-2-4 17:05 编辑

复习汇编下的51,遇见了一个问题,强迫症犯了,老想知道为什么是这样:
首先对低字节取补,然后判其结果是否为全“ 0”。 若是,则高字节取补,
否则高字节取反。

代码如下:
START: MOV R0, #addr1              ;原码低字节地址送 R0
        MOV R1, #addr2              ;补码低字节地址送 R1
        MOV A, @R0                  ;原码低字节送 A
        CPL A                        ; A 内容取补
        INC A
        MOV @R1, A                  ;存补码低字节
        INC R0                       ;调整地址,指向下一单元
        INC R1
        JZ ZERO                      ;( A) =0 时转 ZERO
        MOV A, @R0                  ;原码高字节送 A
        CPL A
        MOV @R1, A                  ;高字节反码存入 addr2+1 单元
        SJMP LOOP1
  ZERO: MOV A, @R0                 ;高字节取补存入 addr2+1 单元
        CPL A
        INC A
        MOV @R1, A
        LOOP1: RET




不明白的地方是对高字节求补码的方法:“判其结果是否为全“ 0”。 若是,则高字节取补,
否则高字节取反。

相关帖子

沙发
ZALIN| | 2015-2-5 01:28 | 只看该作者
取补就是取反加1,低字节取反加1后等于0说明有进位,所以高字节也要取反后加1,否则高字节只需要取反

使用特权

评论回复
板凳
一颗心的思考|  楼主 | 2015-2-5 13:43 | 只看该作者
ZALIN 发表于 2015-2-5 01:28
取补就是取反加1,低字节取反加1后等于0说明有进位,所以高字节也要取反后加1,否则高字节只需要取反
...

谢谢

使用特权

评论回复
地板
一颗心的思考|  楼主 | 2015-2-5 13:46 | 只看该作者
找不到结贴了

使用特权

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

本版积分规则

13

主题

104

帖子

0

粉丝