打印

79F166B寄存器问题

[复制链接]
1462|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tian111|  楼主 | 2011-9-28 14:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人是用汇编的,但发现操作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,不知什么原因?
沙发
tian111|  楼主 | 2011-9-28 14:34 | 只看该作者
补充一点: 第5句采用MOV     AUXC, #0x00 ;5:则正确的.而且KEIL都不会报错.

使用特权

评论回复
板凳
tian111|  楼主 | 2011-9-28 14:36 | 只看该作者
看了反汇编,发现:CLR    AUXC是操作F0.1的位,而此位正好是B,而MOV     AUXC, #0x00
是操作F1,而F1正好是AUXC

使用特权

评论回复
地板
宋倩2010| | 2011-9-28 14:40 | 只看该作者
AUXC是8bit寄存器,不是ACC,所以不能用CLR指令清零。如果你用CLR指令的话,就变成了清除位操作了。

使用特权

评论回复
5
gongche| | 2011-9-28 15:02 | 只看该作者
AUXC是8bit寄存器,不是ACC, 所以 CLR AUXC变成了清除位-》CLR  F0.1

使用特权

评论回复
6
huwr| | 2011-9-28 15:05 | 只看该作者
对的,不能用CLR AUXC

使用特权

评论回复
7
tian111|  楼主 | 2011-9-28 15:09 | 只看该作者
哦,明白了

使用特权

评论回复
8
bananarer| | 2011-9-29 12:14 | 只看该作者
AUXC是byte, 不能用CLR

使用特权

评论回复
9
tian111|  楼主 | 2011-10-13 08:45 | 只看该作者
AUXC是byte, 不能用CLR
bananarer 发表于 2011-9-29 12:14
呵呵,基础不是很牢。。。

使用特权

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

本版积分规则

797

主题

8878

帖子

7

粉丝