[保护模式]段寄存器

1.段寄存器结构

段寄存器一共96位,但是可见部分只有16位

Struct SegMent
{
    WORD Selector;     //16位段选择子
    WORD Attributes; //16位属性
    DWORD Base;     //32位基址
    DWORD Limit;    //32位段限长
}

其中红色部分就是段选择子

Selector

2.段寄存器的读写:

  读段寄存器:

    比如:MOV AX,ES  只能读16位的可见部分

    读写LDTR 的指令为:SLDT/LLDT

    读写TR的指令为:STR/LTR

  写段寄存器:

    比如:MOV DS,AX 写的时候是写96位

原文地址:https://www.cnblogs.com/hanhandaren/p/11163622.html

时间: 2024-10-12 13:08:15

[保护模式]段寄存器的相关文章

IA-32 保护模式下寄存器一览

最近在看张银奎先生的<调试软件>一书,想将关键的技术记录下来,以便日后查阅,也分享给想看之人吧. 1 通用寄存器 EAX,EBX,ECX,EDX:用于运算的通用寄存器,可以使用AX,BX等16位或AL,AH等8位短寄存器,访问长寄存器的相应地址 ESP,EBP:Extended Stack/Base Pointer,指栈顶和当前栈的起始地址 ESI,EDI:源和目标寄存器,比如在循环操作中,与ECX组合,分别表示计数器(ECX),起始数(ESI),目标数(EDI) 64位扩展通用寄存器:RAX

[保护模式]段描述符属性_P位_G位

1.P位 P = 1 段描述符有效 P = 0 段描述符无效 2.段描述符与段寄存器的对应关系 Struct SegMent { WORD Selector; //16位段选择子 WORD Attributes; //16位属性 对应的高4字节,从8位开始到23位结束 刚好16字节 DWORD Base: //32位基址 由三部分组成 最高位为高四字节的24-31位 ,第二部分位高四字节的第0-7位,第三部分为低四字节的16-31位 DWORD Limit: //32位段限长 两部分组成,高位在

进入保护模式

本文为<x86汇编语言:从实模式到保护模式> 第11章笔记 以下图2, 图4和图5截自Intel手册 全局描述符表 全局描述符表中存放着段描述符, 每个段描述符8个字节. 为了跟踪全局描述符表, 处理器内部有一个48位寄存器, 叫做全局描述符表寄存器(GDTR), GDTR分为两部分,分别为32位的线性地址和16的边界, 32位线性基地址部分保存的是全局描述符表在内存中的起始线性地址, 16位边界部分是全局描述符表的边界(界限), 其值等于表的大小(总字节数) - 1, 因为从偏移0开始. 如

第04章 保护模式入门

1 实模式 1.1 实模式缺点 保护模式强调的是保护,是在Intel 80286中首次出现. 实模式的特点: 实模式下,操作系统和用户程序属于同一特权级. 用户程序所使用的地址都指向真实的物理地址,也就是说逻辑地址等于物理地址 用户程序可以使用任意段基址,修改内存中任意数据. 访问超过64KB数据需要切换段基址 一次只能运行一个程序 共20条地址线,最大可寻址的内存为1MB 为了克服这种不安全的内存管理.处理器厂商,开发出保护模式.物理内存不能直接被程序访问,程序内部的地址需要被转化位物理地址再

保护模式_1_段寄存器_段描述符_段选择子

1 段寄存器 1-1 段寄存器的结构 图示: 结构体表示: struct SegMent { WORD Selector; WORD Attribute; DWORD Base; DWORD Limit; } 1-2 段寄存器的属性探测 可以通过MOV指令进行读写(LDTR和TR除外) 段寄存器成员简介 探测Attribute是否存在 int var=0; int main() { __asm { mov ax, ss //cs不行 cs是可读 可执行 但不可写 mov ds, ax mov d

x86CPU 实模式 保护模式 傻傻分不清楚? 基于Xv6-OS 分析CR0 寄存器

基于Xv6-OS 分析CR0 寄存器 之前一直觉得晕乎乎的...啥?什么时候切换real model,怎么切换,为什么要切换? ------------------------------------------------------------------------------------------------------------------------------------------- 下面这段代码来自Xv6的boot/boot.S 这就是CPU real model 和 pr

0.11之路(四):从实模式到保护模式

(一)关中断并将system移动到内存地址起始位置 0x00000 将CPU的标志寄存器(EFLAGS)中的中断允许标志(IF)置0.这样系统不会再响应中断,直到main函数中能够适应保护模式的中断服务体系重建完毕才会打开,那时候响应中断的服务程序将不再是BIOS提供的中断服务程序,而是系统自身提供的. 就是要完成实模式下的中断向量表和保护模式下的中断描述符表(IDT)的交接工作.借助关中断(cli)和开中断(sti)完成这个过程的创建,即在创建过程中不能去响应中断,否则没有对应的中断程序,系统

CPU 实模式 保护模式 和虚拟8086模式

从80386开始,CPU有三种工作方式:实模式,保护模式和虚拟8086模式.只有在刚刚启动的时候是real-mode,等到操作系统运行起来以后就切换到protected-mode.实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存.在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持; 支持多任务,能够快速地进行任务

80x86保护模式下IDT和中断调用过程分析

1.中断描述符表(IDT),将每个异常或中断向量分别与它们的处理过程联系起来.与GDT和LDT类似,IDT也是由8字节长度的描述符组成.IDT空描述符的存在标志位必须是0.IDT表可以驻留在线性地址空间的任何地方,处理器使用IDTR寄存器来定位IDT表的位置. LIDT指令可以把内存中的限长值和基地址操作数加载到IDTR寄存器中,该指令仅能由当前特权级CPL是0的代码执行,通常被用于创建IDT时的操作系统初始化代码中.SIDT作用相反,但可以在任何特权级执行. 2.IDT描述符 IDT表中可以存