二、 bootsect.s程序
1、 在PC加电自检后,ROM-BIOS会把引导扇区代码bootsect加载到0x7C00处并执行,执行过程中bootsect把自己移到0x90000处。程序主要负责:
1)把从磁盘第2扇区开始的4个扇区的setup模块(setup.s生成)加载到内存0x90200处(此处为紧接着ROM-BIOS之后),加载后内存如下分布(第一扇区即存放bootsect.s):
2) 利用BIOS中断0x13取磁盘参数表中当前启动引导盘的参数
3) 屏幕显示“Loading system…”
4) 把磁盘setup模块后面的system模块加载到内存0x10000
5) 确定根文件系统设备号并保存其设备号于root_dev
6) 跳转到setup程序开始处(即0x90200)执行setup程序
2、 根据源代码分析每一步骤执行过程
1) 执行bootsect过程中,bootsect把自己移到0x90000
…
BOOTSEG = 0x07c0 ! original address of boot-sector
INITSEG = 0x9000 ! we move boot here - out of the way
…
entry _start
_start:
mov ax,#BOOTSEG
mov ds,ax !ds寄存器置为0x07c0
mov ax,#INITSEG
mov es,ax !es寄存器置为0x9000
mov cx,#256 !设置计数器,计数256
sub si,si