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

计算机启动过程

    当按下电源开关后,将发送电信号给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是引导程序加载的起始地址。


一个超级简单的引导程序就这么出现了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值