在 NASM 中汇编 JMPI 指令给出错误 "parser: instruction expected"

Assembling a JMPI instruction in NASM gives the error "parser: instruction expected"

我有这个汇编代码:

fin:   
jmpi 0,0xc200
hlt            ;halt cpu run and wait instructions
jmp fin

jmpi 0,0xc200 不正确,我不明白哪里出了问题。我 assemble 此代码为:

nasm -f bin bootsect.asm -o bootsect.bin

看来您可能一直在查看使用 JMPI(段间跳转)的 AS86 汇编代码。这通常被称为 FAR JMP,并以 NASM 编码:

jmp 0:0xc200

在 NASM 中 JMPI 只是 JMP 段和偏移量之间有一个冒号 (:) 而不是逗号 (,).


如果你想使用 AS86 来 assemble 引导加载程序而不是 NASM 你必须安装 AS86 包然后 assemble 你的代码以这种方式进入二进制文件:

as86 -b bootsect.bin bootsect.asm

不清楚您打算如何在 FAR JMP 之后到达 HLT 循环,但您可能打算这样做:

fin:
    hlt            ;halt cpu and wait for interrupt
    jmp fin