1
我有一个可变TEMP2被分配00001101(13)和I搬到00001010(10)WREG。 (顺便一提,所有这些寄存器都在MPLAB x Debugger会话中进行检查。)然后,我执行SUBWFB在PIC 18F8722大会
subwfb temp2
指令。 TEMP2应该是00000011(3),但它是00000010(2)。 有什么问题就在这里,为什么没有如预期TEMP2?请帮帮忙!
我有一个可变TEMP2被分配00001101(13)和I搬到00001010(10)WREG。 (顺便一提,所有这些寄存器都在MPLAB x Debugger会话中进行检查。)然后,我执行SUBWFB在PIC 18F8722大会
subwfb temp2
指令。 TEMP2应该是00000011(3),但它是00000010(2)。 有什么问题就在这里,为什么没有如预期TEMP2?请帮帮忙!
的subwfb
指令中减去来自寄存器f
W寄存器和所述借位(1
如果C
被置位,当0
C
未设置)。当你进行链式减法时,使用借贷。即减少包含在多个字节中的数字。它是由subxx
发生溢出时产生的。
实施例:
; 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
)的指令总是更好,因为它不消耗时钟或程序存储器。
'B'手段借用。正在执行'subwfb'当您好像'CF'。 – user35443
好吧,我纠正了在subwfb指令前添加一条指令“bsf STATUS,0”。这种方法是否有效? – mualloc
我会说使用'subwf'更好,因为它不需要额外的指令。 – user35443