寻址方式:
1.立即寻址方式
功能:操作数紧跟在操作码之后,直接把操作数从内存里送进寄存器;
操作数直接存放在指令中,它作为指令的一部分存放在代码段里,这种操作数称为立即数;立即寻址方式用来表示常数,它经常用于给寄存器赋初值,并且只能用于源操作数字段,不能用于目的操作数字段;
格式:mov al,1h 把1h送进al
2.寄存器寻址方式
功能:直接把寄存器里的内容送进寄存器;
操作数在寄存器中,指令指定寄存器号;这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度;
格式:mov ax,bx
3.存储器寻址方式:形成操作数逻辑地址的偏移量;以下各种寻址方式的操作数都在除代码段以外的存储区中,通过采用不同方式求得操作数地址,从而取得操作数。
<1>直接寻址方式
功能:适用于处理单个变量;
有效地址:就在指令中,它存放在代码段中指令操作码之后,但操作数一般存放在数据段中,所以必须先求出操作数的物理地址,然后再访问存储器才能取得操作数;
语法:位移量存放操作数地址;
格式1:mov ax,var 把ds:s的内容送到ax
格式2:mov ax,[var/data] 与格式1是等效的
<2>寄存器间接寻址方式
功能:方便地访问一维数组;
有效地址:在基址寄存器bx、bp或变址寄存器si、di中,而操作数则在存储器中;如果指令中指定的寄存器是bx、si、di,则操作数在数据段中,所以用ds段寄存器的内容作为段地址;如果指令中指定的寄存器是bp,则操作数在堆栈段中,所以用ss段寄存器的内容作为段地址;
语法:基址寄存器或变址寄存器存放元素与段基值之间的字节距离;
格式1:mov ax,[bx] 把ds:(bx)的内容送到ax
格式2:mov ax,[bp] 把ss:(bp)的内容送到ax
格式3:mov ax,[si] 把ds:(si)的内容送到ax
格式4:mov ax,[di] 把ds:(di)的内容送到ax
<3>寄存器相对寻址方式
功能:也方便地访问一维数组;
有效地址:指令中指定的8位或16位位移量和一个基址寄存器bx、bp或是一个变址寄存器si、di的值之和;
语法:位移量存放数组首地址,基址寄存器或变址寄存器存放元素与数组之间的字节距离;
格式1:mov ax,[var/data+bx] 把ds:(var/data+(bx))的内容送到ax
格式2:mov ax,[var/data+bp] 把ss:(var/data+(bp))的内容送到ax
格式3:mov ax,[var/data+si] 把ds:(var/data+(si))的内容送到ax
格式4:mov ax,[var/data+di] 把ds:(var/data+(di))的内容送到ax
<4>基址变址寻址方式
功能:也方便地访问一维数组;
有效地址:一个基址寄存器bx、bp和一个变址寄存器si、di的值之和;
语法:基址寄存器存放数组首地址,变址寄存器存放元素与数组之间的字节距离;
格式1:mov ax,[bx+si] 把ds:((bx)+(si))的内容送到ax
格式2:mov ax,[bx+di] 把ds:((bx)+(di))的内容送到ax
格式3:mov ax,[bp+si] 把ss:((bp)+(si))的内容送到ax
格式4:mov ax,[bp+di] 把ss:((bp)+(si))的内容送到ax
<5>相对基址变址寻址方式
功能:方便地访问二维数组;
有效地址:指令中指定的8位或16位位移量和一个基址寄存器bx、bp和一个变址寄存器si、di的值之和;
语法:位移量存放数组首地址,基址寄存器存放数组元素的行址,变址寄存器存放数组元素的列址;
格式1:mov ax,[var/data+bx+si] 把ds:(var/data+(bx)+(si))的内容送到ax
格式2:mov ax,[var/data+bx+di] 把ds:(var/data+(bx)+(di))的内容送到ax
格式3:mov ax,[var/data+bp+si] 把ss:(var/data+(bp)+(si))的内容送到ax
格式4:mov ax,[var/data+bp+di] 把ss:(var/data+(bp)+(di))的内容送到ax
温馨提示:答案为网友推荐,仅供参考