如果W寄存器包含0并且我试图从中减去一些值,那么寄存器中的值会变成什么?它会在STATUS
寄存器中设置零标志吗?如何使用它来检查我们是否会转到负数?
例如,在此代码中
MOVLW b'00000000' ; W has value 0
SUBLW b'00000001' ; trying to decrement
我试图减少W寄存器,它的后果是什么?
答案 0 :(得分:1)
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