青鸟的天空

积分与排名

最新评论

编写操作系统的引导程序(Boot Sector)

编写操作系统的引导程序(Boot Sector)(原创)



Boot Sector 
       第一次写最底层的程序------操作系统的引导启动部份,有点紧张,有点兴奋。 
    用记事本新建一个文本文件,coding了一通。再另存为boot.asm文件. 
    再用CMD进入NASM的目录。用NASM编译了下,提示不成功。 
d:\nasm>  nasm boot.asm -o boot.bin 

   再核对了下代码,很多地方弄错了,主要是在“0”和“O”方面。 
  再另存,再编译,还是不行。晕,提示错误是在11行。 
   再比对了下,没错呀。 
  汗ING。 
       倒! 
那我原来是错在哪呢,再冷静地一行一行看过去。重点在11行。 Yeah~~~ 
原来,01301h写成了0130lh,本是数字“1”写成了字母“l". 
    那就用FloppyWriter.exe写进软盘里玩下吧。重启电脑,出现了红色的字母“Hello,OS world"了 
   
源程序如下: 

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    ; 结束标志

posted on 2007-09-15 14:54 断桥诗轩 阅读(1512) 评论(0)  编辑 收藏 引用 所属分类: 系统编程

只有注册用户登录后才能发表评论。