我正在閱讀Richard C. Detmer編寫的題爲「80x86彙編語言和計算機體系結構導論」的教科書,並且在第59頁上討論了彙編語言中的BYTE指令,並將其用於字符和字符串。以下是全文:程序集中的BYTE指令
「除了數字操作數,則BYTE指令允許字符操作數與單個字符或字符串操作數以衆多人物無論是單引號(')或引號(」)可以用於指定字符或分隔字符串。他們必須成對;你不能在左邊放一個撇號,在右邊放一個引號。用引號分隔一個用單引號標記可以包含引號的字符串,可以包含撇號,使其能夠擁有包含這些特殊字符的字符串。」
這是很可以理解的,但我的好奇心線是BYTE指令,因爲我認爲它只能容納一個字節,八位。我做了一個測試,如果我說
string BYTE "HelloWorld"
它將編譯過程,但如果您選中了十六進制,你會發現它不只是一個單字節但多個字節。查看一個ASCII表,我們已經知道一個CH字符是一個字節。那麼我們怎麼能有字符串?我試圖用數字來應用這個。我們知道,對於BYTE指令是從-128到255的範圍內我想這樣的代碼:
number BYTE 9987
,當我試圖編譯和運行,我得到了一個錯誤,因爲當然9987的比一個字節大。但爲什麼字符串免疫這個?爲什麼BYTE指令在字符串的上下文中保持多於一個字節,但是不能與數字相同?
我會想象當我編譯並運行我列出的第一個代碼聲明與第二個聲明有相同的錯誤。爲什麼「規則」在這裏打破?
-Dan
還有什麼不明白嗎?這本書說這是合法的。如果你認爲不同,你一定是錯的。這裏有什麼問題。 – EJP
@EJP是的我知道這是合法的,這不是問題。問題是爲什麼它是合法的。瞭解某件事是合法的,與理解它是完全不同的。我知道我可以做到,但我想知道爲什麼。你沒看過我的帖子嗎? –