- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
不用main函数的编程
序号: 编码: 湖南理工学院2011年度“挑战杯”
大学生课外学术科技作品竞赛
作 品 申 报 书 作品名称: 不用main函数的编程 学院全称: 信息与通信工程学院 申报者姓名 (集体名称): 李雄略 周霞林 罗英 季相灵 类别:
自然科学类学术论文
哲学社会科学类社会调查报告和学术论文
科技发明制作A类
科技发明制作B类
竞 赛 组 委 会 制
二○一一年三月
A2申报者情况(集体项目)
申报者代表情况 姓 名 李雄略 性别 男 出生年月 1989年 8月 院别、专业、年级、班 信息学院信息工程08级信工班 电话 1座机电话号码40 作品名称 不用main函数的编程 其他作者 姓 名 性别 年龄 院别、专业、年级、班 联系电话 周霞林 男 21 信息学院信息工程08级信工班 1座机电话号码48 罗英 女 21 信息学院信息工程08级信工班 1座机电话号码57 季相灵 女 21 信息学院信息工程08级信工班 1座机电话号码54 B1.申报作品情况(自然科学类学术论文)
说明:1.必须由申报者本人填写;
2.作品分类请按作品的学术方向或所涉及的主要学科领域填写。
作品全称 不用main函数的编程 作
品
分
类 A.机械与控制(包括机械、仪器仪表、自动化控制、工程、交通、建筑等) √B.信息技术(包括计算机、电信、通讯、电子等) C.数理(包括数学、物理、地球与空间科学等) D.生命科学(包括生物、农学、药学、医学、健康、卫生、食品等) E.能源化工(包括能源、材料、石油、化学、化工、生态、环保等) 作品撰写的目的和基本思路 深入了解编译和链接过程,从汇编语言来看待C语言,运用汇编语言解释、理解c语言的程序。 作品的科学性、先进性及独特之处 C程序最大的特点就是所有的程序都是用函数来装配的。函数调用main函数概述
日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现。在C++程序的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代码调用。 一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main 函数”,也就是“主函数”。比如有个“做菜”程序,那么“做菜”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。 main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main函数。在比如,用于专业环境的程序-----如机器人中的控制芯片--可能不需要main函数。搭建一个精简的C语言开发环境
使用寄存器
使用内存空间
不用main函数编程
函数如何接收不定量参数
搭建一个精简的C语言开发环境
找到一些对我们必须要用到文件,让我们能更好的研究我们所要研究的问题
TC编译一个简单的文件simple.c时,在只有tc.exe的情况下,缺少的依次是:
1: c0s.obj: 用于小模式 small ? 的启动文件,*.obj是用于启动main 函数的,即初始化程序的运行环境,然后将控制权交给main使用寄存器
写main函数:
main _AX 1;
_BX 1;
_CX 2;
_AX _BX+CX;
_AH _BL+CL;
_AL _BH+CH; 编译连接,生成ur1.exe
Main函数的代码在代码段中。
用debug运行到Cs:01fa代码如下:
Push bp
Mov bp,sp
Mov ax,0001
Mov bx,0001
Mov cx,0002
Mov ax,bx
Add ax,cx
Mov ah,bl
Add ah,cl
Mov al,bh
Add al,ch
Pop bp
Ret
可见除前面三条语句和后面两条语句与在ur1.c源文件不同外,里面的代码是相同的。而push bx 和 pop bp ret 正好与一般子程序的框架相似,于是猜相可能这个main函数是以子程序的形式放在内存当中的。
将main函数在代码段中的偏移地址打印出来后 printf “%x”,main ; ,恰好是01fa,查看ur1.exe程序的cs:01fa处的代码:push bp,程序后面的代码是上面列出来的相同。
1:printf “%x\n”,main ;为什么能将main函数在代码段的偏移地址打印出来?
在这里,main是当作参数传进去的,从这里来理解的话,main在这里就只是一个变量,而这个变量里面正好存储了这个函数在代码段中的偏移地址,由此推断,mai
文档评论(0)