一、指令和数据的寻址方式
操作数或指令在存储器中的地址:某个操作数或某条指令存放在某个存储单元时其存储单元的编号
在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。
寻找方式:当采用地址指定方式时,形成操作数或指令地址的方式。
寻址方式分为两类:指令寻址和数据寻址。
1)指令寻址:确定下一条预执行指令的指令地址
a、顺序寻址:(PC)+1->PC 程序计数器自动加1
b、跳跃寻址:由转移指令指出
2)数据寻址:确定本条指令的操作数地址
指令中所给出的地址码,并不一定是操作数的有效地址。
寻址过程就是把操作数的形式地址,变换为操作数的有效地址。
例如:一种单地址指令的结构如下所示,其中用X I D各字段组成该指令的操作数地址。
二、寻址方式
1、隐含寻址(操作数在累加寄存器中)
在指令中不明显的给出而是隐含着操作数的地址
例如:单地址的指令格式,没有在地址字段指明第二操作数地址,而是规定累加寄存器AL或AX作为第二操作数地址,AL或AX对单地址指令格式来说是隐含地址
eg: MOV AL ,LSRC_BYTE
MUL RSRC_BYTE
ADD | 寻址特征 | A |
操作数地址隐含在操作码中,(寻址特征指明寻址类型)。
另一个操作数隐含在ACC中
先在内存中地址为A的地方找到一个操作数,另一个操作数隐含在寄存器ACC里,从ACC里取出另外一个操作数,然后和给出的A地址中的数相加暂存在ACC中。
2、立即寻址
形式地址A就是操作数本身
OP | 立即寻址特性 # | A |
- 指令执行阶段不访存
- A的位数限制了立即数的范围
3、直接寻址
EA=A
直接根据读内存找到操作数,形式地址不需要经过任何处理。
- 执行阶段访问一次存储器
- A的位数决定了该指令操作数的寻址范围
MOV AX,[2222H]:将有效地址为2222H的内存单元的内容读到累加器AX中
4、间接寻址
EA=(A)
有效地址由形式地址间接提供,形式地址是操作数的地址的地址