警告:单独在没有冒号的行上标记可能会出错

sed*_*siv 3 x86 assembly nasm

我有这个简单的汇编程序asm1.asm,但在尝试编译时遇到错误.这是代码

;--- constant variables ---
SECTION .data

    msg: db "Hello World!", 10, 0; 10: carriage return, 0: NULL end of msg (stop)

;--- dynamic variables ---
; SECTION .bss

;--- assembler code ---
SECTION .text

extern _printf
global _main                    ;
_main:                          ; void main() {
    push ebp ;basepointer       ;   /* creation of the stack */
    mov ebp, esp ;stackpointer  ;

    push msg                    ;   /* pushing memory address */
    call _printf                    ;   /* call printf */

    mov esp, ebp                ;   /* function body */
    pop ebp                     ;
    return;                     ; }
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

C:\Users\David\Desktop>nasm -f elf asm1.asm
asm1.asm:23: warning: label alone on a line without a colon might be in error
Run Code Online (Sandbox Code Playgroud)

我是装配新手,所以我想这只是一些小问题,但有人可以告诉我是什么原因导致警告吗?

Bri*_*uch 8

什么是"回归"; 线?这不是有效的x86,可能会让汇编程序误以为你正试图在那里放一个标签.

  • @DavidSeres请点击左边的复选标记,将此问题标记为已回答.这将使我们其余的人免于浪费时间阅读已经有答案的问题.并且C在事物前面加上下划线,因此它应该是`extern _printf`,`global _main`和`_main:`,但从技术上讲,这是一个不同的问题. (4认同)