Arrays 使用循环将字节数组读入DWORD数组
这是一个与前一篇文章相同的问题。目标是获取2、4、6、8、10的字节数组,并通过循环将它们插入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
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表示:取一个字节。明白了。再次感谢!