社区
汇编语言
帖子详情
关于实方式到保护方式的切换
fjyangzb
2011-05-13 06:07:48
杨季文的80X86中用以下方式实现从实方式到保护方式的切换:JUMP MACRO selector,offsetv
DB OEAH
DW offsetv
DW selector
ENDM
我们都知道选择子只占高13位,现在他直接用selector装入CS中,这不是覆盖了CS中的低三位RPL了吗,这样CPU在从CS中取出高13位的选择子不就产生了错误了吗?
...全文
76
9
打赏
收藏
关于实方式到保护方式的切换
杨季文的80X86中用以下方式实现从实方式到保护方式的切换:JUMP MACRO selector,offsetv DB OEAH DW offsetv DW selector ENDM 我们都知道选择子只占高13位,现在他直接用selector装入CS中,这不是覆盖了CS中的低三位RPL了吗,这样CPU在从CS中取出高13位的选择子不就产生了错误了吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Areslee
2011-05-13
打赏
举报
回复
自己看描述符的定义
8/16/24/32才是不同的描述符,如果是LDT或DPL不同,低3位再加上相应的值
fjyangzb
2011-05-13
打赏
举报
回复
[Quote=引用 7 楼 cnzdgs 的回复:]
例如选择子8和9都表示第1个描述符,装入时处理器会忽略低两位,所以8和9是一样的。
[/Quote]那么是不是8和9表示第1个描述符,但8的RPL是0而9的RPL是1?如果我将一个8的倍数的索引装入CS,是不是意味着TI和RPL都为0?
cnzdgs
2011-05-13
打赏
举报
回复
例如选择子8和9都表示第1个描述符,装入时处理器会忽略低两位,所以8和9是一样的。
cnzdgs
2011-05-13
打赏
举报
回复
索引值在选择子中就是放在高位的.
fjyangzb
2011-05-13
打赏
举报
回复
cnzdgs你是说CPU会自己将索引左移到高13位然后自己设置TI位和RPL吗
fjyangzb
2011-05-13
打赏
举报
回复
指令完全没有考虑TI位和RPL
cnzdgs
2011-05-13
打赏
举报
回复
处理器会自动处理低两位。
fjyangzb
2011-05-13
打赏
举报
回复
是我解释错了,是描述符索引只占选择子的高13位,但那杀JUMP指令直接将一个描述符索引装入CS中,不就错误了吗
大熊猫侯佩
2011-05-13
打赏
举报
回复
谁说选择子是13位,应该是16位
实
模式、保护模式的区别
实
模式保护模式
切换
方法
实
模式保护模式区别 从80386开始,cpu有三种工作
方式
:
实
模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。
实
模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。 在保护模式下,全部32条地址线有效,可寻址高达4G字节的
从
实
模式到保护模式
上节Boot成功加载loader到内存并且将控制权交给他,突破了512字节的限制,loader程序没有体积上的限制 这节就
实
战编写loader
实
现从
实
模式到保护模式再返回
实
模式 目录 1、从
实
模式到保护模式 1、从计算机的历史谈起 2、CPU历史的里程碑 - 8086 3、80286的登场 4、初识保护模式 5、80386的登场(计算机新时期的标志) 4、编程
实
验 2、深入保护...
实
模式与保护模式
切换
(一)
基于网上的一些博客的基础上,我对操作系统中
实
模式与保护模式的
切换
,做了一点整理,仅供参考,这篇写的是从
实
模式进入到保护模式。 在从
实
模式进入到保护模式之前,要先对GDT(全局描述符表),GDT段选择子,数据段,全局堆栈段进行定义。 对全局描述符表定义 org 0100h ;加载到偏移地址0100处 jmp LABEL_BEGIN ;跳入到16位代码段(
实
模式)进行各个数据段,代码段,堆栈段的初始化,最后跳入到保护模式 ; 对GDT定义 ;SECTION.g
如何从
实
模式到保护模式?
实
模式到保护模式,如何进入保护模式 在还是16位CPU的天下时,并没有
实
模式这一说。直到CPU发展到32位,推出保护模式后,为了区别两种模式,便将之前的模式称为
实
模式。处于向下兼容的考虑,现代的CPU依然保持对16位模式的兼容,刚开机时,32位的CPU是先处于16位的
实
模式的,而后再进入保护模式。 一、
实
模式 1.
实
模式的特点 1、地址总线只使用了20根,寻址范围为220B=1MB。 2、寄存器只使用了16位,所以如果只用单一的寄存器来寻址的话只能访问到216B=64KB的空间。 3、分段,访问内存采用
实
模式->保护模式->
实
模式 的
切换
步骤
实
模式->保护模式->
实
模式 的
切换
步骤 1、设置必要的
实
模式环境,如
实
模式下的堆栈等。 2、初始化全局描述符表(GDT)、局布描述符表(LDT)及中断描述符表(IDT)等。 3、保存
实
模式下的堆栈地址到某内存处,以便
切换
回
实
模式后恢复,如有必要也可保存DS、ES、FS、GS等数据段寄存器的值。 4、加载全局描述符表至全局描述符表寄存器(GDTR),如果未定义中断描述符表,则关中断,
汇编语言
21,499
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章