1

您好,我对组装非常陌生(今天才开始),并且在完全按照本教程中所说的操作时遇到了这个问题。我用这个文本制作了一个 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

我想知道这是一个糟糕的教程还是我输入错误。我也想知道“标签或说明”是什么意思。

4

2 回答 2

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     
于 2014-06-17T17:11:26.927 回答
0

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

于 2014-06-17T13:18:53.013 回答