如何在Irvine汇编语言中反转数组?

时间:2012-11-13 19:14:56

标签: arrays loops assembly masm irvine32

我正在编写一个数字操作程序,一步就是反转数组。到目前为止我已经

reverseArray proc
mov eax, arraySize
mov temp, eax
Imul eax, 4
mov esi, eax
mov eax, 0
mov number, 0
jne L1
L1: 
cmp temp, 0
je L3

mov eax, numbers[esi]
mov tempnumbers[ecx], eax

mov eax, tempnumbers[ecx]
call writeDec
call crlf


sub esi,4
add ecx, 4
sub temp, 1

loop L1


L2:
ret


L3:

.If(number >= 0)

 mov esi, 0
.ENDIF
mov eax, number
cmp eax, arraySize
je L2


mov eax, tempnumbers[esi]
mov numbers[esi], eax

add esi, 4
add number, 1
loop L3

然而,这仅反转了我的阵列的一半。我是否对esi或ecx计数器做错了什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用edi代替ecx,并在开始时将其设置为0.