七寻址模式寄存器

一、寄存器

总共同拥有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位的乘除法时存放被除数或者保留余数)

指针寄存器:

SP 堆栈指针 (存放栈顶地址)

BP 基址指针 (存放堆栈基址偏移)

变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元開始地址的偏移,

即作为存储器(短)指针使用。作为通用寄存器,它们能够保存16位算术逻辑运算中的操

作数和运算结果,有时运算结果就是须要的存储单元地址的偏移.

SI 源地址  (源变址寄存器)

DI 目的地址 (目的变址寄存器)

控制寄存器:

IP 指令指针

FLAG 标志寄存器

 ① 进位标志 CF。记录运算时最高有效位产生的进位值。

   ② 符号标志 SF,记录运算结果的符号。结果为负时置1。否则置0。

   ③ 零标志  ZF。运算结果为0时ZF位置1。否则置0。

   ④ 溢出标志 OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1。否则置0。

   ⑤ 辅助进位标志 AF,记录运算时第3位(半个字节)产生的进位值。

   ⑥ 奇偶标志 PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。

当结果操作数中1的个数为偶数时置1,否则置0。

段寄存器

CS 代码段  IP

DS 数据段

SS 堆栈段  SP BP

ES 附加段

二、七种寻址方式:

1、马上寻址方式:

操作数就包括在指令中。作为指令的一部分,跟在操作码后存放在代码段。

这样的操作数成为马上数。马上数能够是8位的。也能够是16位的。

比如:

指令: MOV AX,1234H

则: AX = 1234H

2、寄存器寻址方式:

操作数在CPU内部的寄存器中,指令指定寄存器号。

对于16位操作数,寄存器能够是:AX、BX、CX、DX、SI、DI、SP和BP等。

对于8位操作数,寄存器能够是AL 、AH、BL、BH、CL、CH、DL、DH。

这样的寻址方式因为操作数就在寄存器中,不须要訪问存储器来取得操作数

因而能够取得较高的运算数度。

3、直接寻址方式:

操作数在寄存器中,指令直接包括有操作数的有效地址(偏移地址)

注:操作数一般存放在数据段

所以操作数的地址由DS加上指令中直接给出的16位偏移得到。假设採用

段超越前缀。则操作数也可含在数据段外的其它段中。

比如:

MOV AX,[8054]

如(DS) = 2000H,

则运行结果为(AX) = 3050H

(物理地址=20000+8054=28054H)

28054H里的内容为3050H

在汇编语言指令中,能够用符号地址取代数值地址

如:MOV AX,VALUE

此时VALUE为存放操作数单元的符号地址。

如写成:MOV AX,[VALUE]也是能够的,两者是等效的。

如VALUE在附加段中,则应指定段超越前缀例如以下:

MOV AX,ES:VALUE 或 MOV AX,ES:[VALUE]

4、寄存器间接寻址方式:

操作数在寄存器中,操作数有效地址在SI、DI、BX、BP

这四个寄存器之中的一个中。在普通情况下。假设有效地址在

SI、DI和BX中,则以DS段寄存器中的内容为段值。假设

有效地址在BP中。则以SS段寄存器中的内容为段值

比如:

MOV AX,[SI]

假设(DS) = 5000H (SI) = 1234H

则物理地址 =  50000 + 1234 = 51234H

51234H地址中的内容为:6789H

运行该指令后,(AX) = 6789H

5、寄存器相对寻址方式:

操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)

或变址寄存器(SI、DI)的内容加上指令中给定的8位或16位位移量之和

BX  8位 位移量

EA(有效地址) =  BP  +

SI  16位 位移量

DI

在普通情况下。假设SI、DI、或BX中的内容作为有效地址的一部分,那么

引用的段寄存器是DS;假设BP中的内容作为有效地址的一部分,那么引用的

段寄存器是SS。

物理地址 = 16d × (DS) + (BX) + 8

或(SI)或16位位移量

或(DI)

物理地址 = 16d × (SS) + (BP) + 8位位移量

或16位位移量

在指令中给定的8位或16位位移量採用补码形式表示。

在计算有效地址时,如

位移量是8位,则被带符号扩展成16位。

比如:

MOV AX,[DI+1223H]

如果。(DS) = 5000H。(DI) = 3678H

则物理地址 = 50000 + 3678 + 1233 = 5489BH

5489BH地址中的内容:55AAH

运行该指令后AX = 55AAH

以下指令中,源操作数採用寄存器相对寻址,引用的段寄存器是SS: MOV BX,[BP-4]

