如何在汇编语言中将数组值从一个移动到另一个?

时间:2015-02-28 18:49:29

标签: arrays assembly masm irvine32

我正在尝试将Array1中的值移至Array2,然后显示它们。我一直在研究这个问题,根本无法解决这个问题。有人请帮帮我吗?感谢

INCLUDE Irvine32.inc
INCLUDE macros.inc
.data

Array1 DWord 2,4,6,8,10
Array2 DWord 5 Dup(0)

.code
main PROC

mov edx, OFFSET Array1
mov esi, OFFSET Array2
mov ecx, LENGTHOF Array1
mov eax, 0

Call Dumpregs

Call Dumpregs
L1:
mWrite "Hello"
Call CRLF

Loop L1


Call Dumpregs

L2:

mov eax, [edx]

mov [esi], eax
add esi, 4
add edx, 4

Loop L2


exit

main ENDP

END main

1 个答案:

答案 0 :(得分:1)

您的 L2 循环无法产生所需的结果,因为前面的代码擦除了ECX clean(您使用了loop L1)。要复制阵列,您需要重新初始化ECX。此外,最好将指针EDX和ESI设置为接近此 L2 循环,因为它们可能会被所有前面的(宏)调用修改它们!

mov  edx, OFFSET Array1
mov  esi, OFFSET Array2
mov  ecx,5
L2:
mov  eax,[edx]
mov  [esi],eax
add  esi, 4
add  edx, 4
loop L2
相关问题