我的理解是索引寻址本质上产生一个地址,其偏移量是括号中的数字。这种理解是否正确?但我也明白,这个地址不知何故被取消引用。我不明白它是如何工作的。本书基于Intel的计算机的汇编语言显示了许多格式mov reg,array[reg]
的指令,它们将数据从索引数组元素移动到寄存器中。但我需要一种方法将数据从寄存器移回阵列。我怎样才能做到这一点?我是否使用相反的方法,即mov array[reg],reg
?或者这个解除引用array[reg]
并将数据移动到存储在该数组元素中的值给出的地址?
例如,假设数组索引为3并且它存储在寄存器EBX中,我想将存储在EAX中的值移动到该数组元素中。当前存储在该数组元素中的值为500十六进制。如果我使用指令mov array[ebx],eax
,这条指令会将EAX中的值移动到数组[3]中,还是将它移动到内存位置500 hex?如果是后一种情况,我可以使用什么指令来避免这种影响并做我真正想做的事情,即将数据移动到数组中[3]?
注意:我使用的语法是MASM。我的机器上没有安装MASM,因为我使用的是Ubuntu,所以它不是一个选项。但是我读的这本书是为MASM编写的,所以我首先学习MASM,只是为了了解x86汇编语言是如何工作的。我没有组装任何节目,但我想了解它们。