簡體   English   中英

將字數組復制到DoubleWord數組NASM程序集

[英]Copying a Word Array to a DoubleWord array NASM assembly

%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

我正在嘗試使用一個循環,將所有元素從一個無符號的Word(16位)數組復制到一個無符號的雙字(32位)數組中。 但是,我認為我做的不正確。

輸出我正在接收134520880

您將覆蓋輸出指針edi而不是寫入輸出數組。 代替:

mov bx, [esi + ecx * 2]
movzx edi, bx

您可以嘗試:

movzx ebx, word [esi + ecx * 2]
mov [edi + ecx * 4], ebx

另請注意,您需要將length除以二,因為您已將其聲明為字節數,因此需要cmp ecx, length / 2

PS:您的輸出數組已經包含正確的數據。

PPS:不確定mov eax, ddArray; call intLineFeed mov eax, ddArray; call intLineFeed應該可以完成,我想這是在打印數組的地址,所以這就是為什么要獲得134520880作為輸出的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM