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

时间:2015-04-28 19:51:59

标签: assembly compare 8051 keil

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

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

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

1 个答案:

答案 0 :(得分:1)

由于您希望在运行时执行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