计组学习笔记
目录
3.2.3 常见寻址方式
1)寻址的概念
寻址:寻找指令和操作数的有效地址的方法。
- 指令寻址
- 操作数寻址
2)指令寻址
计算指令有效地址的方式只有两种:
①顺序寻址:程序的指令序列在主存顺序存放,执行时从第一条指令开始,逐条取出并逐条执行。(CPU中设置程序计数器PC对指令的顺序号计数,每执行完一条指令,PC加“1”,指出下一条指令的地址,直到程序结束。!!!注意:“1”指的是存储1条指令占用的字节单元数)
②跳跃寻址(这种寻址方式的PC+“1”就不是下一条指令的地址了)
3)操作数寻址
1、立即寻址(立即数寻址)
- 地址码字段是操作数本身。
例:
MOV | 000 | 200H |
MOV.AX,200H(AX<-200H)
特点:
- 取值操作将数据与指令一并读入CPU内部的寄存器,指令执行速度快。
- 便于程序设计(变量赋初值)
- 数据大小受字段位数限制
2、主存直接寻址
- 直接给出操作数的有效主存地址,根据该地址可从主存储器中读取或写入操作数。
例:若主存储器数据区的地址与数据之间的对应关系如下,指令给出地址码A=2000H,按直接寻址方式读取操作数。
地址 数据
1000H 1A00H
2000H 1B00H
3000H 1C00H
按照直接寻址方式的定义,我们找到地址为2000H的数据1B00H就是操作数。
3、寄存器直接寻址
- 在指令中直接给出寄存器号,而操作数就存储在寄存器中。(CPU中有若干寄存器,其中一些可编程访问,也称为通用寄存器)
例:若CPU寄存器内容如下,现指令中给出寄存器号为010(即R2),按寄存器直接寻址方式读取操作数。
R0 1000H R2 3A00H
R1 2000H R3 3C00H
按寄存器直接寻址方式定义,找到寄存器R2,读取操作数S=3A00H.
优点:①从CPU的寄存器中读取操作数要比访问主存快得多。
②地址字段的位数与计算机通用寄存器数量相关。
③能访问的数据大小一般与计算机有关。
4、主存间接寻址
- 地址码字段给出的是操作数地址的地址。
- 若操作数存放在某个主存单元中,则该主存单元的地址被称为操作数地址。若操作数地址又存放在另一主存单元中(不是由指令直接给出),则该主存单元被称为间址单元。
例:若主存储器数据区的地址与单元内容之间对应关系如下,指令给出的主存间接地址A=2000H,按主存间接寻址方式读取操作数。
地址 存储内容
1000H 4000H
2000H 3000H
3000H AC00H
按照主存间接寻址方式的定义,指令给出的间接地址是2000H,我们根据此间接地址访问主存,得到操作数地址3000H,然后依照操作数地址3000H,读取操作数S=AC00H。
优点:能使用同一条指令并通过不断修改间址单元的内容就能实现对不同操作数的访问,有力地支持了程序的循环操作。
特点:
- 解决了直接寻址方式下地址字段的位数限制访存范围大小的问题。
- 获得数据要访存主存两次,指令执行速度太慢。