1)请问如果我想历遍一个数组(array),
应该用mov esi,0
还是mov esi,offset array1 (这个是数组开始的位置吗?)
这两个有什么区别?
2)还有movzx 和mov 之间有什么区别?
1.mov eax,array[esi*(数组元素的大小)],然后增加esi,循环.有很多寻址方式的。自己看关于寻址方式的资料
2.MOVZX是零扩展传送,将源操作数的内容复制到目的操作数,并将值以0填充至16位或32位。
mov esi,0的话 就是 array[esi] 然后esi++
其实编译了后就会变成 [ array + esi ]
mov esi,offset array 的话直接使用esi++
编译后 [ esi ],直接访问
movzx 会填充不够的长度 ,movzx eax,dl 这样的话eax 就会等于dl
mov esi,0
相当于把 esi 作为变址
mov esi,offset array1
相当于把 esi 作为基址