操作数寻址方式:
含义:形成操作数有效地址的方法
1、立即数寻址
地址码字段是操作数本身
例:MOV AX,200H(AX<---200H)
S=D
特点:
取指操作将数据与指令一并读入CPU内部的寄存器,指令执行速度块
便于程序设计(变量赋初值)
数据大小受字段位数限制
2、寄存器寻址
操作数在cpu的内部寄存器中
例 MOV AX,BX(AX<---(BX) )
特点:
操作数在寄存器中,指令执行速度快
能访问的数据大小一般与计算机字长有关
地址字段的位数与计算机通用寄存器数量相关
3、直接寻址
地址码字段直接给出操作数在内存的地址,
例 MOV AX,[200H]
特点:
提供访问主存的操作
获得数据要访问主存,指令执行速度慢
地址字段的位数决定了访存空间大小
4、间接寻址
地址码字段给出的是操作数主存地址的地址
例 MOV AX,I[200H]
这里的I表示间接寻址
特点:
解决了直接寻址方式下地址字段的位数限制访存范围大小的问题
获得数据要访问主存2次,指令执行速度太慢。
5、寄存器间接寻址
地址码给出的是寄存器编码R
特点:
解决了直接寻址方式下地址字段的位数限制访存范围大小的问题
获得数据只需访问主存1次
6、相对寻址
特点:
可节省指令中的地址位数,便于程序在内存中成块移动
注意PC的改变对计算E的影响,如 本例中E=200+2000+2
若计算机字长32位,且PC的值在取值阶段修改,则读完地址后,PC要加4,因为32位占了四个字节。
7、基址寻址
指定一个基址寄存器B,与本指令地址无关
E=D+(B),D为指令中地址字段的值
例:
MOV AX,32[B]
特点:
使用基址寄存器可以访问更大的主存空间(基址寄存器可以设置成比通用寄存器还大的位数)
对某一程序而言,基址值设定后不变,故要访问不同数据需修改D
8、变址寻址
指定一个变址寄存器X,与本指令地址无关,内容可随便要求改变
E=D+(X),D为指令中地址字段的值
MOV AX,32[SI] SI,DI都称为变址寄存器
特点:
不改变指令即可改变数据的有效地址,可在循环中使用
在字符串处理,向量运算等等成批数据处理中非常有用
9、数据寻址方式总结