使用循环将 BYTE 数组读入 DWORD 数组

Reading a BYTE array into a DWORD array with a loop

这个问题与之前的问题相同post。 objective 是取一个 BYTE 数组 2, 4, 6, 8 ,10 并通过 LOOP 将它们插入到 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