免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1532 | 回复: 0

实模式跳转保护模式失败求教育 [复制链接]

论坛徽章:
0
发表于 2011-10-20 16:49 |显示全部楼层
感觉应该可以,但是确实失败了,大神们看看什么原因呀

org     0x7c00
jmp     BEGIN

NULL_DESC:
        dd      0
        dd      0

CODE_DESC:
        dw      0xffff
        dw      0
        db      0
        db      0x98
        db      0x40
        db      0

VIDEO_DESC:
        dw      0xffff
        dw      0x8000
        db      0x0b
        db      0x92
        db      0
        db      0

; 这个结构会加载到寄存器 gdtr
GDT_LEN equ     $-NULL_DESC
GDT_PTR dw      GDT_LEN-1
        dd      0

; Selector of GDT
Selector_CODE   equ     CODE_DESC-NULL_DESC
Selector_VIDEO  equ     VIDEO_DESC-NULL_DESC

[BITS   16]
BEGIN:
        mov     ax,     cs
        mov     ds,     ax
        mov     es,     ax
        mov     ss,     ax
        mov     sp,     0x100

        ; 设定CODE_DESC的段基址
        xor     eax,    eax
        mov     ax,     cs
        shl     eax,    4
        add     eax,    CODE_SEG
        mov     word [CODE_DESC+2],     ax
        shr     eax,    16
        mov     byte [CODE_DESC+4],     al
        mov     byte [CODE_DESC+7],     ah

        ; 设定GDT_PTR中的GDT基址
        xor     eax,    eax
        mov     ax,     ds
        shl     eax,    4
        add     eax,    NULL_DESC
        mov     dword [GDT_PTR+2],      eax

        ; 加载GDTR
        lgdt    [GDT_PTR]
        
        ; 进入保护模式
        cli

        in      al,     0x92
        or      al,     0x02
        out     92h,    al

        mov     eax,    cr0
        or      eax,    1
        mov     cr0,    eax

        jmp     dword Selector_CODE:0

[BITS   32]
CODE_SEG:

        mov     ax,     Selector_VIDEO
        mov     gs,     ax
        mov     edi,    1
        mov     al,     'a'
        mov     ah,     0x0f
        mov     [gs:edi],       ax
        jmp     $

CODE_SEG_LEN    equ     $-CODE_SEG
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP