C和汇编混合编程----printf
程序员文章站
2022-05-03 16:00:28
...
今天终于用c和汇编成功调试出第一个程序了,程序很简单,我太菜了,花了几天的时间,才调试好,来记录一下,以防忘记了
先上程序:
#include "stdio.h"
int main()
{
char *str="begin\n";
// printf("begin\n");
__asm{
push str ;将str的值就是字符串begin首地址压入栈
call printf ;调用printf函数
add esp,4 ;平衡栈数据
}
return 0;
}
程序的功能就是输出begin,代码解释写在程序中了
结果:
注意:
- 每个函数调用时,需要参数时,从栈顶取,根据参数的需要,依次往下取
比如说,输出两个参数:
#include "stdio.h"
int main()
{
printf("begin\n");
char *str="a=%d,b=%d\n";
__asm{
push 3
push 4
call eeee
add esp,8
mov eax,3
jmp end
eeee: mov eax,[esp+8]
mov ebx,[esp+4]
xchg eax,ebx
push ebx
push eax
push str
call printf
add esp,12
ret
end: nop
}
return 0;
}
- 函数调用完需要平衡栈数据,上面程序中
mov esp,4
就是平衡栈数据
如果没有平衡会报错,如图:
上一篇: PHP的zip 使用方法_PHP教程
下一篇: CSS如何实现反方向圆角?(代码)