美文网首页
[027][x86汇编语言]32位保护模式用的是段选择子 用常量

[027][x86汇编语言]32位保护模式用的是段选择子 用常量

作者: AkuRinbu | 来源:发表于2018-06-03 11:25 被阅读0次

    学习笔记

    《x86汇编语言:从实模式到保护模式》
    https://www.jianshu.com/p/d481cb547e9f

    32位保护模式用的是段选择子

        [bits 32]
    flush:
        mov eax,0x0008                      ;加载(0...4GB)选择子
        mov ds,eax          
    
    [024][x86汇编语言]第十三章 学习加载程序C13_mbr.asm
     mem_0_4_gb_seg_sel    equ  0x08    ;整个0-4GB内存的段的选择子
    
       mov eax,mem_0_4_gb_seg_sel         ;切换DS到0-4GB的段
        mov ds,eax
    
    [026][x86汇编语言]第十三章 学习内核程序 c13_core.asm
    • 索引号0x08 指向的 GDT描述符是一个指向0~4GB全部内存空间的数据段,这个数据段的段基址是0x0000 0000,因此,我认为使用常量mem_0_4_gb_seg_sel 的写法要比直接写上0x08好得好得多!

    • 这是至关重要的一个概念,那就是在明确提示自己,现在已经进入保护模式了,不要再写 段地址:偏移地址了,而是要写 选择子:偏移地址

    • 极有可能编程的时候,保护模式也写着写着就写了 ds =0x0000 0000,然后debug的时候还死活找不到错误在哪里,即便在调试的时候看到了ds是这个值,也会糊里糊涂的觉得,是啊,我就是要0x0000 0000,殊不知,现在要写的是选择子,仅仅是声明并使用一个常量就可以十分清楚地提醒自己了;

    • 概念懂了,但是实际操作的时候,脑子未必有学习概念的时候那么清晰,不是自己变笨了,而是这个东西就是容易弄错的,所能做的就是采取另外的保障,比如写一个常量提醒自己。

    相关文章

      网友评论

          本文标题:[027][x86汇编语言]32位保护模式用的是段选择子 用常量

          本文链接:https://www.haomeiwen.com/subject/yvpesftx.html