我必须为可以运行计算机的操作系统编写代码。它就像一个桌面计算机。为此我正在阅读breakthorn操作开发系列我已经完成了bootloader的第二阶段引导加载程序处于实模式。在此之后,作者正在解释保护模式。我不想使用保护模式。我没有时间做那个。所以我想通过使用bios中断在实模式下编写计算器。可能吗?我认为它可以写在引导加载程序的第二阶段(我不确定。)意味着我不必使用内核(我不确定)。我不知道如何使用 BIOS 中断来处理键盘。任何人都可以提供一个链接来帮助我吗?如果我在上面假设的任何错误是错误的,请纠正我。在此先感谢。
问问题
7984 次
3 回答
5
您可以处理 IRQ 1(由 x86 控制器映射到中断 9)并从端口读取密钥60h
。
请参阅http://inglorion.net/documents/tutorials/x86ostut/keyboard/。
于 2010-11-06T13:24:43.140 回答
3
最小 GAS 引导扇区 BIOS 示例
当您输入一个字符时,它会打印到屏幕上。
电源
.code16
.global _start
_start:
cli
/* Set SS and SP as they may get used by BIOS calls. */
xor %ax, %ax
mov %ax, %ss
mov $0x0000, %sp
/* Get input to %al */
mov $0x00, %ah
int $0x16
/* Print the input from %al */
mov $0x0E, %ah
int $0x10
hlt
.org 510
.word 0xaa55
编译并运行:
as -o main.o main.S
ld --oformat binary -o main.img -Ttext 0x7C00 main.o
qemu-system-i386 -hda main.img
在 Ubuntu 14.04 AMD64、Binutils 2.24、QEMU 2.0.0 和真实硬件 Lenovo Thinkpad T400 上测试。
于 2015-09-20T17:55:20.567 回答