以下指令中,目的操作数採用寄存器相对寻址。引用的段寄存器是ES: MOV ES:[BX+5],AL

指令:MOV AX,[SI+3]与MOV AX,3[SI]是等价的

6、基址加变址寻址方式:

操作数在寄存器中,操作数的有效地址由:

基址寄存器之中的一个的内容与变址寄存器之中的一个的内容相加

BX   SI

即: EA =    +

BP   DI

在普通情况下,假设BP之内容作为有效地址的一部分,则以SS之内容为段值,否则已DS

为段值。

比如:

MOV AX,[BX][DI]

如:(DS)=2100H,

(BX)=0158H,

(DI)=10A5H

则EA=0158 + 10A5 = 11FD

物理地址=21000 + 11FD = 221FDH

221FDH地址中的内容:1234H

运行该指令后AX = 1234H

以下指令中,目的操作数採用基址加变址寻址,

引用的段寄存器是DS: MOV DS:[BP+SI],AL

以下指令中,源操作数採用基址加变址寻址,

引用的段寄存器ES: MOV AX,ES:[BX+SI]

这样的寻址方式使用与数组或表格处理。用基址寄存器存放数组首地址,而用变地寄存器

来定位数组中的各元素。或反之。因为两个寄存器都可改变,所以能更加灵活地訪问数

组或表格中的元素。

以下的两种表示方法是等价的:

MOV AX,[BX+DI]

MOV AX,[DI][BX]

7、相对基址加变址寻址方式:

操作数在存储器中。操作数的有效地址因为基址寄存器之中的一个的内容与变址寄存器之中的一个的

内容及指令中给定的8位或16位位移量相加得到。

BX    SI    8位

即: EA =     +     +      位移量

BP    DI    16位

在普通情况下。假设BP中的内容作为有效地址的一部分,则以SS段寄存器中的内容为段

值。否则以DS段寄存器中的内容为段值。

在指令中给定的8位或16位位移量採用补码形式表示。

在计算有效地址时,假设位移量是8位,那么被带符号扩展成16位。

当所得的有效地址操作FFFFH时。就取其64K的模

比如:

MOV AX,[BX+DI-2]

如果。(DS) = 5000H, (BX) = 1223H, DI = 54H, (51275) = 54H, (51276) = 76H

物理地址= 50000 + 1223 + 0054 + FFFE(-2 各位取反末位加一) = 51275H

运行该指令后 (AX) = 7654H

相对基址加变址这样的寻址方式的表示方法多种多样,下面四种方法均是等价的:

MOV AX,[BX+DI+1234H], MOV AX,1234H[BX][DI]

MOV AX 1234H[BX+DI],  MOV AX,1234H[DI][BX]

时间: 2025-01-10 06:45:03

七寻址模式寄存器的相关文章

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

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

Linux网卡bond的七种模式详解

像Samba.Nfs这种共享文件系统,网络的吞吐量非常大,就造成网卡的压力很大,网卡bond是通过把多个物理网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,具体的功能取决于采用的哪种模式. 一.bond的七种模式介绍:1.mode=0(balance-rr)(平衡抡循环策略)链路负载均衡,增加带宽,支持容错,一条链路故障会自动切换正常链路.交换机需要配置聚合口,思科叫port channel.特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1-.一直循环

深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理

http://blog.csdn.net/abc_ii/article/details/9991845 多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种 mode=0:平衡负载模式,有自动备援,但需要"Switch"支援及设定. mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援. mode=6:平衡负载模式,有自动备援,不必"Switc

解决 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的寻址模式定义的.通常的寻

OSI七层模式概述

OSI模式概述 一台电脑由哪几部分组成? 一般电脑是由CPU.主板.硬盘.显卡.显示器.外设这几个部分组成的.如下图所示: 问题:我们知道,组成这几个部分的零件都是由不同品牌的厂商生产的.那么不同厂商的配件为什么能够相互搭配呢?为什么不是一间厂商完整生产一台电脑呢? 兼容性\标准性 不同厂商的配件之所以能够相互搭配,就是因为各个厂商约定的一个协议,使得生产出来的模块提供了一个统一的接口,使其能兼容其他厂商的配件. 分工合作 即便一个生产电脑的厂商也不会是完全使用自己的配件的.而是混搭其他厂商的配

Intel 80x86 寻址模式

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

深度分析Linux下双网卡绑定七种模式

现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(windows操作系统没有网卡绑定功能 需要第三方支持).进入正题,linux有七种网卡绑定模式:0. round robin,1.active-backup,2.load balancing (xor), 3.fault-tolerance (broadcast),