写一个世界上最小的操作系统
在写第一个操作系统之前,我们需要准备硬件和软件
硬件准备
· 一台计算机(windows操作系统)
· 一张空白软盘(或者用CD-ROM来代替)
软件准备
· 汇编编译器NASM。可以在此链接下载:汇编编译器下载地址。
· 软盘绝对扇区读写工具
接下来,我们开始写一个最小的操作系统,也与你不相信,这个操作系统仅仅需要20行代码。
代码如下:
org 07c00h ;告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es,ax
call DispStr ;调用显示字符串例程
jmp $ ;无限循环
DispStr:
mov ax, BootMessage
mov bp,ax ;es:bp=串地址
mov cx, 16 ;cx=串长度
mov ax, 01301h ;ah=13,al=01h
mov bx, 000ch ;页号为0(bh=0)黑底红字(bl=0ch,高亮)
mov dl, 0
int 10h ;10h 号中断
ret
BootMessage: db "Hello,OS world!"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 ;结束标志
将上述代码用NASM编译一下就会得到:
nasm boot.asm -o boot.bin
这样我们就得到了一个512B的boot.bin,使用软盘绝对扇区读写工具将这个文件写到一张空白软盘的第一个扇区。现在第一个“操作系统”就完成了,而这张软盘也就成为了一张引导盘。
将软盘放入软驱中并重新启动计算机,从软盘开始引导,你将会看到计算机显示出你的字符串,红色的:“Hello,OS world!”
但事实上,这并不是一个完整的OS,仅仅是一个最简单的引导扇区,也就是Boot Sector。尽管如此,它至少是直接在裸机上运行的,不依赖于其他任何软件,它确实不是操作系统,但它已经具备了操作系统的一个特性。
持续更新,下次更计算机开机电检和代码详解