ReactOS操作系统启动代码分析(I386架构)(2)

这里紧跟上一篇谈到的0x7C00开始执行,当然此时是在实模式下面,执行最初先禁止中断,因为现在堆栈都没有就算有中断也不能执行,所以第一步禁止中断,一直到设置好堆栈才打开中断。这一部分代码很简单,利用ax将段寄存器全部清零,然后调用切换到保护模式下面去,但是由于CS一直都在使用当中,所以就不需要初始化CS。不过要注意的是实际上进入switch_to_prot的时候,并没有进入保护模式,而是在 返回的时候才是执行保护模式下面的32位代码。

1.	    .code16  
2.	EXTERN(_RealEntryPoint)  
3.	    cli  
4.	    xor ax, ax  
5.	    mov ds, ax  
6.	    mov es, ax  
7.	    mov fs, ax  
8.	    mov gs, ax  
9.	    mov ss, ax  
10.	    mov sp, word ptr ds:stack16  
11.	    sti  
12.	    call    switch_to_prot  
13.	.code32  
14.	        xor eax, eax  
15.	        mov dword ptr [_FrldrBootPartition], eax  
16.	        mov byte ptr [_FrldrBootDrive], dl  
17.	        mov byte ptr [_FrldrBootPartition], dh  
18.	        call _EnableA20  
19.	        xor eax, eax  
20.	        mov edi, offset __bss_start__  
21.	        mov ecx, offset __bss_end__ + 3  
22.	        sub ecx, edi  
23.	      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值