nasm - 错误:在行首需要标签或指令

3

你好,我对汇编语言非常陌生(今天才开始学),在按照 这个教程 做的时候遇到了问题。我用下面的文本创建了一个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的快捷方式。我尝试将其转换为二进制文件。当我输入以下命令:
nasm -f bin boot.asm -o boot.bin

我遇到了这个错误。
boot.asm:5: error: label or instruction expected at the start of line

我想知道这是否是一篇糟糕的教程还是我打错了什么。同时,我想知道“标签或指令”是什么意思。


2
第5行应该以分号开头,而不是冒号。 - nneonneo
好的,谢谢,但是为什么要踩我呢?我在帖子中说了我是新手。 - pokeyOne
2个回答

1
您还应该在Main和cls后面加上冒号。同时保留HTML格式。
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
您在第5行使用了注释。要将一行标记为注释,需要使用分号。 "标签或指令" 意味着每行必须是一个指令(如mov、add等操作码)或者它必须是一个标签(如Print:)或者是一个标签后面跟着一个指令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接