2014-03-05 44 views
4

在系統軟件的過程中,我有這個學期,我們都被教導彙編器和其他系統軟件。雖然整個過程中讀書,我碰到的文字的話題。字面VS即時操作數

有文字和立即操作數之間的比較,所述它們之間的唯一區別是,文字未組裝作爲指令的一個部分,而立即操作數是。

我們爲什麼一定要用文字,如果我們可以用立即數?這是什麼使他們不同?換句話說,何時使用文字以及何時使用立即操作數?

+1

處理器不知道什麼文字,它僅支持立即操作數和內存指針。文字是彙編器或編譯器的一個特性。具體如何在可執行程序中使用字面值取決於您使用它的上下文。 –

回答

5

立即數是可以編碼成指令本身的文字值,例如,

  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 

您的彙編語法可能與此不同,但原理保持不變。

+0

所以,這意味着使用文字的優點是,它們能夠存儲等,其不能被存儲在立即操作數串較大的數據? –

+5

「文字」是自我識別其值的字符序列,例如17和「abc」。立即操作數是將文字值直接嵌入到機器指令中的方式。當文字值不適合,而你需要它時,你必須把它放在別的地方(例如在一個DC中),並使用其他地方的地址(通常是一個標籤)來引用它,你通常可以做通過在指令中允許立即值的地方寫入標籤的名稱。 –

+0

明白了。謝謝。 –