在我这学期的系统软件课程中,我们学习汇编程序和其他系统软件。在阅读整个课程时,我遇到了文字的主题。
文字和直接操作数之间的比较表明,它们之间的唯一区别是文字不是作为指令的一部分组装的,而直接操作数是。
如果我们可以使用即时操作数,为什么我们必须使用文字?是什么让他们与众不同?换句话说,何时使用文字以及何时使用即时操作数?
直接操作数是文本值,您可以编码到指令本身中,例如,
MOV R1, 17 ; move 17 as a value to R1
但是,您可能需要将文本值放入程序可能使用的数据结构或表中。 您可以使用声明存储的汇编程序"伪操作"来执行此操作:
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
您的汇编程序语法可能与此不同,但原则保持不变。