实验一 程序的机器级表示

2018-12-05 22:20

实验一 程序的机器级表示

一、实验目的

1.掌握高级语言源程序和目标机器代码的不同表示及其相互转换。 2.深刻理解高级语言和机器语言之间的关系。 3.掌握子程序设计的思想、方法及上机调试过程。 4.理解中断服务子程序的执行过程。

二、实验准备知识

1.IA-32中过程调用和返回指令的格式和功能。 2.子程序设计的思想和方法

(1)子程序是功能相对独立的程序段,它可以实现源程序的模块化,简化源程序结构,提高编程效率

(2)子程序定义:利用过程伪指令PROC和ENDP,格式如下: 过程名

PROC [NEAR|FAR]

;过程体

……

ENDP

过程名

其中:可选的参数指定过程的调用属性。没有指定过程属性,则采用默认属性NEAR。

NEAR属性:段内近调用,子程序只能被相同代码段的其他程序调用 FAR属性:段间远调用,子程序可以被相同或不同代码段的程序调用 (3)主程序(调用程序)调用子程序(被调用程序):利用CALL指令 (4)子程序返回主程序:利用RET指令

(5)保护现场:子程序开始处应该保护子程序中使用的寄存器(通常利

用堆栈),子程序返回前相应进行恢复。

(6)子程序中对堆栈的压入和弹出操作通常成对使用,以保持堆栈的平衡。

(7)子程序允许嵌套和递归

(8)处理好子程序与主程序之间的参数传递问题:利用寄存器、内存缓冲区及堆栈。

3.过程调用的执行步骤(假设P为调用者,Q为被调用者): (1)P保存现场(必要时);

(2)将入口参数(实参)放到Q能访问到的地方; (3)P保存返回地址,然后将控制转移到Q;

(4)Q保存P的现场,并为自己的非静态局部变量分配空间; (5)执行Q的过程体(函数体);

(6)Q恢复P的现场,释放局部变量空间; (7)Q取出返回地址,将控制转移到P。 4. Linux常用命令以及GCC编译器的使用命令。

三、实验性质

本实验为验证性实验。

四、实验学时

本实验学时为4学时。

五、实验内容及步骤

1 .用C语言编写一个完整的源程序,实现main函数调用一个子函数的功能。

2.在终端使用gcc编译器编译源程序,生成汇编文件并查看,分析汇编指令与C源程序的对应关系。

3.对汇编文件进行汇编,生成可重定位目标文件。 4.对目标文件进行链接,生成可执行文件。

5.对可执行文件进行反汇编,分析汇编指令与源文件语句的关系,找到主程序所对应的指令代码。

六、实验要求

1.实验前要做好充分准备,包括程序框图,源程序清单,调试步骤,调试方法,以及对程序结果的分析等。

2.独立完成,严禁抄袭。 3.学会解决调试过程中的错误。

七、实验报告内容

1.画出程序框图,写出源程序清单及在Linux操作系统中运行程序的过程。

2.写出程序执行过程中遇到的问题是如何解决的,并对执行过程中的问题进行分析。

3.给出GCC的命令及运行结果截图,并对执行结果进行分析。 4.收获及体会。


实验一 程序的机器级表示.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:像经济学家那样思考2016尔雅答案大全汇编

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: