section .data
msg db 'hello world',10,0
section .text
global main
extern printf
main:
mov ecx,5
lable1:
push msg
call printf
add esp,4
loop lable1
ret
;;------------------------------------sample program--------------------------
section .data
val dd 20
msg db 'number is : %d',10,0
section .text
global main
extern printf
main:
mov ecx,5
lable1:
inc dword[val]
loop lable1
push dword[val]
push msg
call printf
add esp,8
ret
答案 0 :(得分:0)
loop
递减ecx
并在递减后ecx
不为零时执行跳转。您的第一个程序中的问题是您在循环体中调用printf
,这很可能会覆盖ecx
。
您应该在调用ecx
之前保存printf()
的值,然后在loop
指令之前重新恢复它。