使用NASM汇编kernel.asm时遇instruction expected错误求助
NASM汇编kernel.asm报错
parser: instruction expected的解决办法 问题
用NASM、GCC和LD开发包含引导加载程序、内核及UI代码的项目时,汇编kernel.asm遇到错误:
kernel.asm:2: error: parser: instruction expected
已检查语法、拼写,确认NASM版本兼容,仍无法解决问题。
涉事代码片段
[BITS 16] ORG 0x8000 section kernel extern ui_main ; Declare the entry point of the UI code start: mov ax, 0x07C0 ; Set up segment registers mov ds, ax mov es, ax call clearScreen call ui_main jmp $ clearScreen: mov ah, 0x00 ; Video BIOS - Set video mode mov al, 0x03 ; Mode 3 (Text mode: 80x25, 16 colors) int 0x10 ; Video interrupt ret times 510 - ($ - $$) db 0 dw 0xAA55 ; Boot signature
已尝试的排查动作
- 验证汇编代码语法正确性
- 确认代码符合汇编语法规范
- 检查拼写错误和字符遗漏
- 确认NASM版本与代码兼容
解决方案
调整ORG指令的值即可解决问题:
原代码中ORG 0x8000的设置与后续段寄存器配置冲突——代码里将ds设为0x07C0,此时ORG应设为0(NASM默认值,可省略该指令)。修改后代码可正常汇编。
调整后的开头部分示例:
[BITS 16] ; ORG 0 为NASM默认值,可省略 section kernel
内容的提问来源于stack exchange,提问作者LevathonDeveloper
相关产品推荐
相关产品推荐

