段描述符的初始化<自己动手写操作系统>

发布于 2022-09-18 01:47:45 字数 174 浏览 15 评论 0

书中第三章"保护模式"的程序pmtest1.asm
为什么没有初始化GDT中显存段的描述符呢?而是直接使用了
mov ax, selectorvideo
mov gs, ax
而之后的程序pmtest2.asm又添加了数据段和32位栈段, 它们的描述符都被初始化了, 这是为什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

能怎样 2022-09-25 01:47:45

我是这么理解的,不知对不对:
LABEL_DESC_VIDEO:Descriptor 0B8000h,0ffffh,DA_DRW
段基址 段界限 属性都在Descriptor宏中定义过了不需要初始化。

LABEL_DESC_CODE32:Descriptor 0,SegCode32Len-1,DA_C+DA_32
其段基址为0,即没有初始化,所以需要初始化
        ; 初始化 32 位代码段描述符
        xor        eax, eax
        mov        ax, cs
        shl        eax, 4
        add        eax, LABEL_SEG_CODE32
        mov        word [LABEL_DESC_CODE32 + 2], ax
        shr        eax, 16
        mov        byte [LABEL_DESC_CODE32 + 4], al
        mov        byte [LABEL_DESC_CODE32 + 7], ah
这一段的作用也就是填充 32 位代码段描述符LABEL_DESC_CODE32的段基址(第2,3,4,7这四个字节)

[ 本帖最后由 summersunboy 于 2009-10-23 10:51 编辑 ]

愿得七秒忆 2022-09-25 01:47:45

对于这本书,俺无语。。。。

一绘本一梦想 2022-09-25 01:47:45

人家是对的。

当然,是你没看懂,或者没留意而已

谁人与我共长歌 2022-09-25 01:47:45

我想,那样的“垃圾”书,我这样系统编程烂的一塌糊涂的人是写不出来的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文