2015-09-27 37 views
2
%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 

我试图USS一个循环来从所有的无符号字(16位)数组中的元素复制到一个无符号双字(32位)阵列。但是,我认为我没有做到正确。复制一个Word阵列以一个双字阵列NASM组件

输出我收到134520880

回答

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作为输出。

相关问题