注册 登录
编程论坛 汇编论坛

在实模式转换到保护模式时碰到一个关于 lgdt 指令的问题

yan031 发布于 2012-02-13 15:06, 1517 次点击
只有本站会员才能查看附件,请 登录

附件里包含了源代码文件 str.asm和已经编译好的str.exe
在使用debug 调试 str.exe 到 lgdt 指令后直接退出调试

如题,代码如下:
pdesc    struc
limit    dw 0
base     dd 0
pdesc    ends

.386p

dseg    segment
gdt    label byte

    <其他代码>

gdtlen    =$-gdt
vgdtr    pdesc <gdtlen-1,>

dseg    ends

cseg    segment use16
assume cs:cseg,ds:dseg


    <其他代码>



    lgdt qword ptr vgdtr   //这里出现问题,反汇编得到的是  db 0f 为什么会调试到这里就直接跳出debug了呢?
    cli
    call ea20
    mov eax,cr0
    or eax,1
    mov cr0,eax

cseg    ends
end    start



[ 本帖最后由 yan031 于 2012-2-13 15:08 编辑 ]
5 回复
#2
zaixuexi2012-03-03 17:25
换高级点的调试器
#3
zklhp2012-03-04 12:29
bochs 这个?
#4
zjsxwc2012-03-07 09:22
win 下的  用户程序可以,改全局描述符表寄存器 吗?
不可能的。

楼主只有 装个dos 或虚拟机上,或直接在裸机上才可以练习这种底层的命令

[ 本帖最后由 zjsxwc 于 2012-3-7 15:16 编辑 ]
#5
zaixuexi2012-03-07 23:36
回复 4楼 zjsxwc
标题是在实模式转换到保护模式时碰到一个关于 lgdt 指令的问题
#6
yan0312012-06-28 14:04
自己再看看了,谢谢大家了
1