寻址方式

  • 格式:docx
  • 大小:40.16 KB
  • 文档页数:8

寻址方式就是寻找操作数或操作数地址的方式。

8086提供了与操作数有关和与I/O端口地址有关的两类寻址方式。

与操作数有关的寻址方式有七种,分别是立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址加变址寻址,相对基址加变址寻址;与I/0端口有关的寻址方式有直接端口寻址和间接端口寻址方式。

目录与操作数有关的寻址方式与I/0端口有关的寻址方式展开编辑本段与操作数有关的寻址方式立即数寻址方式操作数直接存放在指令中,紧跟在操作码之后的寻址方式就是立即数寻址方式。

例如:MOV AX,2345HMOV AL,0EH寄存器寻址操作数存放在CPU的内存寄存器时,可在指令中指出寄存器名,这就是寄存器寻址方式。

例如:MOV AX,BXADD AX,BX存储器寻址方式8086指令系统提供了以下5种针对存储器的寻址方式。

直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址和相对基址加变址寻址。

用于说明操作数所在存储单元的地址。

由于总线接口单元BIU能根据需要自动引用段寄存器得到段值,所以这五种方式也就是确定存放操作数的存储单元有效地址EA的方法。

有效地址EA是一个16位的无符号数,在利用这五种方法计算有效地址时,所得的结果认为是一个无符号数。

(1).直接寻址:指令中给出的地址码即为操作数的有效地址,就是直接寻址方式。

例子: MOV AX,[2000H] -->2000H为存放操作数单元号的符号地址MOV AX,2000H -->2000H为源操作数,立即数上面两者是不等效的(2).寄存器间接寻址方式:你就想成:你已经站在你要找的"门户号(家)"的"单元号",你要找到它,必须知道它在当前"单元号"几楼.假如它在6楼,那你就上到6楼就OK了!!注意,最高只有16楼,因为什么呢?那就用DEBUG的D命令看看呀,慢慢数哦,呵呵!!例子: MOV AX,[BX]计算公式: 物理地址=16d*(DS)+(BX)物理地址=16d*(DS)+(SI)物理地址=16d*(DS)+(DI)物理地址=16d*(SS)+(BP)(3).寄存器相对寻址方式:你就想成:你要找的"门户号(家)"其实就在你家的楼上或者楼下,你要找到它,就必须知道它在你楼上几楼,或者在楼下几楼!就OK了!例子: MOV AX,COUNT[SI]MOV AX,[COUNT+SI]其中COUNT为位移量的符号地址计算公式: 物理地址=16d*(DS)+(BX)+8位位移量物理地址=16d*(SI)+(BX)+16位位移量物理地址=16d*(DI)+(BX)+16位位移量物理地址=16d*(SS)+(BP)+8位偏移量(4).基址变址寻址方式:你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",你要找到它,就必须知道它是该栋的哪个"单元号",并且住在几楼!那样你就可以找到它了!例子: MOV AX,[BX][DI]MOV AX,[BX+DI]计算公式: 物理地址=16d*(DS)+(BX)+(SI)物理地址=16d*(DS)+(BX)+(DI)物理地址=16d*(SS)+(BP)+(SI)物理地址=16d*(SS)+(BP)+(DI)(5).相对基址变址寻址方式:你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",它比你高几层楼或者低几层楼,然后用的你目前的楼数+/-就可以得出你要找的住在几楼了!例子: MOV AX,MASK[BX][SI]MOV AX,MASK[BX+SI]MOV AX,[MASK+BX+SI]以上三个例子是等效的!!计算公式: 物理地址=16d*(DS)+(BX)+(SI)+8位位移量物理地址=16d*(DS)+(BX)+(DI)+16位位移量物理地址=16d*(SS)+(BP)+(SI)+8位位移量物理地址=16d*(SS)+(BP)+(DI)+16位位移量上述共计七种操作数寻址方式,与80C51单片机的完全一致。

编辑本段与I/0端口有关的寻址方式8086微处理器采用独立编址的I/0端口,有专门的输入指令IN和输出指令OUT,寻址方式有以下两种。

直接端口寻址直接端口寻址是在指令中直接给出要访问的端口地址,一般采用2位十六进制数表示,也可以是符号,访问的端口范围0~255.例如:IN AL,20H表示从I/0端口地址为20H的端口中取数据送入AL寄存器中。

间接端口寻址若访问的端口地址大于255时,就要用间接寻址方式。

可以访问的端口范围0~65535.例如:MOV DX,356H ;将端口地址356H送入DX寄存器OUT DX,AL ;将AL中的内容输出到DX指定的端口立即寻址mcs-51单片机的一种寻址方式,操作数就写在指令中,和操作码一起放在程序存贮器中。

