2013-12-19 187 views
1

我有這樣的指令:內聯彙編不能正確解析

asm("message: .byte 'Hello, World!', 0x0A"); 

出於某種原因,編譯器說:junk at end of line, first recognized character is 'e'。根據網絡上的其他示例,我試圖用db替換.byte。然後輸出是no such instruction: 'db 72ello, World!440x0A'(注意數字而不是撇號)。對我來說,這似乎是'解析有問題。

我該怎麼辦?

回答

2
  1. .byte只適用於單個字節,如0xFA或'F'。
  2. db是intel語法,內聯彙編使用GNU語法。

  3. 如上所述,.byte僅適用於一個字節。要使用字符串,請使用.ascii.asciz - 前者是一個簡單的字節數組,而後者是空終止的。

即, asm("message: .asciz \"Hello, World!\n\"");

+0

它的工作,謝謝!你有參考,我可以閱讀關於這種東西? –

+0

一般指南將GNU as manual(man as?)或者,訪問內聯彙編中的osdev wiki頁面。 – zhiayang