在我这学期的系统软件类(class)中,我们正在学习汇编程序和其他系统软件。在阅读整个类(class)时,我遇到了LITERALS主题。
对文字和立即操作数进行了比较,发现它们之间的唯一区别是文字不被汇编为指令的一部分,而立即操作数则是。
如果可以使用立即数操作数,为什么必须使用文字?是什么让他们与众不同?换句话说,何时使用文字以及何时使用立即操作数?
最佳答案
立即操作数是可以编码到指令本身中的文字值,例如,
MOV R1, 17 ; move 17 as a value to R1
但是,您可能需要将文字值放入程序可能使用的数据结构或表中。您可以使用声明存储的汇编器“psuedo-ops”来执行此操作:
DW 17 ; define a word containing the literal 17
一些文字,尤其是文本字符串,几乎永远不会适合立即字段(立即字段中没有足够的位),因此实际上不能作为指令立即值包含在程序中:
XYZ DC "I am a duck."
发生这种情况时,您通常会发现指令通过其标签将声明的数据引用为隐式立即值,而不是文字:
MOV R1, XYZ
一个异常(exception)是极短的字符串文字:
MOV R1, "A"
这与调用语句中的隐式文字没有什么不同:
CALL FOO
指的是 FOO 代码上的标签:
FOO: MOV R1, 17
RETURN
您的汇编器语法可能与此不同,但原理保持不变。
关于assembly - 文字 VS 立即操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204586/