PIC 18F8722 组件中的 subwfb
subwfb in PIC 18F8722 Assembly
我有一个分配给 00001101(13) 的变量 temp2,我已将 00001010(10) 移动到 wreg。 (顺便说一句,所有这些寄存器都在 MPLAB x Debugger 会话中逐步检查。)然后,我执行
subwfb temp2
说明。 temp2 应该是 00000011(3) 但它是 00000010(2)。
这里有什么问题,为什么 temp2 不符合预期?请帮忙!
subwfb
指令从寄存器 f
中减去 W 寄存器和借位(1
如果 C
被设置,0
否则)。进行链式减法时使用借用,例如对包含在一个以上字节中的数字执行减法时。它由 subXX
和 subXXb
形式的指令在发生溢出时产生。
示例:
; let num1, num2 be labels of bytes in a 16-bit number
movlw k
subwf num1
movlw l
subwfb num2
; num2:num1 now contains: the num2:num1 - l:k where num2 and l are upper bytes of a 16-bit number
为了在不需要时避免这种行为,您可以使用 bsf STATUS, 0
或 subwf
(注意缺少 b
后缀)。请注意,在不需要时使用不带 b
的指令(或 c
在加法指令的情况下)可能会导致某些模型的性能稍微好一些。
我有一个分配给 00001101(13) 的变量 temp2,我已将 00001010(10) 移动到 wreg。 (顺便说一句,所有这些寄存器都在 MPLAB x Debugger 会话中逐步检查。)然后,我执行
subwfb temp2
说明。 temp2 应该是 00000011(3) 但它是 00000010(2)。 这里有什么问题,为什么 temp2 不符合预期?请帮忙!
subwfb
指令从寄存器 f
中减去 W 寄存器和借位(1
如果 C
被设置,0
否则)。进行链式减法时使用借用,例如对包含在一个以上字节中的数字执行减法时。它由 subXX
和 subXXb
形式的指令在发生溢出时产生。
示例:
; let num1, num2 be labels of bytes in a 16-bit number
movlw k
subwf num1
movlw l
subwfb num2
; num2:num1 now contains: the num2:num1 - l:k where num2 and l are upper bytes of a 16-bit number
为了在不需要时避免这种行为,您可以使用 bsf STATUS, 0
或 subwf
(注意缺少 b
后缀)。请注意,在不需要时使用不带 b
的指令(或 c
在加法指令的情况下)可能会导致某些模型的性能稍微好一些。