博客网址:www.shicoder.top
微信:18223081347
欢迎加群聊天 :452380935
这一次我们进入操作系统实现的真实编码, 这一次主要是完善对boot.asm文件的全部实现,开始吧。。。
首先我们先来理一下boot.asm需要干什么
- 打印出
Booting System...
- 实现磁盘读写
- 将后续的
loader.asm
所在的区域读入到0x1000
处,然后跳转进入loader.asm
程序 - 开始执行
loader.asm
程序(这一节我们下次实现)
实模式下的print
在我们平时编写c语言时候,可以直接使用,但是在boot.asm中,完全就没有可以用库函数,因此为了在开始打印处start boot,我们需要自己实现print
先来看下代码把
mov si, booting
call print
print:
mov ah, 0x0e
.next:
mov al, [si]
cmp al, 0
jz .done
int 0x10
inc si
jmp .next
.done:
ret
booting:
db "Booting System...", 10, 13, 0; \n\r
这段程序主要使用使用BIOS的int 10h
来实现一个print
功能,al
寄存器存储要显示的字符串
磁盘读写
因为boot.asm
在主引导扇区,磁盘内存太小,不能在boot.asm
中实现loader.asm
的功能,因此我们将loader.asm
保存在磁盘的一个地方,在b