寻址的对象
程序是指令的集合,指令包括操作码和操作数。寻址可分为指令的寻址即表示下一条指令的位置,还有便是数据的寻址即操作数的寻址,只有找到这个操作数才能对数据进行操作。
下面图表示数据寻址的几种方式
我们可以看到数据的寻址可以分为以下几种
- 立即数寻址:表示数据直接在指令中,这种方式的寻址是非常快的
- 寄存器寻址:表示数据存储在寄存器中,指令中的操作数表示寄存器的名字
- 存储器寻址:这种情况又可以分为几种类型,分为直接寻址表示操作数中存储的是目标数据的地址,寄存器间接寻址表示寄存器里面存储的是目标数据的地址,寄存器相对寻址。。。。
- 外设I/O寻址:分为直接寻址和间接寻址
立即数寻址
立即数寻址表示数据在指令当中,目标数据可以直接得到,下面我们据一些常见的形式。
mov eax,12H
mov ax,'a'
lab: mov eax 1
mov ebx,lab
varb byte 1,3H
mov eax,offset varb
寄存器寻址
寄存器寻址表示目标数据在寄存器中,通过寄存器的名字来找到数据,寄存器寻址也是比较快速的,也是最常用的寻址方式,下面我们举一些例子进行说明。
mov eax,1H
mov eax,3
mov ax,'a'
这三种方式表示目标操作数为寄存器寻址,原操作数为立即数寻址
mov al,ah
mov al,bl
mov ax,bx
这三种表示原操作数和目的操作数为寄存器寻址
mov bvar,al
mov wvar,ax
mov dvar,eax
这三种方式表示原操作数为寄存器寻址,目的操作数为存储器寻址