%include 'Functions.asm'
section .data
wordArray dw 0, 1, 2, 3, 4, 5
length equ $-wordArray
ddArray dd 0, 1, 2, 3, 4, 5
section .text
global main
main:
mov ebp, esp; for correct debugging
mov esi, wordArray
mov edi, ddArray
mov ecx, 0
convert:
mov bx, [esi + ecx * 2]
movzx edi, bx
inc ecx
cmp ecx, length
jne convert
mov eax, ddArray
call intLineFeed
call exit
我试图用循环将所有元素从无符号字(16位)数组复制到无符号双字(32位)数组中。但是,我不认为我正确地做到了。
输出我收到134520880
答案 0 :(得分:3)
您正在覆盖输出指针edi
,而不是写入输出数组。而不是:
mov bx, [esi + ecx * 2]
movzx edi, bx
你可以尝试:
movzx ebx, word [esi + ecx * 2]
mov [edi + ecx * 4], ebx
另请注意,您需要将length
除以2,因为您已将其声明为字节数,因此您需要cmp ecx, length / 2
PS:您的输出数组已包含正确的数据。
PPS:不确定mov eax, ddArray; call intLineFeed
应该做什么,我猜这是打印数组的地址,这就是为什么你得到134520880
作为输出。