汇编语言综合研究试验4--不用main函数编程

本文探讨了C程序为何必须从main函数开始执行的机制,分析了C0S.obj文件的作用,以及如何通过修改该文件使程序跳过main函数。通过实验,深入理解了编译与连接过程,揭示了C语言程序运行的底层细节。

试验4内容是比较多的,不过没关系,照着书上要求来,就可以

一.实验过程

1.不用main函数,编写f.c程序并保存在c:\minic下
编译时,没有问题
在这里插入图片描述
连接时,报错Linker Error:Undefined symbol ‘_main’in module C0S
在这里插入图片描述
错误信息说明,c语言的入口函数main函数是被C0S.obj所调用,错误信息与c0s.obj有关(因为c0s.obj是启动代码)
2.使用link.exe连接f.obj文件,生成f.exe文件,debug查看汇编代码,文件共有541个字节,不能正确返回,从反编译后的指令看到,偏移地址为0开始的程序就是我们编写的程序

在这里插入图片描述
在这里插入图片描述
3.编写m.c文件,编译,连接,debug查看m.exe的汇编代码

在这里插入图片描述
与上一个不能正确返回的程序比较,这个程序中我们编写的程序位于偏移地址为01FA的位置,这个程序有4.17KB字节。但是我们编写的部

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值