大会前五个数字的总和

时间:2013-06-13 10:29:04

标签: assembly x86

我在x86平台上学习汇编语言并制作了一个简单的程序,将前五个数字和打印值添加到screen.Below是我的代码

section .data
x db "value=%d" ,10,0
tc db "value is =%d" ,10,0
section .text
global main
extern printf

main:
mov ebx, 1
mov ecx,0
well_done:
add ecx ,ebx
push ebx
 push x

call printf
add esp,4
pop ebx
inc ebx


cmp ebx ,6

jnz well_done

push ecx
push tc
call printf
add esp,8
ret

但我得到的输出低于

value=1
value=2
value=3
value=4
value=5
value is =0

有人能告诉我我做错了吗

1 个答案:

答案 0 :(得分:3)

ECX寄存器在CDECL调用约定中被调用者保存,这意味着如果要在函数调用之间保留其值,则(调用者)必须自己保存并恢复它。