汇编语言 中最头痛的莫过于寻址 方式 了,犹如C语言中的指针,还是记录如下吧。 七大寻址 方式 1.立即寻址 方式 :操作数在指令中给出 注意:只能用于SRC操作数,SRC与DST的字长一致 2.寄存器寻址 方式 :操作数在指定的寄存器中 注意:SRC与DST的字长必须一
汇编语言中最头痛的莫过于寻址方式了,犹如C语言中的指针,还是记录如下吧。
七大寻址方式
1.立即寻址方式:操作数在指令中给出
注意:只能用于SRC操作数,SRC与DST的字长一致
2.寄存器寻址方式:操作数在指定的寄存器中
注意:SRC与DST的字长必须一致,CS不能用MOV修改
(以下归纳为存储器寻址方式,地址从内存单元中取出)
3.直接寻址方式:有效地址EA由指令直接给出
通过给出来的地址得到具体值
注意:
a.隐含的段为数据段(DS)
b.可以使用段跨越前缀,如mov ax,es:[2000h]
c.操作数可由变量表示 如mov ax,word ptr value可以存放字节到字
4,寄存器间接寻址方式:EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中
注意:
a.不允许使用AX、CX、DX存放EA,例如:mov ax,[cx]是错误的
b.SRC与DST的字长必须一致
c.如果使用BP基址寄存器,则段为SS(堆载段)
5.寄存器相对寻址方式:在寄存器间接寻址方式上添加了一个8/16位的偏移量
注意:mov ax,count[si]=mov ax,[count+si]
6.基址变址寻址方式:基址+变址
注意:必须是一个基址寄存器与一个变址寄存器的组合
7.相对基址变址寻址方式:在基址变址寻址方式中添加一个8/16位的偏移量
注意:mov ax,mask[bx][si]=mov ax,mask[bx+si]=mov ax,[mask+bx+si]