我目前正在从头开始构建一个简单的操作系统,所以我正在测试一些引导扇区代码,并使用Qemu进行模拟。
我的引导扇区代码应该在操作系统启动时打印出“A”。
以下是第一版引导扇区代码(不使用函数调用):
执行nasm生成的二进制文件后,使用以下命令:
所以为什么它不能正常运行呢?任何帮助都将不胜感激。谢谢。
我的引导扇区代码应该在操作系统启动时打印出“A”。
以下是第一版引导扇区代码(不使用函数调用):
[org 0x7c00]
mov al,'A'
mov ah,0x0e ; int 10/ ah = 0eh -> scrolling teletype BIOS routine
int 0x10
jmp $
times 510 -( $ - $$ ) db 0
dw 0xaa55
执行nasm生成的二进制文件后,使用以下命令:
qemu-system-i386 test.bin
结果是正确的,字符“A”出现在它应该出现的地方。
但是,在尝试使用一个打印存储在al中的字符的函数后,屏幕上没有任何输出。
这里是test.asm文件的第二个版本(包括此次调用函数)。
[org 0x7c00]
mov al,'A'
call my_print_function
jmp $
times 510 -( $ - $$ ) db 0
dw 0xaa55
my_print_function:
pusha ; push all registers
; same code as the first version to print a character stored in al
mov ah,0x0e
int 0x10
popa ; pop all registers
ret
所以为什么它不能正常运行呢?任何帮助都将不胜感激。谢谢。
times
行之前... - Frank Kotler