关闭

保护模式汇编系列之一

496人阅读 评论(0) 收藏 举报
分类:
  从80386开始cpu有了三种运行模式,就是实模式,保护模式和虚拟8086模式,实模式只能访问1M的内存,而保护模式却可以访问全部的4G的内存,也沿用至今,
内存保护,分页系统,硬件支持的虚拟内存都是保护模式的特色。
  80386扩展了8086处理器,从原来的AX等扩展到了32位EAX等,对cpu来讲,系统中的所有存储器中的储存单元都处于一个统一的逻辑储存器中,它容量收cpu寻址能力的限制,这个逻辑存储器就是线性地址空间,8086是20根地址总线,所以访问1M的线性地址空间,而80386有32位地址线,拥有4G的线性地址空间,但是80386保留了8086采用的地址分段的方式,只分一个段,段基址0x00000000段长0xffffffff,整个线性空间看作一个段,平坦模型
线性地址不仅仅是内存地址,还有其他的存储器编址在里面,对80386,保护模式下如果开启分页,内存物理地址的访问就不一定是线性地址了,而是需要根据页映射转换到实际的物理地址。
     对于内存分段中每一个段的描述,内模式对于内存段没有访问控制,任意的程序可以修改任意地址的变量,而保护模式需要对内存段的性质和允许的操作给出定义,以实现对特定内存段的访问检测和数据保护,32位保护模式下对一个内存段的描述需要8个字节,称之为段描述符(Segment Descriptor),段描述符分为数据段描述符,指令描述符和系统描述符三种,大致相同。
寄存器是不足以存放N多个内存段的描述符集合,所以这些描述符集合都放在描述符表中了,有很多描述符表,最重要的是GDT,为整个软硬件系统服务
  
问题是这些描述符表放在内存的哪些地方,cpu又如何知道,所以intel的做法是直接设置了一个48位的全局表述表寄存器GDTR来保存GDT的信息

所以cpu如何从实模式到保护模式的呢,80386cpu内部有着5个32为控制寄存器CR,CR0-CR3,CR8,其中CR0寄存器的PE位(Protection Enable)0号位,表示了CPU的运行状态,0为实模式,1为保护模式,修改就可以改变cpu的工作模式

段寄存器从8086改到段选择子,CS等寄存器不再保存段基址,而保存其指向段的索引信息
1
0
查看评论

[Intel汇编-NASM]进入保护模式全过程

org 0x7C00 ; 该命令表示程序将被装在到偏移地址为0x7C00的地方 ; 该命令效果是全局的,但只能使用一次,之后不得再用 ;...
  • Lirx_Tech
  • Lirx_Tech
  • 2015-01-26 16:57
  • 1536

进入保护模式-汇编学习之路

在实模式下由于对内存的保护不是特别的完善,一个段可以任意访问访问不是该段范围内的内存。例如以下一个小例子 mov cx,0x8000 push ds mov ds,cx mov [0x05],dx pop ds 这个例子就说明了先保存当前的数据段地址之后在修改其他段的内存,之后再返回当前...
  • qq_26585931
  • qq_26585931
  • 2017-02-14 14:26
  • 443

实模式和保护模式区别及寻址方式

实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.net/rosetta 64KB-4GB-64TB?     我记得大学的汇编课程、组成原理课里老师讲过实模式和保护模式的区别,在很多书本上也有谈及,无奈本人理解和感悟能力实在太差,在很...
  • rosetta
  • rosetta
  • 2013-05-16 08:08
  • 22900

汇编学习笔记之实模式/保护模式区别

2.1 模式种类     从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。     实模式只能访问地址在1M以下的内存...
  • u012151242
  • u012151242
  • 2016-03-01 10:35
  • 940

HDU 1465 不容易系列之一【错排】

有个网名叫做8006的男性同学,结交网友无数,最近该同学玩起了浪漫,同时给n个网友每人写了一封信,这都没什么,要命的是,他竟然把所有的信都装错了信封!注意了,是全部装错哟! 现在的问题是:请大家帮可怜的8006同学计算一下,一共有多少种可能的错误方式呢?   Input 输入数...
  • u012469987
  • u012469987
  • 2014-07-24 15:23
  • 642

HDU1465 不容易系列之一

原题链接 错排公式: 当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. 第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法; 第二步,放编号为k的元素,这时...
  • u012846486
  • u012846486
  • 2014-03-15 18:17
  • 687

进入保护模式总结

1.最主要的就是那个jmp dword,一切都是为了Jmp做准备 2.int 13h读取扇区,既可以读硬盘,又可以读软盘,应该是两个的驱动器号不同(这个还没搞清楚,现在只会读软盘)。用硬盘映像的时候,总是说找不到引导设备,不知道是哪儿的参数错了。 一些细节: >cl是读取的扇区号,1就是...
  • A1157599735
  • A1157599735
  • 2012-10-01 15:21
  • 780

杭电OJ——1465 不容易系列之一

不容易系列之一 Problem Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样。 话虽这样说,我还是要告诉大家,要想失败到一定程度也...
  • lishuhuakai
  • lishuhuakai
  • 2013-01-22 13:03
  • 3168

杭电 HDU ACM 1465 不容易系列之一

不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16123 ...
  • lsgqjh
  • lsgqjh
  • 2015-04-06 01:30
  • 922

调试实模式转保护模式心得

     这几天为找如何调试实模式跳转保护模式的调试器,找的发狂~!~    1.用TD调试,发现调试到Cr0时TD就会死掉,经查阅TD无法调试保护模式的程序,我就纠结了难道就没调试保护模式的调试器,Debug,OD等肯定不行了....
  • tianxingjianhd
  • tianxingjianhd
  • 2009-03-15 14:13
  • 1208
    个人资料
    • 访问:1125次
    • 积分:41
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行