我试图将数组复制到另一个数组,但元素的顺序应该颠倒并显示。我的程序文件编译但不运行,并且每次都会导致Windows停止错误(Windows对话框)。
我不知道我在做什么错。请指教。将数组复制到另一个数组并将其显示在组件中
INCLUDE Irvine32.inc
.data
sarray DWORD 500h, 400h, 300h, 200h, 100h
darray DWORD 5 DUP(?)
.code
main PROC
mov eax, 0
mov esi, OFFSET sarray ;move first element address to esi
mov edi, OFFSET darray + SIZEOF darray - TYPE darray ;move last element address to edi
mov ecx, LENGTHOF sarray ;sets the counter in the reverseLoop
reverseLoop:
mov eax,sarray[esi] ;move 1st sarray element to eax
mov darray[edi],eax ;move 1st sarray element as last element on darray
call WriteInt
call Crlf
add esi, TYPE sarray
sub edi, TYPE darray
call WriteInt
loop reverseLoop
exit
main ENDP
END main
编辑:我的问题是,esi
和edi
就已经加入(OFFSET sarray
)地址,但在循环,我再次(mov eax, sarray[esi]
)的添加开始。
修复程序后,我不得不添加另一个循环打印的第二darray(新)
你必须退出你的循环的条件? –
x86上的'loop'指令将'ecx'作为计数器递减,如果它变为零则退出。所以,这不是无限的。 – Jester
“我的程序文件在编译后停止工作。”不是一个好的错误描述,请详细说明发生了什么。另外,使用调试器。 – Jester