nasm - 错误:行开头预期的标签或指令

时间:2014-06-16 18:33:09

标签: assembly nasm bochs

您好我对汇编非常陌生(刚刚今天开始)并且在完成this tutorial中所说的内容时遇到了这个问题。我用这个文本制作了一个asm文件:

bits    16
org     0x7c00
jmp     Main

:In=  si = string, ah = 0eh, al = char, Out= character screen
Print:
lodsb
cmp     al, 0
je      Done
mov     ah, 0eh
int     10h
jmp     Print

Done:
ret

Main
mov     si, msg
call Print

cls
hlt

msg     db  "Hello World",0

times 510 - ($-$$)      db      0

dw      0xAA55

并在我的文件夹中使用asm文件我有一个nasm和nasmpath的副本,我也有一个bochs的快捷方式。我想要做的是将其转换为bin文件。当我把这个命令:

nasm -f bin boot.asm -o boot.bin

我收到此错误

boot.asm:5: error: label or instruction expected at the start of line

我想知道这是一个糟糕的教程还是我输错了。我也想知道“标签或指示”是什么意思。

2 个答案:

答案 0 :(得分:1)

您还应该在Main和cls之后放置冒号

bits    16
org     0x7c00
jmp     Main

;In=  si = string, ah = 0eh, al = char, Out= character screen
Print:
lodsb
cmp     al, 0
je      Done
mov     ah, 0eh
int     10h
jmp     Print

Done:
ret

Main:
mov     si, msg
call Print

cls:
hlt

msg     db  "Hello World",0

times 510 - ($-$$)      db      0

dw      0xAA55     

答案 1 :(得分:0)

您在第5行使用注释。要将注释标记为注释,您需要使用分号。 “标签或指令”是指每行必须是一条指令(像mov,add,...这样的操作码),或者它必须是一个标签(如Print :)或一个标签后跟一条指令。