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