1.硬件
— 一台计算机(Windows操作系统)
— 一张空白软盘
2.软件
— 汇编编译器NASM。
— 软盘绝对扇区读写工具。
代码1-1 /chapter1/a/boot.asm
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!”,你的“操作系统”在运行了!
这两天心情好,写了这段代码,过两天如果心情还这么好的话,就写第二段fso的代码,真正实现一个小小的仿DOS的小小的OS!