mbr(master boot record)主引导记录

在实模式下的地址范围:0x7C00~0x7DFF,512B。

BIOS最后一项工作是校验启动盘中位于0盘0道1扇区(就是第0个,但是根据CHS表示磁盘扇区的方法,叫做1扇区)的内容。如果此扇区末尾的两个字节分别是魔数0x55和0xaa,BIOS就认为此扇区中存在可执行的程序(即MBR),便加载到物理地址0x7C00,随后跳转到此地址。

1、为什么是0盘0道1扇区?
因为这个扇区距离BIOS最近(BIOS可能在这个扇区)。

2、为什么是0x7C00?
这也是一个魔数,0x7C00最早出现在IBM的个人电脑PC5150的ROM BIOS的INT 19H中断处理程序中。开机后,BIOS处理程序开始自检,调用BIOS中断,即call int 19h。在此中断处理程序中,BIOS要检测这台计算机有多少个硬盘或软盘,如果检测到了任何可用的磁盘,BIOS就把它的第一个扇区加载到0x7C00。
那为什么PC 5150要把它放到0x7C00呢?
PC 5150 BIOS研发工程师假定最小内存32KB。一、为了避免被过早覆盖,MBR被放在32KB的末尾;二、MBR本身大小512字节,但还要为其所用的栈分配空间,所以其实际所用的内存空间要大于512字节,估计1KB够用。根据以上两点,32KB为0x8000,减去1KB(0x400),等于0x7C00,这就是0x7C00的由来。

作用:读取硬盘,把loader程序读到内存,此处把loader读到0x900。
步骤:

待操作的扇区数、写入地址、写入命令、操作
1、先选择通道,往该通道的sector count寄存器中写入待操作的扇区数。
2、往3个LBA寄存器写入扇区起始地址的低24位。
3、往device寄存器中写入LBA地址的24~27位,并置第6位为1,使其为LBA模式,设置第4位,选择操作的硬盘(master或slave硬盘)。
4、往command寄存器写入命令。
5、读取status寄存器,判断硬盘工作是否完成。
6、如果是读硬盘,进入第7步,否则,完工。
7、将硬盘数据读出。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值