把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H。

51单片机中的汇编例子:MOV R1,#02HMOV @R0,#02H其含义是将十六进制数02H直接放入目标寄存器中,当然也可以是二进制数或十进制数。

在8086等CPU处理器中可按下面例子。

立即数可以是8位、16位或32位,该数值紧跟在操作码之后。

如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。

例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456HMOV B1, 12H MOV W1, 3456H ADD D1, 32123456H其中:B1、W1和D1分别是字节、字和双字单元。

以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第二操作数。

该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。

立即数寻址方式通常用于对通用寄存器或内存单元赋初值。

变址寻址(indexed addressing)是计算机中的一种寻址方式。

在变址寻址操作时,将计算机指令的第二个字节与变址寄存器中的内容相加,得到有效的地址。

该指令为双字节指令。

编辑本段变址寻址方式在通用寄存器中,有些寄存器可作为变址寄存器。

把变址寄存器的内容(通常是首地址)与指令地址码部分给出的地址(通常是位移量)之和作为操作数的地址来获得所需要的操作数就称为变址寻址。

OPCODE。

RA指令地址码部分给出的地址A和指定的变址寄存器R的内容K通过地址加法器相加,所得的和作为地址从存储器中读出所需要的操作数。

编辑本段ip寻址的方式每一TCP/IP主机通过一个逻辑IP地址辨别。

这个IP地址是一个Internet层地址,不依赖数据连接层地址(如网络接口卡的MAC地址)。

一个唯一的IP地址需要每个主机和网络成分采用TCP/IP进行通信。

IP地址辨别网络上系统的位置和用街道地址辨别辨别城市街区的一座房屋一样采用同样的方式。

正如街道地址必须辨别一个唯一的住处,一个IP地址必须是完全唯一的,并有着一个相同的格式。

每个IP地址包含一个网络ID 和一个主机ID。

·网络ID (也叫做网络地址)通过IP路由器辨别位于相同物理网络范围的系统。

所有在相同物理网络上的系统必须有同样的网络ID。

网络ID在网络上应该是独一无二的。

·主机ID(也叫做主机地址)在一网络内辨别工作站,服务器,路由器,或别的TCP/IP 主机。

每个主机的地址对网络ID来说是独一无二的。

编辑本段注意术语network ID的用途指的是任一IP网络ID,无论其是基于类的,一个子网,或一上等网。

一个IP地址为32位长度。

不是说在某时以32方式工作,将IP地址的32位分割为四个8比特域叫做八位位组是一个通用的惯例。

每八位字节被转换成一个0-255间的十进制数并被一个句点分离。

这种格式叫做带点的十进制符号。

变址寻址在字符串处理,向量运算等等成批数据处理中非常有用。

假设有一个字符串存储于以STRING为首地址的连续存储器单元中,则只需要在变址寄存器中指出首地址STRING,在指令地址码部分指出字符的序号(即下标),利用变址寻址便可以访问此字符串中任何一个元素。

基址寻址将CPU中基址寄存器的内容,加上指令格式中的形式地址而形成操作数的有效地址被引用的专用寄存器含有一个寄存器地址,地址字段含有一个相对于该地址的偏移量(通常是无符号的整数)。

寄存器的引用可以使显式的,也可以是隐式的。

相对寻址目录概念寻址方式编辑本段概念以当前程序计数器pc的内容为基址,加上指令给出的一字节补码数(偏移量)形成新的pc值的寻址方式称为相对寻址。

编辑本段寻址方式表示指令中操作数所在的方法称为寻址方式。

8086/8088有七种基本的寻址方式:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址加变址寻址,相对基址加变址寻址。

直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址和相对基址加变址寻址,这五种寻址方式属于存储器寻址,用于说明操作数所在存储单元的地址。

由于总线接口单元BIU能根据需要自动引用段寄存器得到段值,所以这五种方式也就是确定存放操作数的存储单元有效地址EA的方法。

有效地址EA是一个16位的无符号数,在利用这五种方法计算有效地址时,所得的结果认为是一个无符号数。

除了这些基本的寻址方式外,还有固定寻址和I/O端口寻址等。

寄存器寻址操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。

指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。

把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。

指令中可以引用的寄存器及其符号名称如下:、8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;、16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;、32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。

寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。

1、源操作数是寄存器寻址方式如:ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。

其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。

在第4章将会学到如何定义它们。

2、目的操作数是寄存器寻址方式如:ADD BH, 78h ADD AX, 1234h MOV EBX, 12345678H等。

3、源和目的操作数都是寄存器寻址方式如:MOV EAX, EBX MOV AX, BX MOV DH, BL等。