首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

请大家讲讲32位保护模式下段寄存器的作用!该怎么处理

2012-02-11 
请大家讲讲32位保护模式下段寄存器的作用!发现在保护模式下esp,ebp分别对应着堆栈在内存中的线性地址,如0x

请大家讲讲32位保护模式下段寄存器的作用!
发现在保护模式下esp,ebp分别对应着堆栈在内存中的线性地址,如0x22fd50,0x22fd74,而此时的ss段寄存器的值是0x23,那么段寄存器ss的作用是什么?ss和esp的关系是什么?

[解决办法]
段描述符!
[解决办法]
如果楼主理解了保护模式下通过描述符来寻址内存段的机制,这个问题就不是问题了。建议看一看描述符的概念。推荐书籍:《自己动手写操作系统》或者《80x86汇编语言程序设计教程》
[解决办法]
ss-> 段描述符,而其中又包含段基址,界限,段属性等其他信息。通过
基址与偏移相加从而形成线形地址。
[解决办法]
保护模式下,逻辑地址仍然采用“段:偏移地址”的形式,只是16位段寄存器中存放的不再是20位段起始地址的高16位,而是段号(段描述符),使用它查找段描述符表(记录若干段的相关信息),得到这个段32位的起始地址,再加上偏移地址,就得到了这个存储单元的32位线性地址。线性地址不是物理地址,还不能根据它来访问内存单元。线性地址被划分成页号和页内地址2部分,根据页号查找一张页表,得到这个页在内存中真实的起始地址,加上页内地址,得到物理地址。
[解决办法]
段寄存器里装的是段选择符,用来在全局描述符表或者局部描述符表里找到要找的描述符,也就是用作这两个表的偏移量,至于这两个表是什么就不是这个问题要讨论的了,哈哈……

热点排行