分页:
上一页 1 2 3 4 5 6 7 8 [9] 10 下一页
; i=1(edx: i)
push esi
; 保存esi(最后要恢复,esi作为代替j的那个循环变量)
nexti:
mov ecx, edx
; [t=i]
mov esi, 999
; esi=999: 此处修改了原程序的语义,但仍为1000次循环。
nextj:
add eax, ecx
; [a+=t]
add ecx, edx
; [t+=i]
dec esi
; j--
jne SHORT nextj
; jne 等价于 jnz. [如果还需要,则再次循环]
inc edx
; i++
cmp edx, 10
; i与10比较
jl SHORT nexti
; i < 10, 再次循环
pop esi
; 恢复esi
这里可能会有人问,为什么要从999循环到0,而不是按照程序中写的那样从0循环到999呢?这个问题和汇编语言中的取址有关。在下两节中我将提到这方面的内容。
分页:
上一页 1 2 3 4 5 6 7 8 [9] 10 下一页