【发布时间】:2011-03-08 01:52:18
【问题描述】:
我正在尝试使用 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 实现问题。
感谢所有回复的人。
谢谢
【问题讨论】: