就业数据资源平台
当前位置:首页 > PC技术
全国计算机考试三级PC技术第二章(12)

寻址方式


寻址方式就是指令中用来说明操作数怎样存放以及如何寻找操作数的方法。80x86指令中涉及的操作有3种:立即操作数、寄存器操作数和存储器操作数。


1.立即寻址


寻址方式是把操作数直接放在指令中,紧跟在操作码之后,因而这种操作数称为立即数。


立即寻址方式常用于给寄存器赋初值,并且只能作为源操作数,不能作为目的操作数。


2.寄存器寻址


这种寻址方式的操作数在8位、16位或32们的通用寄存器中。立即寻址方式和寄存寻址方式所执行的操作均在CPU内进行,所以执行速度比较快。


3.存储器寻址


这种寻址方式的操作数在内存数据区中。当需要访问某存储单元时,应根据指令中提供的逻辑地址,即段地址和偏移量形成的物理地址,然后才能对它进行读写操作。


我们就把这个计算得到的段内偏移量称为有效地址(effective address,EA)


在80x86微处理器中,有效地址可以由以下4种地址分量组合而成。


①基地址:用来指示某局部存储区的起点。


②变地址:可以方便地访问数组或字符串。


③位移量:是上述机器指令中的disp字段。


④比例因子:是32位寻址方式中特有的一种地址分量,其使用方法见下面的说明。


计算80x86微处理器有效地址的一般方法如下:


EA=基地址+(变地址×比例因子)+位移量


下面比较详细地介绍80x86微处理器的几种储器寻址方式。


(1)直接寻址


这是最简单的存储器寻址方式,操作数的有效地址是以8位、16位或32位位移量的形式作为指令的一部分,与操作码一起存放在代码段中。操作数的段基址默认为DS,若要对代码段、堆栈段和附加段中的数据寻址,应在指令中增加段跨越前缀。例如:


MOV AX,[2000H]


MOV AX,ES:[2000H]


直接寻址的操作数还可以用变量名的形式给出。例如:


BUF DB 12H


MOV AL,BUF;


(2)寄存器间接寻址


在这种寻址方式中,存储器操作数的有效地址可以是基址寄存器或变址寄存器中的内容,也可以是基址寄存器和变址寄存器中的内容之和。若单独使用基址寄存器或变址寄存器,则分别称为基址寻址和变址寻址;若同时使用基址寄存器和变址寄存器,则称为基址的寄存器间接寻址。例如:


MOV EAX,[BX];基址寻址


MOV EAX,[SI];变址寻址


MOV EAX,[BX][SI];基址加变址寻址,[BX][SI]等效于[BX+SI]


注意,基址加变址的寻址方式中,只能是基址和变址相加,而不能是两个基址寄存器相加或两变址寄存器相加。


若以(E)BP、(E)SP为基地址进行间接寻址,默认的段基址在SS中;而采用其他通用寄存器作为基地址进行间接寻址时,则默认的段基址在DS中。同样,可以采用加段跨越前缀的方法对其他段进行寻址。


(3)寄存器相对寻址


在这种寻址方式中,存储器操作数的有效地址是基址或变址寄存器的内容与指令中指定的位移量之和,也可以是基址寄存器加变址寄存器中的内容与指令中指定的位移量之和。与寄存器间接寻址类似,也有所谓相对的基址寻址、相对的变址寻址以及相对的基址加变址寻址。便如:


MOV ECX,[BX+24];相对的基址寻址


MOV ECX,[SI+24];相对的变址寻址


MOV EAC,[BX+SI+24];相对的基址加变址寻址,[BX+SI+24]等效于24{BX}{SI}


(4)寄存器比例寻址


在这种寻址方式中,形成存储器操作数的有效地址可以采用以下3种形式:


①变址寄存器的内容乘以比例因子,再加上位移量,称为比例变址方式。


②变址寄存器的内容乘以比例因子,再加上基址寄存器的内容,称为基址比例变址方式。


③变址寄存器的内容乘以比例因子,再加上基址寄存器的内容和位移量,称为基址比例变址位移方式。例如:


MOV EAX,X[EDI*4];EA=(EDI)*4+X,其中X是8位或32位位移量


MOV EBX,[EDI*8][EBX];EA=(EDI)*8+(EBX)


MOV EAX,X[ESI*4][EBP];EA=(ESI)*4+(EBP)+X,其中X是8位或32位位移量

就业数据资源平台