根据冯诺依曼计算机的工作原理,需要根据物理地址从内存中取指令和数据。如何获得指令和数据的物理地址?这和指令的寻址方式有关。
指令的寻址方式一般有两种:顺序寻址、跳跃寻址。
指令的顺序寻址:程序的指令按顺序存放在内存中,执行时从第一条指令开始,逐条取出指令并执行。CPU需要设置程序计数器PC对指令的顺序号进行计数。PC开始存放第一个指令的地址,每执行一条指令后PC+“1”,直到程序运行结束。
指令的跳跃寻址:修改PC的值,跳转到某一个地址开始执行。
除了指令的寻址之外,还有操作数的寻址。操作数寻址要根据寻址方式获得有效地址。
操作数的寻址方式常见的有几种:
1. 立即数寻址,地址码字段是操作数本身。MOV AX, 200H
2. 寄存器寻址,地址码字段是寄存器编号,操作数在寄存器里。MOV AX, BX
3. 直接寻址,地址码字段给出操作数所在内存的地址。 MOV AX, [200H]
4. 间接寻址,地址码字段给出的是操作数地址的地址。E=(D) , S=((D)),MOV AX, I[200H]
5. 寄存器间接寻址,地址码字段给出的是寄存器的编号,寄存器内是数据的地址。获得数据只需要访问内存1次。 MOV AX,[BX]
6. 相对寻址,E=D+(PC),地址码给出相对PC的偏移
7. 基址寻址,指定一个基址寄存器B,E=D+(B),D为指令中地址字段的值。
网友评论