寻址方式(或编址方式)指的是确定本条指令的数据地址及下一条要执行的指令地址的方法。
(1)立即数寻址
所需的操作数由指令的地址码部分直接给出,就称为立即数(直接数)寻址方式。
特点:
取指时,操作码和一个操作数同时被取出,减少了访问存储器次数,提高了指令的执行速度。但只适用于操作数固定的情况。
(2)寄存器寻址
计算机的中央处理器一般设置有一定数量的通用寄存器,用以存放操作数,操作数的地址或中间结果。通用寄存器的数量一般在几个至几十个之间,比存储单元少很多,因此地址码短,节省存储空间,提高指令的执行速度,而且从寄存器中存取数据比从存储器中存取快的多。
(3)直接寻址
是最直观的一种方式,指令的地址码部分给出操作数在存储器中的地址,而该指令的寻址方式由操作码表示。
(4)间接寻址
有时根据指令的地址码所取出的既不是操作数,也不是下一条要执行的指令,而是操作数的地址或指令的地址,这种方式称为间接寻址(间址)(第一次读出操作数地址,第二次读出操作数)。大多数计算机只允许一次间址。
间接寻址又可分为寄存器间接寻址和存储器间接寻址两种。
(5)基址寻址
在计算机中设置一个专用的基址寄存器,或由指令指定一个通用寄存器为基址寄存器。操作数的地址由基址寄存器的内容和指令的地址码A相加得到,地址码A通常被称为位移量(disp)。
(6)变址寻址
操作数的地址由指令地址码部分给出的地址码A和指定的变址寄存器的内容通过加法器相加得到。这是几乎所有计算机都采用的一种寻址方式。
当计算机中还有基址寄存器时,也要加上基址寄存器内容。
(7)相对寻址
把程序计数器PC的内容(即当前执行指令的地址)与指令的地址码部分给出的位移量(Disp)之和作为操作数的地址或转移地址。
相对寻址主要用于转移指令,执行本条指令后,将转移到(PC)+ Disp。
特点:
转移地址不固定。
位移量可正可负,通常用补码表示。
(8)堆栈寻址