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-10-16 17:51:22

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

Intel 80x86 寻址模式

随着进一步的研究,我们会逐渐接触到你的电脑配置模式的内在联系,和设计原则.在这些,解决计算机是一个非常重要的概念,我们需要很好地理解了什么. 一.预赛: (1)作数 在接触寻址方式之前,我们还要先了解一下操作数的概念,依据操作数存放方式的不同,我们能够将操作数分成3类, 1.马上操作数:操作数包括在本条指令中. 2.寄存器操作数:操作数存放在CPU的某个寄存器中. 3.存储器(内存)操作数:操作数存放在存储器中: (2)逻辑地址 逻辑地址 = 段地址(存储单元所在逻辑段地址)左移4位 + 偏移地

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

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

汇编学习笔记(2)-80x86寻址方式

寻址方式 所谓寻址方式就是表示指令中数据所在地址的方式.一共有七种寻址方案 立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对选址 基址变质寻址 相对基址变质寻址 在此之前,先介绍一个数据复制指令 MOV 指令, 格式是 MOV AX, BX . AX, BX是寄存器上一章介绍过的MOV就是指令. 指令的含义就是将BX的值复制给AX.C语言的表述就是AX=BX; 举个例子 如果一开始 AX=5; BX=0; MOV AX,BX 之后 AX = BX 都是0: 立即数寻址 / 寄存器寻址

80X86寄存器详解&lt;转载&gt;

引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识, 自然,还是得从最基础的开始,那就从汇编语言开刀吧, 从汇编语言开刀的话,我们必须还先要了解一些其他东西, 像  CPU ,内存这些知识点还是理解深刻一点的比较好, 所以这一篇博文就绕着 80x86  CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍 . 同时在这里说明一下,本篇博文介绍的算是比较详细的了,而且介绍的知识点也是比较多的,所以造成博文长度过长, 如果有兴趣想了解这一块的话,还请自行斟酌

80x86 CPU 寄存器简介

本博文围绕80x86 CPU中寄存器的基础部分下手,着眼于CPU寄存器的特性和功能. 前言 首先介绍一下Intel CPU的发展史. Intel CPU系列,最初是4位微处理器4004,然后到8位微处理器的8008,再到8位微处理器8080,以及稍后的16位微处理器8086. 由 8086 开始,Intel 进入现在所谓的 x86 时代 . Intel 8086 为 16 位 CPU ,而因为在 8086 之前的 CPU 都是 8 位 CPU,这样也就造成了很多的外设也只支持 8 位,因此 In

80X86寄存器详解

引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识, 自然,还是得从最基础的开始,那就从汇编语言开刀吧, 从汇编语言开刀的话,我们必须还先要了解一些其他东西, 像  CPU ,内存这些知识点还是理解深刻一点的比较好, 所以这一篇博文就绕着 80x86  CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍 . 同时在这里说明一下,本篇博文介绍的算是比较详细的了,而且介绍的知识点也是比较多的,所以造成博文长度过长, 如果有兴趣想了解这一块的话,还请自行斟酌

Intel汇编语言程序设计学习笔记1

第一章 汇编器链接器:汇编器将汇编语言翻译成机器语言,链接器将单个文件合并为可执行文件 intel 80X86系列处理器的汇编语言与VAX或者motorala 68x00等系统的汇编是否相同?不相同,汇编语言和CPU指令集是密切关联的,每种CPU体系对应不同的汇编. 什么是设备驱动程序:将操作系统的通用命令转化为对硬件具体细节实现的程序 常规机器语言指的是第二层 一条机器语言会被翻译成几条微指令,微指令是商业机密 高级语言会被解释成汇编语言,汇编语言被解释成机器语言(第二层),由操作系统(第三层

20150222 IO端口映射和IO内存映射(详解S3C24XX_GPIO驱动)

20150222 IO端口映射和IO内存映射(详解S3C24XX_GPIO驱动) 2015-02-22 李海沿 刚刚我们实现了linux系统内存的分配,读写,释放功能,下面,我们一鼓作气将IO端口映射及IO内存映射搞定,加油! (一)地址的概念 1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义.物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存.BIOS等).在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址

[转]io端口和io内存

(一)地址的概念 1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义.物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存.BIOS等).在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上.        物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来决定的,因此在32 bits地址线的x86处理器中,物理地址空间是2的32次方,即4GB,但物理RAM一般不能上到4GB,因为还