[其它应用] 操作AUXC却影响B寄存器的值

[复制链接]
 楼主| huanghuac 发表于 2020-3-1 15:03 | 显示全部楼层 |阅读模式
本人是用汇编的,但发现操作AUXC会影响B寄存器的值,请问是什么原因?
      MOV     B, #100         ;1:
    CLR      AUXC            ;2:
    MOV     A, #250         ;3:
    DIV      AB                 ;4:
   
    CLR      AUXC            ;5:
    MOV     A, #250         ;6:
    DIV      AB                 ;7:

我采用的是16位的除法,在执行完第四句后,B的值为0x32,但执行完5句后,B的值为0x30,不知什么原因?
gongche 发表于 2020-3-1 15:06 | 显示全部楼层
还有什么现象?能再详细描述下吗?
 楼主| huanghuac 发表于 2020-3-1 15:17 | 显示全部楼层
补充一点: 第5句采用MOV     AUXC, #0x00 ;5:则正确的.而且KEIL都不会报错.
huwr 发表于 2020-3-1 15:21 | 显示全部楼层
看看反汇编
 楼主| huanghuac 发表于 2020-3-1 15:26 | 显示全部楼层


看了, 发现:CLR    AUXC是操作F0.1的位,而此位正好是B,而MOV     AUXC, #0x00
是操作F1,而F1正好是AUXC
happy_10 发表于 2020-3-1 15:29 | 显示全部楼层

AUXC是8bit寄存器,不是ACC,所以不能用CLR指令清零。如果你用CLR指令的话,就变成了清除位操作了。
bqyj 发表于 2020-3-1 15:32 | 显示全部楼层
AUXC是8bit寄存器,不是ACC, 所以 CLR AUXC变成了清除位-》CLR  F0.1
wenfen 发表于 2020-3-1 15:34 | 显示全部楼层
对的,不能用CLR AUXC
zhuhuis 发表于 2020-3-1 15:39 | 显示全部楼层
AUXC是byte, 不能用CLR
 楼主| huanghuac 发表于 2020-3-1 15:42 | 显示全部楼层
多谢大家讨论这么多哈,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

772

主题

8473

帖子

6

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