开篇:学习 《自己动手写操作系统 》于渊

本文详细解析了操作系统启动流程,从磁盘引导扇区的查找,到BIOS如何将控制权交给引导程序。重点介绍了启动扇区代码的作用,包括0xAA55标志的重要性、内存加载位置0x7C00h的原因,以及如何使用汇编语言编写简单的boot sector。文章还解答了$和$$在汇编代码中的含义,以及如何确保引导扇区大小为512字节。
摘要由CSDN通过智能技术生成

操作系统启动流程:开电源->加电自检->寻找启动盘->若为软盘则检查0面0磁道0扇区,并寻找是否以0xAA55结束,若是,则BIOS认为是一个引导扇区。此段代码应少于512字节,启动跳转到该段代码后,bios将控制权交给操作系统执行。


磁盘的一个扇区是512字节,标志0xaa55存于这个扇区的最后一个字(两字节,偏移地址为:1FEH),其余空间用于存储指令代码和一些参数、提示信息等。磁盘引导记录由ROM BIOS的INT 19H(引导加载程序,相当于热启动系统,对应的快捷键为:Ctrl+Alt+Del),固定装入内存的0000:7C00H,然后将控制权交给磁盘引导程序,相当于开始执行下面的程序段。下面详细解答一下这个程序段的功能:

简单的boot sector代码。


org 07c00h ;//调整偏移量伪指令ORG,指定下面的指令从7c00h处开始,因为BIOS一旦发现引导扇区,就会将这512字节装载到内存0000:7c00处
mov ax, cs ;//数据传送指令,将代码段寄存器cs的内容赋给通用寄存器ax
mov ds, ax ;//ax→ds,使数据段与代码段在同一个段
mov es, ax ;//ax→es,使附加段与代码段在同一个段
call DispStr ;//调用子程序DispStr,显示字符串信息:Hello, OS world!
jmp $ ;//$表示当前地址,实现死循环
DispStr: ;//子程序:显示字符串
mov ax, BootMessage ;//BootMessage的首地址给ax
mov

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值