2015-09-27 42 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作爲輸出。

相關問題