使用循环将 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
这个问题与之前的问题相同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