汇编综合研究5 实现printf函数

本文探讨了如何通过汇编语言实现printf函数,分析了参数传递方式和信息存储位置。通过对不同参数类型的处理,包括字符、整数和字符串,展示了自定义printf函数的基本思路和实现过程。
摘要由CSDN通过智能技术生成

 

根据综合研究5showchar()函数,可以了解参数都是由栈传递的,所要传递参数的个数也可以由栈传递。那么printf函数要输出的参数肯定也是由栈传递。另外一点就是printf函数肯定有某种信息,这种信息记录了需要打印的个数。

 

main()

{

 printf("%c,%d/n",'a',2);

}

函数如上,编译连接后用反汇编查看cs:01fa

能看出来,打印的参数‘a’,2都是由栈传递。入栈的时候还有一个未知信息:mov ax0194

Push  ax

0194肯定不是我们需要打印的参数,那么它就是printf函数自己添加的。根据上面的假设,printf自己能够获取信息,得知所要打印参数的个数。这个信息应该也放在内存的某个位置。那么会不会0194就是那个位置的IP

查看一下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值