pmtest1.asm from 自动手写操作系统 粗略解释

第一章其实还是很好理解的,配置相关寄存器,使用10号中断显示helloworld,到了第三章一开始就讲了一堆没法让人理解的东西,着实让人崩溃,看了很多博客,两天才大概明白是怎么回事!

首先得有8086的相关知识,王爽那本书。

然后就是为啥实模式跳到保护模式会有gdt这东西。

因为在8086下,
段(16位)×16+偏移(16位)=20位,所以2^20=1048576B=1024KB=1mb
最多只能访问1mb的空间,很少,然后他想了一个办法,把更大的32位的段基址放在一个表中,叫做gdt(globe descriptor table),这个表里头可以存放显示操作的段,存放数据data的段,存放显存地址的段,各种段,就这样一折腾使得最大的寻址空间达到了2^32=4gb的空间。

但是cpu并不知道你这个表在哪里,你得使用lgdt命令来把一个结构为32位表头段地址+16位表界限加载到gdtr这个寄存基中来告诉cpu你的表在哪里。

最后就是选择子了,其实也好理解,因为并不是表里的每一个段都是要执行的,就像上面说的

存放显示操作的段
存放数据的段
存放显存地址的段

我们只要执行存放显示操作的段,所以就有了选择子(selector),选择子实际是一个偏移来的,在这里不多讲,有了选择子就可以选择性的执行表中的某一个任务啦。

http://www.360doc.com/content/11/0409/22/6580811_108479867.shtml
这个详细解释了保护模式下的寻址还有代码的解释

http://blog.csdn.net/yeruby/article/details/39718119
这个详细了几个专业术语,gdt,gdtr,ldt,ldtr

看完上面两个就差不多懂了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值