我正在尝试使用 bios 视频中断在屏幕上显示一个字符。以下是汇编代码:
mov $0x0A, %AH
mov $0x68, %AL ; to display character 'h'
int $0x10
我使用 GNU 汇编器组装了这段代码以生成一个名为 sample.o 的目标文件 sample.o 的总大小为 449 字节。现在,我在第 511 和第 512 字节位置手动将十六进制数字 0x55 和 0xAA 写入此目标文件,以使其可启动。所以我相信现在我有一个 512 字节的引导扇区。我使用 qemu 尝试从这个目标文件启动:
$> qemu -fda sample.o
qemu 模拟器启动并冻结在它说“从软盘启动......”但我认为在它检测到引导扇区后,应该运行 bios 视频中断代码并在屏幕上显示一个字符。
我知道我做错了可怕的事情。也许我错过了中断的整个概念。任何人都可以帮忙。
编辑:所以我现在使用 as86 和 ld86 来生成平面二进制文件。而不是 AH 中的 0x0A,我使用的是 0x0E,它似乎成功了。好像是bios实现问题。
我感谢所有回复的人。
谢谢