org 07c00h的原因
来源:互联网 发布:美工刀片厚 编辑:程序博客网 时间:2024/05/18 06:21
Boot Sector(引导扇区),一个正确的BootSector除了以0xAA55结束之外,还应该包含一段少于512B的执行码
源码分析
DispStr:
BootMessage: db "hello ,OS world!"
nasm boot.asm -o boot.bin
硬件自检相关工作完成后,就会启动操作系统:以Windows XP为例,系统BIOS将启动盘的第一扇区(BootSector,引导扇区)读入到内存的0x7C00H处,并检查0x7DFE地址的内容是否等于0xAA55,如果匹配,跳转到0x7C00处执行MBR(MasterBoot Record,主引导记录),MBR接着从分区表(Partition Table)中找到第一个活动分区(ActivePartition ,一般是C盘分区),然后按照类似方式读取并执行这个活动分区的引导扇区(Partition BootSector),而引导扇区将负责读取并执行NTLDR(NT LoaDeR,windowsnt的加载程序),然后主动权就移交给了windows.(来源<使用开源软件-自己动手写操作系统>杨文博)
从Xp启动操作系统的过程中可以看出为什么要用org 0x7c00h;
反编译
ndisasm -o 0x7c00 boot.bin >>disboot.asm
00007C00
00007C02
00007C04
00007C06
00007C09
00007C0B