最近在研究《自己动手写操作系统》有了点进步想记录并分享一下!
根据《自己动手写操作系统》一书自己完成可以引导的IMG软盘映像!
工具:NASM汇编编译器,virtual PC 2007,FloppyWriter;
需要知识: NASM汇编
编写boot.asm:
///
org 07c00h ;程序加载到7C00h处
mov ax , cs
mov ds , ax
mov es , ax ;将代码段地址付给 ds es
call DispStr ;调用显示字符串例程
jmp $
DispStr:
mov ax , BootMessage
mov bp , ax ;es:bp指向字符串地址
mov ax , 01301h ; ah=13 , al = 01h ah表示调用13号功能 al表示光标
mov bx , 000ch ;bh表示0页 bl表示字体颜色
mov dl , 0 ;dh dl 表示行列
int 10h
ret
BootMessage: db "HELLO,OS WORLD!"
times 510 - ($-$$) db 0
dw 0xaa55
//
编译方式: nasm boot.asm -o boot.bin
生成boot.bin文件,再用FloppyWriter生成IMG镜像文件
再用EsayBoot将boot.img大小改为1440kb(virtual PC 2007 要求软盘映像为720KB活着1.44MB)
关于BIOS的10号中断:
INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。使用 INT 10H 中断服务程序时,先指定 AH 寄存器为调用功能号,在本例中用到了13号功能具体入口参数:
ES:BP = 串地址
CX = 串长度
DH , DL 为其实行,列
BH = 页号
AL = 0,BL = 属性
串:Char,char,……,char
AL = 1,BL = 属性
串:Char,char,……,char
AL = 2
串:Char,attr,……,char,attr
AL = 3
串:Char,attr,……,char,attr
第一次写文章不知道从哪入手! 大家多指教!