Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用循环将字节数组读入DWORD数组_Arrays_Assembly_X86_Masm_Irvine32 - Fatal编程技术网

Arrays 使用循环将字节数组读入DWORD数组

Arrays 使用循环将字节数组读入DWORD数组,arrays,assembly,x86,masm,irvine32,Arrays,Assembly,X86,Masm,Irvine32,这是一个与前一篇文章相同的问题。目标是获取2、4、6、8、10的字节数组,并通过循环将它们插入DWORD数组以显示它们。这是我最近的一次尝试 INCLUDE Irvine32.inc .data Array1 BYTE 2,4,6,8,10 Array2 DWORD 5 dup(0) .code main PROC mov esi, OFFSET Array1 ;esi = byteArray mov edi, OFFSET Array2 ;edi = dwordArray

这是一个与前一篇文章相同的问题。目标是获取2、4、6、8、10的字节数组,并通过循环将它们插入DWORD数组以显示它们。这是我最近的一次尝试

INCLUDE Irvine32.inc

.data

Array1 BYTE 2,4,6,8,10
Array2 DWORD 5 dup(0)

.code
main PROC


 mov esi, OFFSET Array1  ;esi = byteArray
 mov edi, OFFSET Array2  ;edi = dwordArray
 mov ecx, 5              ;counter of loop


 DAWG:
     mov eax, [esi]   ;attempting to use movzx causes errors
     mov [edi], eax
     inc esi
     add edi, 4
     loop DAWG

有什么建议吗?试着用我的一点(双关语)组装知识来理解它。感谢阅读。

@rkhb建议的第一个解决方案是

DAWG:
 movzx eax, byte ptr [esi]
 mov   [edi], eax
 inc   esi
 add   edi, 4
 loop  DAWG
我想添加一个稍微优雅一点的解决方案:

 cld
 xor   eax, eax
DAWG:
 lodsb
 stosd
 loop  DAWG

这一个有效:
movzx-eax,字节ptr[esi]
。它确实有效。谢谢就我所知,为什么
byte ptr
使语句工作?汇编程序必须知道,有多少[esi]要加载到
EAX
,因为有不同的机器指令用于此目的<代码>字节ptr表示:取一个字节。明白了。再次感谢!