一, 实验内容
改写bootsect.s和setup.s, 完成如下主要功能:
1, bootsect.s能够在屏幕上打印一段提示信息"XXX is booting...", 其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等.
2, bootsect.s能够完成setup.s的载入, 并跳转到setup.s开始地址执行.
3, setup.s能够像屏幕输出一行信息 "Now we are in SETUP"
4, setup.s能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。
5, setup.s不再加载linux内核, 保持上述信息显示到屏幕上即可
二, 实验步骤
1, 完成bootsect的屏幕输出功能
首先来看完成屏幕显示的关键代码如下:
! 首先读入光标位置 mov ah,#0x03 xor bh,bh int 0x10 ! 显示字符串“AXF OS is booting, my name is Aixiangfei ...” mov cx,#50 ! 字符串一共包含50个字符,所以设置cx为50 mov bx,#0x0007 mov bp,#msg1 mov ax,#0x1301int 0x10 inf_loop: jmp inf_loop ! 后面都不是正经代码了,得往回跳呀 ! msg1处放置字符串 msg1: .byte 13,10 ! 换行+回车 .ascii "LZJos is running..." .byte 13,10,13,10 ! 两对换行+回车 !设置引导扇区标记0xAA55 .org 510 boot_flag: .word 0xAA55 ! 必须有它,才能引导
时间: 2024-10-18 00:52:52