Intel 80x86 寻址模式

随着进一步的研究,我们会逐渐接触到你的电脑配置模式的内在联系,和设计原则。在这些,解决计算机是一个非常重要的概念,我们需要很好地理解了什么。

一.预赛:

(1)作数

在接触寻址方式之前,我们还要先了解一下操作数的概念,依据操作数存放方式的不同,我们能够将操作数分成3类,

1.马上操作数:操作数包括在本条指令中。

2.寄存器操作数:操作数存放在CPU的某个寄存器中。

3.存储器(内存)操作数:操作数存放在存储器中;

(2)逻辑地址

逻辑地址 = 段地址(存储单元所在逻辑段地址)左移4位 + 偏移地址(该单元的偏移地址)

我们能够发现。这是通过左移的方式将16位扩展成了20位,当初好像由于为了方便处理兼容问题。才採用这样的扩展方式的。

段 是内存设计模型的结果,在80x86内存模型中,各处理器的地址空间不一致(由于要保持兼容性),但它们都被切割成以64KB为单位的区域,每一个这种区域称为段。

note:不同的段地址和偏移地址可能组成同样的内存地址,如:(段地址(左移4为后):A0000,偏移地址FFFF。终于地址AFFFF;  段地址(左移4位后):AFFF0,偏移          地址000F,终于地址AFFFF)。

二.寻址方式的分类:

操作数类型的同样。也会导致寻址方式类型的差异。寻址方式能够分为三大类:

(1)马上寻址:操作数是马上操作数;MOV AL。1234H

(2)寄存器寻址:操作数是寄存器操作数;MOV DS,AX

(3)存储器操作数的寻址又能够分为5种:

1.直接寻址:偏移地址直接存放在存储器中;MOV BX,DS:[1234H]

2.寄存器间接寻址:将操作数在存储器中的地址放到寄存器中,先从寄存器中取出操作数的地址,再从存储器相应的内存单元中取出操作数;MOV AL,[BX]

一般的寄存器默认的是DS(数据段)。BP寄存器默认的是SS(堆栈段);

3.基址寻址:存储单元的偏移地址为规定的基址寄存器(BX, BP)的内容与一个常量得喝,MOV DL,DS:[BX+2]

4.变址寻址:MOV DL,[DI+2]

5.基址+变址寻址

说的比較浅。主体的内容大致就这些了。有些地方仅仅这是在传球,无特殊说明,有兴趣的同学可以自己做。上网查资料,看。

版权声明:本文博主原创文章。博客,未经同意不得转载。

时间: 2024-07-28 14:06:04

Intel 80x86 寻址模式的相关文章

X86/X64处理器体系结构及寻址模式

由8086/8088.x86.Pentium发展到core系列短短40多年间,处理器的时钟频率几乎已接近极限,尽管如此,自从86年Intel推出386至今除了增加一些有关流媒体的指令如mmx/sse之外,其他新增的大多数指令都可以从最初的指令集中组合实现同样的功能,整个编程模型维持了约有20多年. 1. 处理器体系结构 1.1. 处理器简要结构 我们都知道CPU的根本任务就是执行指令,对计算机来说最终都是一串由"0"和"1"组成的序列.CPU从逻辑上可以划分成3个模

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

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

解决 cocos2dx iOS/mac 设置纹理寻址模式后纹理变黑的问题

sprite:getTexture():setTexParameters(gl.LINEAR,gl.LINEAR,gl.REPEAT,gl.REPEAT) 在安卓设备上,设置了纹理自定义寻址模式,纹理图片的宽高大小可以任意设置,但在ios或者mac设备上,纹理图片的大小一定要是2的n次方,不然渲染出来的 精灵就会成黑色.

D3D11_TEXTURE_ADDRESS_MODE(纹理寻址模式)

最近在学习D3D11,看到如下:  SamplerState samColor { Filter = MIN_MAG_MIP_LINEAR; AddressU = Clamp; AddressV = Clamp; }; 不太理解,查阅了相关的D3D11SDK 以及一些其他资料,总结如下: 在D3D11中,纹理坐标系统是由水平的u 轴和竖直的v轴构成的,由u.v坐标系确定纹理的每个像素:u.v的取值范围为[0,1].实际上纹理坐标可以超出这个值,它通过Direct3D的寻址模式定义的.通常的寻

80X86保护模式及其编程(一)

80x86系统寄存器和系统指令 1.标志寄存器(EFLAGS) 标志寄存器EFLAGS的标志位含义如下图: TF 位8是跟踪标志(Trace flag),当设置该位时可为调试操作启动单步执行方式.复位时则禁止单步执行.在单步执行方式下,处理器会在每个指令执行后产生一个调试异常,这样我们可以观察执行程序在每条指令执行后的状态. IOPL 位13-12时I/O特权级(I/O Privilege Level)字段.该字段指明当前运行程序或任务的I/O特权级别IOPL.当前任务或程序的CPL必须小于这个

Intel 80X86寄存器分类介绍(转)

开始读Linux内核相关书籍时,在书店里碰到一个计算机专业科班出身的朋友,向他请教时,他认为学习Linux内核不需要汇编和计算机体系结构等相关的知识.可是结合到现在的学习经历,我却越来越觉得为了搞清楚Linux内核相关设计和运行原理,自己那点自学来的汇编知识不但不够,还大大的需要补充.本文是我今日对微处理器寄存器学习总结所得,主要是翻译自<Intel 微处理器英文第7版>,阅读的过程中我参考了网上可以下载到的该书第六版的中文版和一篇关于寄存器在Visual Stdio 编译器中惯用方法的文章&

操作系统学习(一)、80x86保护模式内存管理

整理的不好,凑合着看吧 目录 1.内存及寻址 2.地址变换 3.分段机制 4.分页机制 5.保护 6.去到底部 一.内存及寻址 返回目录 二.地址变换 80X86 从 逻辑地址 到 物理地址 的转换:第一阶段是使用分段机制把程序的 逻辑地址变换成处理器可寻址的内存空间(称为线性地址空间)中的地址. 第二阶段使用分页机制把线性地址转换为物理地址. 在地址变换的过程中, 第一阶段的分段变换机制总是使用,第二阶段的分页机制是可选的,如果没有启用分页机制,那么分段机制产生的线性地址空间就直接映射到处理器

Intel 80x86 寻址方式

随着学习的深入,我们会逐渐接触到计算机内部的构造方式,以及设计原理,这其中,计算机的寻址方式是一个很重要的概念,我们需要好好理解一下. 一.预备知识: (1)操作数 在接触寻址方式之前,我们还要先了解一下操作数的概念,根据操作数存放方式的不同,我们可以将操作数分成3类, 1.立即操作数:操作数包含在本条指令中: 2.寄存器操作数:操作数存放在CPU的某个寄存器中: 3.存储器(内存)操作数:操作数存放在存储器中: (2)逻辑地址 逻辑地址 = 段地址(存储单元所在逻辑段地址)左移4位 + 偏移地

七寻址模式寄存器

一.寄存器 总共同拥有14个16位寄存器,8个8位寄存器 通用寄存器: 数据寄存器: AH(8位)  AL(8位)  AX(16位)   (AX和AL又称累加器) BH(8位)  BL(8位)  BX(16位)   (BX又称基址寄存器,唯一作为存储器指针使用寄存器) CH(8位)  CL(8位)  CX(16位)   (CX用于字符串操作,控制循环的次数,CL用于移位) DH(8位)  DL(8位)  DX(16位)   (DX一般用来做32位的乘除法时存放被除数或者保留余数) 指针寄存器: