X86保护模式 八操作系统类指令】的更多相关文章

X86保护模式  八操作系统类指令 通常在操作系统代码中使用,应用程序中不应用这些指令 指令分为三种:实模式指令,任何权级下使用的指令.实模式权级0下可执行的指令和仅在保护模式下执行的指令 一  实模式和任务特权级下可执行的指令 1.存储全局和中断描述符表寄存器指令 利用存储描述符表寄存器指令能把描述符表寄存器的内容保存到指定的存储单元.与GDT与IDT被所有任务共享不同,LDT是每个任务私有的.所以存储局部描述符表寄存器的LDTR的指令不在所列 a) 存储全局描述符表寄存器指令 SGDT QW…
x86   保护模式  十  分页管理机制 8.386开始支持分页管理机制 段机制实现虚拟地址到线性地址的转换,分页机制实现线性地址到物理地址的转换.如果不启用分页,那么线性就是物理地址 一  分页管理简介 cr0中的pg位=1   分页生效,将线性地址转换为物理地址. 只有在保证pe位为1的情况下  才能使pg位为1  否则将引起通用保护故障. 分页机制将线性地址空间和物理地址空间分别划分为大小相同的块.这样的块称为页.线性的页和物理的页之间建立映射,完成线性到物理地址的转换.线性地址空间的页…
x86保护模式-七中断和异常 386相比较之前的cpu   增强了中断处理能力   并且引入了 异常概念 一 80386的中断和异常 为了支持多任务和虚拟存储器等功能,386把外部中断称为中断    把内部中断称为异常 最多支持256中断或异常 1.中断 中断是由异步的外部事件引起的.外部事件及中断响应与正执行的指令没有关系. 通常中断对应i/o操作的完成,cpu中intr引脚接受外部的可屏蔽的中断请求,NMI引脚接受外部不可屏蔽的中断请求. EFLAGS标志寄存器中的IF标志决定是否屏蔽可屏蔽…
x86保护模式     实模式与保护模式切换实例 实例一 逻辑功能   以十六进制数的形式显示从内存地址110000h开始的256个字节的值    实现步骤: 1  切换保护方式的准备 2. 切换到保护方式 3. 把指定内存区域的内容传送到位于常规内存的缓冲区中 4. 切换回实模式 5. 显示缓冲区内容   代码: 386保护模式汇编语言程序用到的包含文件如下所示,该包含文件在后面的程序中还要用到. ;名称:386SCD.INC ;功能:符号常量等的定义 ;-------------------…
x86保护模式    任务状态段和控制门 每个任务都有一个任务状态段TSS     用于保存任务的有关信息     在任务内权变和任务切换时  需要用到这些信息    任务内权变的转移和任务切换  一般需要通过控制门进行这些转移. <一>   系统段描述符 系统段是为了实现存储管理机制所使用的一种特别的段 任务状态段TSS和局部描述符表LDT段   用于描述系统段的描述符成为系统段描述符 1.描述符格式 与存储段描述符类似   区别位属性字节中的描述符类型为DT的值 DT=1为存储段    D…
控制转移可以分为两大类  :同一任务内的控制转移    和   任务间的控制转移(任务切换) 同一个任务内的控制转移可以分为段内转移 .特权级不变的段间转移和特权级改变的段间转移 段内转移与实模式相同 不涉及特权级变换和任务切换  只有段间转移才涉及特权级变换和任务切换任务  重点为任务内的特权级变换和任务间的切换   一 任务内无特权级变换的转移 1.段间转移指令 jmp  call    ret    int    iret   都具有段间转移功能   另外中断和异常也将引起段间转移   其…
分段管理机制 段选择子和偏移地址的二维虚拟地址转换为一维的线性地址 一  段定义和虚拟地址到线性地址的转换 三个参数定义段:段基地址    段界限  和段属性    同时也是段描述符的结构 段基地址为段的开始地址   386下为32位   可以在线性地址空间中的任何一个字节开始 段界限规定段的大小    保护模式下用20位表示     段界限的单位分为字节和4k字节两种    由段属性中的g位表示    粒度值为0是字节   为1是4k字节 字节单位  则界限为从1到1m(2的20次方) 4k字…
控制寄存器和系统地址寄存器 控制寄存器    crx cr0   指示cpu工作方式的控制位  包含启用和禁止分页管理机制的控制位  包含控制浮点协处理器操作的控制位   注意必须为0的位 cr2和cr3   分页管理机制使用    1.保护控制位 cr0中位0  pe表示  为0实模式   为1  保护模式 位31 pg表示 为0 禁用分页      为1启用分页管理机制 注意1.不存在   pe为0  且pg为1的情况   即   实模式下开启分页机制 2.改变pg位     只有当所执行的…
一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 (3)虚拟8086模式:这种方式可以使用户在保护模式下运行8086程序(比如cmd打开的console窗口,就是工作在虚拟8086模式) 有几点需要特别说明: (1)保护模式可分为16位和32位的,由段描述符中的D标志指明.对于32位代码段和数据段,这个标志总是设为1:对于16位代码和数据段,这个标…
首先来段题外话:之前我发现我贴出的代码都没有行号,给讲解带来不便.所以从现在起,我要给代码加上行号.我写博客用的这个插入代码的插件,确实不支持自动插入行号.我真的没有找到什么好方法,无奈之下,只能按照网友的说法,在VIM中给每行代码加上行号,然后再贴出来. 在VIM中每一行都添加上行号的方法是: :%s/^/\=line(".")/ 对,只要执行这个命令就可以了.至于为什么这样写,可以参考我的另一篇博文 <在VIM中添加行号的方法>http://blog.csdn.net/…