|
all printf
loop looper
pop eax
ret
; EOF
粗一看, 非常简单: 因为你在 10 个 printf() 调用用的是同一个字符串, 你不需要清除栈. 但当你编译以后, 循环不会停止. 为什么? 因为 printf() 里什么地方用了 ECX 但没有保存. 使你的循环正确的工作, 你必须在调用之前保存 ECX 的值, 调用之后恢复它, 像这样:
; loop.asm
global main
extern printf
section .text
msg db "H页码:[1] [2] [3] [4] [5] [6] 第5页、共6页 |