【发布时间】:2016-07-03 07:48:37
【问题描述】:
我正在学习引导扇区。我从 NASM 网站下载了 nasm-installer-x64.exe。我的操作系统是win7-64bit。当我运行以下代码时,它无法正常工作
mov ah, 0x0e;
mov al, the_secret;
int 0x10;
mov al, [the_secret];
int 0x10;
mov bx, [the_secret];
add bx, 0x7c00;
mov al, [bx];
int 0x10;
mov al, [0x7c1e];
int 0x10;
jmp $;
the_secret:;
db 'X';
times 510-($-$$) db 0;
dw 0xaa55;
【问题讨论】:
-
是什么让您认为
times 510-($-$$) db 0不起作用?对我来说似乎很好。也许您的引导加载程序还有其他问题? -
非常感谢。从我的 asm 代码生成的图像文件不正确。首先,它包含 526 个字节,应该是 512 个字节。其次,它以 0x5500 结束,应该是 0x55aa。我不知道为什么会这样……
-
我发现,我上面描述的现象是由nasm编译的结果与写入我的图像文件的结果不同造成的。我使用命令
nasm -f bin boot_sect.asm -o boot_sect.bin,对吗? -
没错。如果您查看我的答案的底部,我举了一个如何组装它的示例,这与我的建议相符。您使用什么命令将引导扇区放在磁盘上?
-
如果您没有可用的 DD 命令,我推荐它作为一个有用的工具,您可以在 Windows 上使用它来构建磁盘映像。可以从这里下载:chrysocome.net/downloads/dd-0.6beta3.zip
标签: assembly nasm bootloader osdev x86-16