文章1
文章2
经过总结之后应该大概是这个过程:
C
P
U
CPU
CPU上电之后进行一系列寄存器初始化的操作,
C
S
CS
CS的值设置为
0
x
F
F
F
F
0xFFFF
0xFFFF,
I
P
IP
IP的值设置为
0
0
0,然后跳转到该位置执行相应代码,这个位置存储了一条
J
M
P
JMP
JMP指令,可以调到
B
I
O
S
BIOS
BIOS的执行代码,
B
I
O
S
BIOS
BIOS进行硬件自检之后, 将软盘的引导扇区(
512
512
512字节)加载到物理地址
0
x
7
C
00
−
0
x
7
D
F
F
0x7C00 - 0x7DFF
0x7C00−0x7DFF处,然后跳转到
0
x
7
C
00
0x7C00
0x7C00这个位置执行
B
o
o
t
Boot
Boot程序,
B
o
o
t
Boot
Boot程序就是把根目录下的
l
o
a
d
e
r
.
b
i
n
loader.bin
loader.bin加载到
0
x
1000
0x1000
0x1000的位置
(
0
x
1000
−
0
x
7
C
00
)
(0x1000-0x7C00)
(0x1000−0x7C00),然后
l
o
a
d
e
r
.
b
i
n
loader.bin
loader.bin将
O
S
OS
OS加载到
0
x
10000
0x10000
0x10000位置。
