IF ELSE 语句操作数
IF ELSE Statements Operands
我有一个非常简单的 IF ELIF ELSE ENDIF
语句来检查 r0 中的值是否与其他值相比较。代码在组装时总是抛出以下错误:
main.s(25): error: A1198E: Unknown operand
main.s(27): error: A1198E: Unknown operand
我认为这个问题可能与 =
、<=
和 >=
有关,它们实际上不是可以在 IF
语句中运行的操作数,而是基于他们网站上的文档 =
应该有效。代码如下:
AREA |.text|, CODE, READONLY, ALIGN=2
THUMB
EXPORT Start
NEWVERSION dcw 2
Start
mov r1, #21
bl Price
loop B loop
Price
IF {[r1]! <= #13}
mov r0, #6
ELIF {[r1]! >= #65}
mov r0, #7
ELSE
mov r0, #8
ENDIF
ALIGN ; make sure the end of this section is aligned
END ; end of file
我知道我将寄存器与文字进行比较,但是当 [r0]!
被一些立即值(例如 #12
替换时,代码会抛出此错误。似乎没有太多关于如何在 Thumb 中使用 IF ELSE
语句的信息,我几乎开始怀疑是否有幕后原因导致这种情况,因为大多数示例只是分支到代码子程序或使用IT指令。
Use IF
with ENDIF
, and optionally with ELSE
, for sequences of instructions or directives that are only to be assembled or acted on under a specified condition.
这些不是控制程序流程的逻辑语句,而是指示汇编器根据特定体系结构(例如,构建)包含或排除代码的指令。
如果您熟悉 C
,这些语句类似于 #ifdef
预处理器指令,而不是 if()
程序流语句。
我有一个非常简单的 IF ELIF ELSE ENDIF
语句来检查 r0 中的值是否与其他值相比较。代码在组装时总是抛出以下错误:
main.s(25): error: A1198E: Unknown operand
main.s(27): error: A1198E: Unknown operand
我认为这个问题可能与 =
、<=
和 >=
有关,它们实际上不是可以在 IF
语句中运行的操作数,而是基于他们网站上的文档 =
应该有效。代码如下:
AREA |.text|, CODE, READONLY, ALIGN=2
THUMB
EXPORT Start
NEWVERSION dcw 2
Start
mov r1, #21
bl Price
loop B loop
Price
IF {[r1]! <= #13}
mov r0, #6
ELIF {[r1]! >= #65}
mov r0, #7
ELSE
mov r0, #8
ENDIF
ALIGN ; make sure the end of this section is aligned
END ; end of file
我知道我将寄存器与文字进行比较,但是当 [r0]!
被一些立即值(例如 #12
替换时,代码会抛出此错误。似乎没有太多关于如何在 Thumb 中使用 IF ELSE
语句的信息,我几乎开始怀疑是否有幕后原因导致这种情况,因为大多数示例只是分支到代码子程序或使用IT指令。
Use
IF
withENDIF
, and optionally withELSE
, for sequences of instructions or directives that are only to be assembled or acted on under a specified condition.
这些不是控制程序流程的逻辑语句,而是指示汇编器根据特定体系结构(例如,构建)包含或排除代码的指令。
如果您熟悉 C
,这些语句类似于 #ifdef
预处理器指令,而不是 if()
程序流语句。