- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
研究实验一
搭建一个精简的C语言开发平台
研究目的
通过搭建C语言开发平台,认识到汇编语言对于深入理解其他领域知识的重要性。
对前面所学习的汇编知识进行融合贯通。
对用研究的方法进行学习进行体验
培养自己独立研究问题的能力。
研究原理
我们要搭建一个精简的C语言开发平台,必须要对C语言开发环境有一个清晰的认识了解。TC2.0软件里有很多子文件和文件夹,而我们的目的是搭建一个精简的C语言开发平台,顾名思义就是要找出我们编译连接程序必须的文件,其他的文件就可以不要。我们可以在程序编译连接中,根据出现的错误,一步一步去把我们程序必须的文件夹找出来。
研究步骤和过程
安装TC2.0在D盘根目录下,文件名为“TC2.0”。
在C盘根目录下建立一个文件夹“minic”用来存放我们已知解决问题要有的程序和文件。在DOC环境下,输入下面的指令:c:\md minic
把TC.EXE文件拷贝到minc文件夹里,具体操作如下:在DOC中,minic目录下输入如下指令:
Copy d:\tc2.0\tc.exe
打开TC2.0输入程序,保存,其文件为“WO.C” 同时设置TC2.0的工作路径,如下图
设置后,保存好。
进行编译:
编译成功显示:
生成文件WO.OBJ
连接:
出现错误,显示连接错误:不能打开C0S.OBJ文件
查找C0S.OBJ文件,复制到文件夹minic
按照步骤6和7的方法,连续找出缺失的必须文件,拷贝到minic文件夹,直到成功生成WO.EXE文件,完成后minic文件夹里有如下图的文件:
遇到的问题与总结
在把TC2.0中的内容拷贝到minic文件时,自己指令输错了,后来通过多次试验终于成功了,至此发现自己对DOC的很多指令很不熟悉,今后还的加强在这方面的学习。
在找C0S.OBJ时把其中的“0”看成是字母‘o’,导致一直找不到文件,疑惑了不久,后来去查找TC2.0文件夹,才发现其中的是数字0不是字母o.
通过这个问题感觉自己还不细心,做程序最重要就是要非常细心,不能出一点擦错。
3. WO.EXE文件生成了,自己去验证了下,发现在程序开始加一个“#include”就识别不了了。这个精简的C语言开发平台局限性很大。
4.自己研究了一下,tc里的路径设置,tc保存路径需要生成TCCONFIG.TC文件和TCPICK.TCP文件,这两个文件默认放在C旁的根目录下。
研究实验二
使用寄存器
研究目的
对前面所学习的汇编知识进行融合贯通。
对用研究的方法进行学习进行体验
培养自己独立研究问题的能力。
研究步骤和思考
编写一个程序yan2.c
编译连接yan2.c,生成了yan2.exe文件,保存在minic中。
用Debug加载yan2,exe之后,用u命令查看其机器码和汇编代码。
自己想了下没找到对应的机器码。
找main函数在代码段中的偏移地址。
在tc中输入,然后编译连接;
在DOS运行他wo.exe,得到main的偏移地址是1fah
自己在别的程序中也打印了main的偏移地址,发现也是1fah。由此我得出一个结论:main的偏移地址是固定的。
对于为什么能打印main的偏移地址,我认为main就相当于一个标号,但这个标号在一定条件下是固定的,不能更改,我试了用别的字母代替main,编译出错。
用debug查看1fah处得指令
和C程序一一对应
验证:C语言将函数实现为汇编语言中的子程序
编写ur2.c,用DEBUG跟踪。
Call 020b相当于调用f(void)
子程序返回,返回值放在了AX中为3。
证明了 我们的设想是对的。
遇到的问题与总结。
第一次编写yan2.c时,我以为寄存器大小写一样可以,就把_AX写成了_ax发现编译错误了,证明了我的假设是错误的。
在用U查看yan2.exe的代码时,为什么代码不是从main的偏移地址开始的,而开始的那端代码是有什么作用类?,这里有个疑问,有待研究下面的试验。
研究实验三
文档评论(0)