间接寻址
间接寻址就是使用寄存器作为指针,控制该寄存器的值来寻到数组中的元素,如:
array byte 10h,20h,30h; 定义数组
mov esi, offset array; 取数组首地址
inc esi; esi指向数组第2个元素(下标为[1])
上面的esi作为数组的指针,控制esi来寻到数组中的元素。
变址寻址
通过在原地址上增加一个寄存器、或者在原地址的基础上加上常数等方法来生成新的地址,不会修改原地址。如:
array byte 10h,20h,30h; 定义数组
mov esi, offset array; 取数组首地址
mov al,[esi+1]; 加上一个常数就是一个新的地址,也是指向第2个元素
变址寻址更像是高级语言中的数组
所以变址寻址还可以写为以下方式:
array byte 10h,20h,30h; 定义数组
mov esi, offset array; 取数组首地址
mov al,array[1]; 和C语言的数组是一样的
;或者以下的形式
mov al,array[ebx]