0
我正在写一个数字操作程序,并且一步就是反转数组。到目前为止,我有如何在Irvine汇编语言中反转数组?
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计数器上做错了什么?任何帮助,将不胜感激。
不清楚你如何使用'ecx'。它在哪里初始化?你为什么要添加ecx,4'然后是'loop'?从顶部再次考虑这一点。先写评论可能会有所帮助。 –
我的思考过程是,ecx从0开始,并将数组中的位置指定给数组array array final spot。在ECX循环之前,一个点和esi会向下移动一个点。但由于某种原因,它只适用于前五个地方,然后开始给我大量无关的数字 – Bill
ecx可能是真的,从0开始 - 但我不会指望它! 'loop'指令减少ecx,所以你只能移动“四分之三的点”。我不知道这是你的问题还是不是... –