您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-01 原文发表:2007-08-31 人气:68 来源:未知

本文章共3744字,分3页,当前第2页,快速翻页:
 

在每次把虚拟地址转换为线性地址的过程中,要对偏移进行检查。如果偏移不在有效的范围内,那么就引起异常。
段属性规定段的主要特性。例如上面已经提到的段粒度G就是段属性的一部分。在对段进行各种访问时,将对访问是否合法进行检查,主要依据是段属性。例如:如果向一个只读段进行写入操作,那么不仅不能写入,而且会引起异常。在下面会详细说明各个段熟属性位的定义和作用。
逆风者

<二>存储段描述符

用于表示上述定义段的三个参数的数据结构称为描述符。每个描述符长8个字节。在保护方式下,每一个段都有一个相应的描述符来描述。按描述符所描述的对象来划分,描述符可分为如下三类:存储段描述符、系统段描述符、门描述符(控制描述符)。下面先介绍存储段描述符。
1.存储段描述符的格式
存储段是存放可由程序直接进行访问的代码和数据的段。存储段描述符描述存储段,所以存储段描述符也被称为代码和数据段描述符。存储段描述符的格式如下表所示。表中上面一排是对描述符8个字节的使用的说明,最低地址字节(假设地址为m)在最右边,其余字节依次向左,直到最高字节(地址为m 7)。下一排是对属性域各位的说明。
存储段
描述符
m 7
m 6
m 5
m 4
m 3
m 2
m 1
m 0
Base(31...24)
Attributes
Segment Base(23...0)
Segment Limite(15...0)

存储段
描述符
属 性
Byte m 6
Byte m 5
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
G
D
0
AVL
Limit(19...16)
P
DPL
DT1
TYPE

从上表可知,长32位的段基地址(段开始地址)被安排在描述符的两个域中,其位0—位23 安排在描述符内的第2—第4字节中,其位24—位31被安排在描述符内的第7字节中。长20 位的段界限也被安排在描述符的两个域中,其位0—位15被安排在描述符内的第0—第1字节中,其位16—位19被安排在描述符内的第6字节的低4位中。
使用两个域存放段基地址和段界限的原因与80286有关。在80286保护方式下,段基地址只有24位长,而段界限只有16位长。80286存储段描述符尽管也是8字节长,但实际只使用低 6字节,高2字节必须置为0。80386存储段描述符这样的安排,可使得80286的存储段描述符的格式在80386下继续有效。
80386描述符中的段属性也被安排在两个域中。下面对其定义及意义作说明。
(1)P位称为存在(Present)位。P=1表示描述符对地址转换是有效的,或者说该描述符所描述的段存在,即在内存中;P=0表示描述符对地址转换无效,即该段不存在。使用该描述符进行内存访问时会引起异常。
(2)DPL表示描述符特权级(Descriptor Privilege level),共2位。它规定了所描述段的特权级,用于特权检查,以决定对该段能否访问。
(3)DT位说明描述符的类型。对于存储段描述符而言,DT=1,以区别与系统段描述符和门描述符(DT=0)。
(4)TYPE说明存储段描述符所描述的存储段的具体属性
其中的位0指示描述符是否被访问过(ACCESSed),用符号A标记。A=0表示尚未被访问,A=1 表示段已被访问。当把描述符的相应选择子装入到段寄存器时,80386把该位置为1,表明描述符已被访问。操作系统可测试访问位,已确定描述符是否被访问过。
其中的位3指示所描述的段是代码段还是数据段,用符号E标记。E=0表示段为数据段,相应的描述符也就是数据段(包括堆栈段)描述符。数据段是不可执行的,但总是可读的。 E=1表示段是可执行段,即代码段,相应的描述符就是代码段描述符。代码段总是不可写的,若需要对代码段进行写入操作,则必须使用别名技术,即用一个可写的数据段描述符来描述该代码段,然后对此数据段进行写入。
 

本文章更多内容<<上一页 - 1 - 2 - 3 - 下一页>>
相关文章

输入/输出保护
IDE的选择与配置
汇编语言中‘子程序’的设计方法
虚拟设备驱动程序结构
用 MASM32 编写通用游戏改器流程
8086/8088指令系统
伪操作
Kmdkit的下载和安装
创建简单的窗口
数据转换操作
HELLO WORLD进阶汇编程序系列
汇编语言的艺术(组合语言的艺术)--基本认
汇编语言---程式设计 (2)
汇编语言---程式设计 (3)
汇编语言的艺术(组合语言的艺术)--基本认
用汇编编写DOS下的内存驻留程序(2)
汇编语言---程式设计 (1)
用汇编编写DOS下的内存驻留程序(4)
汇编语言的准备知识-给初次接触汇编者4
汇编语言的艺术(组合语言的艺术)--基本认

相关评论


本文章所属分类:首页 汇编技术

  热门关键字:
进制数据输出的通用程序 2007-09-12
汇编源码--showmem 2007-08-31
汇编源码--CLEAN 2007-08-31
汇编源码--hdr 2007-08-31
汇编源码--basload 2007-08-31
汇编源码--CHAR 2007-08-31
汇编源码--fxn 2007-08-31
汇编源码--alarm 2007-08-31
汇编源码--getsect 2007-08-31
汇编源码--DEV 2007-08-31
汇编源码--getspace 2007-08-31
汇编源码--frespace 2007-08-31
CIH文件型病毒检测消除程序 2007-08-31
Mixer Volume Ctrler V1.0 2007-08-31
汇编源码--COMINT 2007-08-31
自己用汇编语言写的一个病毒(源码... 2007-08-31
汇编源码--col 2007-08-31
汇编源码--BURNOUT 2007-08-31