使用汇编 (Keil) 比较 R0 和 R1

Comparing R0 with R1 using assembly (Keil)

我有两个值存储在 R0R1 中。我将两者进行如下比较:

MOV R3, #(R0 XOR R1)
CJNE R3,#0,NOT_EQUAL

显然不可能以这种方式使用 XOR OPERATOR。 有没有另一种方法可以比较 R0R1 并检查它们是否相等?

由于您想在运行时执行 XOR,您将不得不使用指令来完成它。不幸的是,XRL 指令仅在 A 寄存器上运行,因此您可能需要重新排列。假设 A 不可用,但 R3 可用,你可以这样做:

MOV R3, A ; save A to R3
MOV A, R0
XRL A, R1
XCH A, R3 ; restore A and put the result into R3
CJNE R3, #0, NOT_EQUAL

如果 A 可用,您可以使用 CJNE 接受内存操作数,知道寄存器是内存映射的:

MOV A, R0
CJNE A, 1, NOT_EQUAL ; 1 is the bank0 address of R1