计算机启动过程
当按下电源开关后,将发送电信号给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是引导程序加载的起始地址。
一个超级简单的引导程序就这么出现了。