问题描述
我试图在一个过程中将eax变量增加2,然后将eax值压入堆栈/将结果传递给printf:
; nasm -f elf test.asm && gcc -m32 -o test test.o
section .text
global main
extern printf
add_by_2:
add eax,2
push eax
push message
call printf
add esp,8
ret
main:
mov eax,1
call add_by_2
call add_by_2
call add_by_2
ret
message db "%d",0xa,3,0
第三次调用后,eax变量不增加2。
标准输出:
3
5
5
预期的标准输出:
3
5
7
此代码有什么问题?
我如何更正代码,即使在第三次调用add_by_2
之后也可以正确地将eax递增2。
我乐于接受任何将eax中存储的数字增加2的方法(即使我需要使用其他寄存器也是如此)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)