0

我正在编写一个数字操作程序,其中一个步骤是反转数组。到目前为止我有

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 计数器做错了吗?任何帮助,将不胜感激。

4

1 回答 1

0

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

于 2013-04-24T11:46:08.293 回答