我有一段小代码,我无法理解第3行的作用。任何人都可以帮我解释一下。非常感谢。
mov ebx, pointer1 //Assign of pointer pointer1 value to ebx
movzx eax, byte ptr[esi] //Get value from pointer address esi and assign to eax
mov dx, [ebx + eax * 2] //??? Dont know what it does
mov [edi], dx
我想,如果[ebx]
是一个字节数组,那么该行将会array[eax_value]
和array[eax_value+1]
?
答案 0 :(得分:4)
ebx将指针值保存到pointer1。 eax用于抵消它。您从pointer1获取第n个16位值,其中n由读入eax的值确定。
答案 1 :(得分:3)
Pointer1是指向short int
(16位)数组的指针。 esi
指向某个字节值,该值是数组中的索引。
因此指针被加载到ebx
,然后索引被加载到eax
并乘以2(因为16位数据大小)并作为偏移量添加到数组指针。
数组中的值将复制到edi
所指向的位置。