`

浅谈80X86内存寻址问题

 
阅读更多

浅谈80X86内存寻址问题

一、基础知识

本文主要浅谈80x86系列处理器的内存地址的寻址问题,当然这种问题在我学习单片机的时候是没有遇到过的。当今的操作系统不需要自己来跟踪管理物理地址,而这个工作全部由处理器的内存管理单元来完成。这样的先进电路设计使得操作系统的使用更加的高效。本文中我们主要涉及80x86的硬件内存管理电路原理与linux中的使用方式。

在早期的单片机程序设计中,在我读取某个内存单元的数据时候,我会直接对这个地址进行读写。而如今,在我们学习linux时候,我们就不能这么简单的操作,首先需要了解一下简单的知识,其中包括三种地址的含义。

逻辑地址:在80X86处理器系列中,程序员所使用的地址包括两个部分,段地址+基址,这根intel的设计思路是分不开的,早期的intel芯片如8086只是简单的16位,但是为了满足不增加系统位数而扩展物理内存寻址能力的的要求,所以intel的设计师采用段机制来扩展物理内存,当时程序员使用的就是CS:IP来寻址代码,用来实现逻辑地址到线性地址的映射,其逻辑地址到物理地址的转换方式为CS*16+IP,正好是16位的线性地址,如此便得来8086总共拥有位地址总线的原因。

线性地址:首先必须有一个清楚的概念,线性地址也就是虚拟地址,linux用户进程使用的地址就是这个虚拟地址,32位的整数可以寻址2^32=4Gb的线性空间。其地址范围用HEX进制来表示就是0x00000000~0xFFFFFFFF

物理地址:物理地址就是用来寻址物理存储芯片的地址,通常也就是处理器的物理地址总线所寻址的地址空间。常常有32位等。

逻辑地址,线性地址,物理地址的转换关系如下图所示:

二、、分段机制

原始的8086系列处理器,分段采用的是段左移四位加段内偏移地址的这种模式,这也就是传统的实地址模式。但是从80286开始,Intel系列处理器增加了另一种模式,这种模式叫做保护模式(protected mode)。我们把主要的精力放在保护模式的研究上,实地址模式主要用于处理器的向前兼容,但是有一点需要提起的是,即使现在拥有保护模式的处理器,其在开机时仍然是处在实地址模式下,用于系统的启动和操作系统的早期处理。分段基址主要涉及到两点一线,两点即逻辑地址与线性地址(虚拟地址),一线即为分段管理单元。这里主要讲解的是段选择符(CS,SS,DS),段描述符,段描述符表(GDT),以及从逻辑地址到线性地址的转移过程。这里首先说明CS等逻辑段寄存器与早期逻辑段寄存器的区别。实地址模式下的段寄存器表示的是段的起始地址。而在保护模式,段寄存器的高13位(15-13bit)保存着段描述符表的索引,后面三位保存着该段的属性,如访问等级等;其结构如下图所示。

段描述符索引:用于在段描述符表中需找相应的描述符。

TI: 用于指定是在GPT还是LPT。

RPL:用于设定访问权限等级。

其中最后一项RPL用于指定访问等级,0代表最该等级,3代表最低等级。至于其中什么叫段描述符,什么叫做段描述符表在后文会有介绍。

分享到:
评论

相关推荐

    80x86指令系统与寻址方式

    寻址方式在80x86指令系统中扮演着关键角色,它决定了如何访问存储在内存中的数据。常见的寻址方式有以下几种: 1. **立即寻址**:直接在指令中包含操作数,如`MOV AX, 5`。 2. **直接寻址**:使用寄存器或内存地址...

    80X86寻址方式

    非常好的介绍80X86寻址方式的ppt。

    80x86的寻址方式.doc

    在80x86处理器中,有多种寻址方式用于访问内存中的数据或指令,这些方式允许程序更加灵活地处理数据和控制流程。以下是这些寻址方式的详细解释: 1. **立即寻址方式**: - 在这种寻址方式中,操作数直接包含在指令...

    80X86的寻址方式和指令系统-6ppt[精选].pptx

    80X86的寻址方式和指令系统-6ppt[精选].pptx

    80x86汇编语言程序设计.zip

    这一部分会讲解80x86的寻址模式,如立即寻址、直接寻址、间接寻址、相对寻址等,以及如何在不同寻址模式下使用指令。 5. **第5章** - 子程序与宏指令 学习如何编写子程序,理解堆栈在过程调用中的作用,以及如何...

    80x86课件ppt

    3. **80x86的扩展**:随着技术的发展,后来的80x86处理器增加了数据宽度,80286支持24位地址线,可寻址16MB内存;80386则扩展到了32位,寻址能力达到4GB。 4. **保护模式与实模式**:80x86处理器有实模式和保护模式...

    80x86汇编语言程序设计答案

    3. **寻址模式**: 80x86支持直接、间接、相对、基址加偏移等多种寻址方式,使得数据访问更加灵活。例如,立即寻址(`MOV AX, 100H`)、直接寻址(`MOV AX, [2000H]`)、寄存器间接寻址(`MOV AX, [BX]`)等。 4. **...

    80x86汇编语言程序设计教程80x86汇编语言程序设计教程

    这个80x86汇编语言程序设计教程可能包含以下内容:基础概念介绍、指令系统详解、寻址方式分析、流程控制结构的实现、内存管理、输入/输出操作、子程序设计以及实际案例分析。封面.bmp可能是教程的封面图片,介绍.doc...

    80x86的指令系统和寻址方式

    80x86的指令系统和寻址方式是汇编语言编程的基础,它定义了处理器如何执行各种操作和访问内存中的数据。80x86架构是Intel公司开发的一系列微处理器,包括8088、80286、80386等,这些处理器都使用了类似的指令集和...

    80x86汇编课件

    例如,立即寻址(#data)用于直接提供常数值,寄存器寻址(reg)用于使用寄存器中的值,直接内存寻址([address])用于访问内存单元。 汇编语言的程序设计还包括流程控制结构,如顺序执行、分支(IF-THEN-ELSE)、...

    汇编语言教程80x86 详细教程电子教案

    此外,80x86使用分段内存模型,通过基址和偏移量的方式来访问内存,这使得在有限的物理地址空间内可以寻址更大的虚拟内存。同时,了解处理器的中断系统也至关重要,因为中断是处理外部事件和实现操作系统功能的核心...

    《80x86汇编语言程序设计》 课件下载

    2. **寻址模式**:80x86支持多种寻址模式,如直接寻址、立即寻址、寄存器寻址、间接寻址、基址加变址寻址等。这些寻址模式提供了灵活性,使得程序员可以高效地访问内存中的数据。 3. **程序设计基础**:了解如何...

    80x86汇编语言程序设计教程.rar

    80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程....

    杨季文《80X86汇编语言程序设计教程》全书

    《80X86汇编语言程序设计教程》是由杨季文编著的一本深入浅出的汇编语言学习教材,旨在帮助读者掌握80X86架构下的汇编编程技术。80X86汇编语言是针对Intel 8086、80286、80386及后续处理器系列设计的一种低级编程...

    80x86汇编语言程序设计

    在80x86汇编中,寻址模式是关键的概念。寻址模式决定了如何访问存储器中的数据,如直接寻址、立即寻址、寄存器寻址、间接寻址等。每种寻址模式都有其特定的应用场景,能帮助程序员灵活地处理数据。 程序设计时,要...

    80X86寻址方式与指令系统.pdf

    80X86寻址方式与指令系统.pdf

    80X86汇编语言与计算机体系结构 中文版

    2. 寻址模式:80X86支持多种寻址模式,如直接寻址、间接寻址、基址加变址寻址等,这些寻址模式可以灵活地访问内存中的数据。 3. 注册表:80X86处理器有多个通用寄存器(如AX、BX、CX、DX、SI、DI、BP、SP)和特殊...

    《80X86汇编语言程序设计上机指南》许向阳 配套光盘.rar

    许向阳的《80X86汇编语言程序设计上机指南》是一本深入浅出的教程,旨在帮助读者理解和掌握80X86处理器的汇编语言编程技术。这本书的配套光盘包含了书中的所有源代码,为学习者提供了实践操作的机会。 汇编语言是一...

    32位 80x86 汇编语言基础(课件+附件software)

    80x86汇编支持多种寻址模式,包括直接寻址、立即寻址、间接寻址、基址加偏移量寻址、索引寻址等。这些寻址模式使得程序员可以根据需要灵活地访问内存。 六、堆栈操作 堆栈在程序设计中扮演重要角色,80x86汇编中的...

Global site tag (gtag.js) - Google Analytics