在本学期的系统软件课程中,我们正在学习汇编程序和其他系统软件。在整个课程中阅读时,我遇到了 LITERALS 的主题。
文字和立即操作数之间的比较表明,它们之间的唯一区别是文字不是作为指令的一部分组合而是立即操作数。
如果我们可以使用立即操作数,为什么我们必须使用文字?是什么让他们与众不同?换句话说,何时使用文字以及何时使用立即操作数?
答案 0 :(得分:6)
立即操作数是您可以编码到指令本身的文字值,例如,
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
异常是一个极短的字符串文字:
MOV R1, "A"
这与调用语句中的隐式文字没有什么不同:
CALL FOO
指的是FOO代码上的标签:
FOO: MOV R1, 17
RETURN
您的汇编语法可能与此不同,但原则保持不变。