一 指令寻址
1.顺序寻址方式 —— PC+1→PC
设置程序计数器(或称指令计数器)PC,每执行一条指令,计数器加1;
把计数器内容作为指令的存储地址。
2.跳跃寻址方式 —— 当程序转移时,修改PC的内容
下条指令的地址,不是计数器给出的,而是当前指令指定的。
程序跳跃后,按新的指令地址开始顺序执行,指令计数器的内容相应改变。
二 操作数寻址方式
操作数的寻址:把操作数的形式地址,根据间址和变址等组合变换为操作数有效地址的过程。
⑴形式地址:指令中给出的地址。(不一定是实际地址)
⑵有效地址:操作数的实际地址。如寄存器编号或存储单元地址。
1. 立即寻址:指令的地址字段直接给出操作数本身
MOV AX,2000H ;将数据2000H存入累加器AX中
2. 直接寻址:指令字中直接给出操作数在内存的地址。形式地址=有效地址
MOV AX,[2000H]; 将有效地址为2000H的内存单元的内容读入AX中。
3. 隐含寻址:在指令中不明显地给出操作数的地址
4. 间接寻址意味着指令的地址码部分给出的地址A不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址。
5. 寄存器寻址方式:操作数放在CPU的通用寄存器中。此时指令中给出的操作数地址是通用寄存器的编号。
MOV AL,BL
6. 寄存器间接寻址方式:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。
MOV AL,[BX] ;设 BX=2000H,(2000H)=80H,则 AL←80H
7.偏移寻址:直接寻址和寄存器间接寻址方式的结合;
有效地址由两部分组成:形式地址A,某个专用寄存器内的值。
EA=(R) +A。
1) 相对寻址方式
程序计数器PC的内容加上地址字段中A的值形成指令的目的地址
EA= (PC)+A A可正可负!
2) 基准地址放在专用的基址寄存器Rb中,指令的地址码部分给出偏移量A,最后操作数的有效地址为:EA=(Rb)+A。
8.段寻址方式
l 段寻址方式的实质还是基址寻址
9. 堆栈寻址
堆栈有寄存器堆栈和存储器堆栈两种形式,它们都以先进后出的原理存储数据。
数据的存取都与栈顶打交道,需要堆栈指示器(寄存器)。