Jer*_*yRR 2 x86 assembly stack cpu-registers
我正在为我的班级在Assembly中的嵌套循环工作.我想知道的是,如果我推动ecx,我需要将另一个值移动到ecx中,还是当前的那个具有与推送的ecx相同的信息?
例:
ArraySum PROC
push esi ; save esi, ecx
push ecx
mov eax, 0 ; set the sum to zero
L1:
add eax, [esi] ; add each integer to sum
add esi, TYPE DWORD ; point to next integer
loop L1 ; repeat for array size
pop ecx ; restore ecx and esi to original values
pop esi
ret ; sum is eax
ArraySum ENDP
Run Code Online (Sandbox Code Playgroud)
当我再次引用ecx它是否包含原始值5,即使该值被压入堆栈?可以说,使用与上面相同的代码,我添加一个循环.计数器是从5开始还是我需要重新初始化ecx?
我想也许这并不像我脑子里的那样措辞.我正在使用我的教科书,它确实有效.我想我的问题是,为什么它会使用ecx的原始值,如果我们推动它并且在推送后没有将另一个值移动到ecx?
PS我知道我使用的代码示例不是嵌套循环,但是这个函数在另一个循环中.并不是说它对我的问题有任何影响:)