LC3仿真器检查寄存器是否大于0

时间:2018-09-04 01:03:14

标签: lc3

如何检查寄存器是否大于0?
例如:我要检查R2是否大于0

这就是我所做的:
添加R2,R2,#0

但这不会检查R2是否大于0,似乎将R2的值设置为0

1 个答案:

答案 0 :(得分:0)

检查寄存器是否大于零是一个两步过程。

首先,您需要设置条件代码寄存器,然后使用BR指令在条件上跳转。

ADD R2, R2, 0          ; Store R2 in R2, this has no effect other than setting CC register.
BRNZ LESS_THAN_OR_ZERO ; Branch if R2 is <= 0, based on the CC register set in last instruction
[statements here]      ; if we are here then R2 > 0
BR DONE                ; optional if we don't want to execute the next section of code. unconditional branch to done
LESS_THAN_OR_ZERO
[more statements here] ; if we are here then R2 <= 0
DONE
[more statements here]

有关CC寄存器的更多信息,它会根据写入寄存器的最后一条指令以N,Z或P更新,这意味着LD,LEA,LDI,LDR,ADD和AND,并且NOT将更新CC寄存器自动。

查看ISA文档中的BR指令。