您的位置:首页 > 其它

初探如何编写系统引导程序

2014-02-24 16:48 267 查看
计算机启动过程

    当按下电源开关后,将发送电信号给BIOS,BIOS获得电信号后将启动自检程序检查周边设备是否通电完毕

    检查完毕后,自检程序将控制权交还BIOS,BIOS然后读取引导启动盘的启动程序

    在虚拟机里选择软盘启动,计算机会检查软盘的0面0磁道1扇区,如果发现它以0xAA55则BIOS认为它是一个引导扇区,也就是Boot Sector。

同时BIOS在读取引导启动程序之前事先分配好最初的1MB内存空间

这是一个源自《自己动手编写操作系统》书中给的实例代码略改动而来。

start:
jmp main

BootMessage db 'boot loader!'
MessageLength dd 12

main:
org 07c00h;load code at 0x7c00h
;cli
mov ax,cs
mov ds,ax
mov es,ax

call DispStr
jmp $
;sti

DispStr:
mov ax,BootMessage
mov bp,ax;string address
mov cx,12;string length
mov ax,01301h;ah=13h al=01h
mov bx,00ch;bh=0 black-red bl=0ch high-light
mov dl,0
int 10h;interrupt 10
ret

times 510-($-$$) db 0;make it 512bit 512-2=510
dw 0xaa55;end flag


0x07C00是引导程序加载的起始地址。

一个超级简单的引导程序就这么出现了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: