5

在我这学期的系统软件课程中,我们学习了汇编程序和其他系统软件。在阅读整个课程时,我遇到了LITERALS的主题。

在文字和立即操作数之间进行了比较,表明它们之间的唯一区别是文字不是指令的一部分,而立即操作数是。

如果我们可以使用直接操作数,为什么我们必须使用文字?是什么让他们与众不同?换句话说,什么时候使用文字,什么时候使用直接操作数?

4

1 回答 1

8

立即操作数是可以编码到指令本身的文字值,例如,

          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

您的汇编器语法可能与此不同,但原则保持不变。

于 2014-03-05T17:27:09.463 回答