在PIC组件中将寄存器递减为0

时间:2014-04-21 15:32:20

标签: assembly pic cpu-registers subtraction accumulator

如果W寄存器包含0并且我试图从中减去一些值,那么寄存器中的值会变成什么?它会在STATUS寄存器中设置零标志吗?如何使用它来检查我们是否会转到负数?

例如,在此代码中

MOVLW b'00000000' ; W has value 0
SUBLW b'00000001' ; trying to decrement

我试图减少W寄存器,它的后果是什么?

1 个答案:

答案 0 :(得分:1)

无论W是否为零,

SUBLW都会从W中的值中减去文字。结果当然就像

W = W - literal;

如果W = 0,那么如果类型是有符号的则是否定,或者如果它是无符号的则是环绕。

Before: W = 00000000
          -        1
────────────────────
After:  W = 11111111 (-1)

但是如果W为零,从中减去一个非零数字将使其不为零,因此零标志不会为ON

如果您需要检查值是否为负,请同时使用进位标志和零标志

Result    Carry  Zero
Positive  1      0
Zero      1      1
Negative  0      0

http://www.pcbheaven.com/picpages/Mathematic_Instructions/