实验报告样本.docx
《实验报告样本.docx》由会员分享,可在线阅读,更多相关《实验报告样本.docx(17页珍藏版)》请在冰点文库上搜索。
实验报告样本
(此文档为word格式,下载后您可任意编辑修改!
)
东南大学
《微机系统与接口(含实验)》
实验报告
实验一指令与汇编语言基础
实验二汇编语言程序设计
姓名:
贺陈锴学号:
专业:
电类强化2班实验室:
计算机硬件技术
实验时间:
2015年04月6日报告时间:
2015年04月12日
评定成绩:
审阅教师:
一.实验目的与内容
实验目的:
1、了解命令行操作基本方式和基本命令,掌握PC环境下命令行方式的特点。
2、掌握汇编语言程序指令编辑基本框架程序,完成宏汇编、连接操作,实现运行;
3、熟练掌握动态调试程序TDDEBUG常用命令或窗口功能,学会动态调试程序的基本方法。
4、利用框架程序检验80868088汇编语言(MASMTASM)的各种指令性与指示性操作功能和语法,并了解它们与目标代码之间的关系;检验典型DOSBIOS功能调用,实现简单的人机交互功能。
基本实验内容:
(1)掌握进入全屏命令行方式、修改环境的两种方法
(2)确定源程序的存放目录,构建个人实验环境;
(3)建立、编辑汇编源程序,构建典型的汇编程序框架;
(4)用汇编工具(MASMTASM.EXE)汇编源程序产生OBJ目标文件;
(5)用链接程序(LINKTLINK.EXE)产生EXE可执行文件;
(6)用调试工具软件(Debug.exeTD.EXE)调试执行程序;
1)观察CPU寄存器、存储器环境;
2)单步、断点运行,观察中间结果;
3)完成正常执行;
4)修改中间运行环境(寄存器,存储器);
5)直接编写程序片断,验证指令功能
实验内容一:
编辑(EDIT):
基本的汇编语言格式:
段,变量,过程;汇编(MASM):
产生.LST文件;链接(LINK).MAP文件(调试观察源-目标关系)
多模块程序,.LST,.MAP文件(调试观察源-目标关系)
DOSBIOS调用功能(IO)调试验证
INT21HINT16H
TASMziTLINKvTD带符号(Symble)调试(观察源-目标关系)
实验内容二:
1.输入字符串,作大小写变换,显示结果
2.输入十进制数N(<=65535),转换成十六进制数,显示在屏幕上(有检错功能)
3.改写成子程序结构
4.N<=12时用递归算法实现阶乘;
5.采用双模块结构;采用软件中断调用(INT80H,用DEBUG跟踪调试)
二.基本实验原理
运行汇编程序必备的软件环境:
DOS操作系统;汇编软件系统。
汇编系统盘应包含如下文件:
MASM宏汇编程序文件(TASM)
LINK连接程序文件(TLINK)
CREF索引程序文件(也可不用)
EDIT文本编辑程序(或PE等文本编辑程序)
用户通过屏幕编辑程序EDIT(各功能)键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为·ASM。
(XXX.ASM)
MASM汇编程序:
格式、宏、模块OBJ:
浮动汇编(相对关系)、段、变量待定位
执行宏汇编程序MASM----生成目标文件.OBJ,辅助文件LST,CRF(可选)
用汇编语言编写的源程序必须是一个完整的源程序,才能经过宏汇编程序MASM的汇编,生成一个目标程序。
为了完成汇编任务,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。
OBJ将源程序的操作码部分变为机器码,但地址操作数是可浮动的相对地址,而不是实际地址,因此需经LINK连接文件进行连接才能形成可执行文件。
8086功能结构图
三.方案实现与测试
实验一:
调试num程序
1、使用edit编辑asm文件:
键入MASM则调入宏汇编程序:
num为源程序名(num.asm),方括号中是机器规定的默认文件名,默认只生成(num.obj)文件。
如果用户需要列表文件(.LST)和交叉索引文件(.CRF),则可在[NUL.LST]和[NUL.CRF]后键入文件名。
同样,按照下图中的方法,通过连接(LINK),可以生成(num.map)文件:
列表文件(.LST)是通过汇编程序(MASM)产生的,可以在DOS状态下用TYPE命令显示或打印该文件,
以便分析调试源程序。
列表程序由三部分组成:
(1)源程序和目标程序清单
(2)段信息汇总表
(3)符号汇总表
2、多模块程序
将以上的num和一个add.asm汇编后进行连接,并用type查看numadd.map中的内容:
可以看出,由连接程序LINK产生的扩展名为.MAP文件,它实际上是连接程序的列表文件,它给出了每个段的地址分配情况及长度。
而且由于本例是多模块结构,实际上使用了两个代码段,因而图中显示了两个CODE段的地址范围,但是入口地址entrypoint只有一个。
4、3、DOSBIOS调用功能(IO)调试验证
用TD打开num文件,F7单步调试,观察执行int21h中断时各寄存器的内容变化情况:
5、TASMziTLINKvTD带符号(Symble)调试(观察源-目标关系)
实验二:
1、大小写转换运行结果为:
正确
2、输入十进制数N(<=65535),转换成十六进制数,显示在屏幕上(有检错功能):
正确
2、改写成子程序结构:
loop1:
movoutput,0000h
movdx,offsetstring1
movah,09h
int21h
movdx,offsetinput
movah,0ah
int21h
movright,1
callchange
cmpright,0
jzerror
movdx,offsetstring2
movah,09h
int21h
movax,output
movdl,ah
shrdl,4
calldisp
movdl,ah
anddl,0fh
calldisp
movdl,al
shrdl,4
calldisp
movdl,al
anddl,0fh
calldisp
jmpgo
4.N<=12时用递归算法实现阶乘
代码片段如下:
over:
addoutput,bx
cmpoutput,0
jberror1
cmpoutput,0Ch
jaerror1
MOVAX,OUTPUT
CALLPCALC
MOVRESULT,AX
MOVOUTPUT,AX
RET
PCALC:
CMPAX,1
JNZPCALC1
RET
PCALC1:
PUSHAX
DECAX
CALLPCALC
POPBX
MULBX
RET
error1:
movright,0
changeendp
代码中PCALC段位递归函数和递归调用
四.提高与创新研究
1、修改string.asm使得实现大写转换成小写,小写也会转换成大写
相应代码段:
即增加一次判断,改变小写。
运行结果:
正确
2、通过C++编译器,将高级语言转化为汇编语言
下段C++代码:
通过编译器:
生成.cod文件:
五.分析与总结
通过实验我们掌握了如何进行宏汇编、连接操作,实现运行,以及用debug和TD进行程序的调试.,并且我们得以运用一些基础的汇编语言知识编辑简单代码。
这对我们以后利用汇编语言进行工程设计及实验具有重要意义。