东南大学微机实验报告Word格式.doc
- 文档编号:14563163
- 上传时间:2022-10-23
- 格式:DOC
- 页数:10
- 大小:293.50KB
东南大学微机实验报告Word格式.doc
《东南大学微机实验报告Word格式.doc》由会员分享,可在线阅读,更多相关《东南大学微机实验报告Word格式.doc(10页珍藏版)》请在冰豆网上搜索。
4、利用框架程序检验8086/8088汇编语言(MASM/TASM)的各种指令性与指示性操作功能和语法,并了解它们与目标代码之间的关系;
检验典型DOS/BIOS功能调用,实现简单的人机交互功能。
基本实验内容和要求(重点:
段存储结构和数据变量)
(1)掌握进入全屏命令行方式、修改环境的两种方法
(2)确定源程序的存放目录,构建个人实验环境;
(3)建立、编辑汇编源程序,构建典型的汇编程序框架;
(4)用汇编工具(MASM/TASM.EXE)汇编源程序产生OBJ目标文件;
(5)用链接程序(LINK/TLINK.EXE)产生EXE可执行文件;
(6)用调试工具软件(Debug.exe/TD.EXE)调试执行程序;
1)观察CPU寄存器、存储器环境;
2)单步、断点运行,观察中间结果;
3)完成正常执行;
4)修改中间运行环境(寄存器,存储器);
5)直接编写程序片断,验证指令功能
实验内容一:
编辑(EDIT):
基本的汇编语言格式:
段,变量,过程;
汇编(MASM):
产生.LST文件;
链接(LINK).MAP文件(调试观察源-目标关系)
多模块程序,.LST,.MAP文件(调试观察源-目标关系)
DOS/BIOS调用功能(I/O)调试验证
INT21H/INT16H
TASM/ziTLINK/vTD带符号(Symble)调试(观察源-目标关系)
实验内容二:
1.输入字符串,作大小写变换,显示结果
2.输入十进制数N(<
=65535),转换成十六进制数,显示在屏幕上(有检错功能)
3.改写成子程序结构
4.N<
=12时用递归算法实现阶乘;
5.采用双模块结构;
采用软件中断调用(INT80H,用DEBUG跟踪调试)
二.基本实验原理
运行汇编程序必备的软件环境:
DOS操作系统;
汇编软件系统。
汇编系统盘应包含如下文件:
MASM宏汇编程序文件(TASM)
LINK连接程序文件(TLINK)
CREF索引程序文件(也可不用)
EDIT文本编辑程序(或PE等文本编辑程序)
用户通过屏幕编辑程序EDIT(各功能)键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为·
ASM。
(XXX.ASM)
(2)MASM汇编程序:
格式、宏、模块è
OBJ:
浮动汇编(相对关系)、段、变量待定位
执行宏汇编程序MASM----生成目标文件.OBJ,辅助文件LST,CRF(可选)
用汇编语言编写的源程序必须是一个完整的源程序,才能经过宏汇编程序MASM的汇编,生成一个目标程序。
为了完成汇编任务,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。
OBJ将源程序的操作码部分变为机器码,但地址操作数是可浮动的相对地址,而不是实际地址,因此需经LINK连接文件进行连接才能形成可执行文件。
三.方案实现与测试
实验一:
以string程序为例
1)汇编过程
使用edit编辑文件
在DOS状态下,键入MASM则调入宏汇编程序,屏幕显示与操作如下:
string为源程序名(string.asm),方括号中是机器规定的默认文件名,默认只生成(string.obj)文件。
如果用户需要列表文件和交叉索引文件,则可在[NUL.LST]和[NUL.CRF]后键入文件名即可。
同样,按照下图中的方法,可以生成(string.map)文件
列表文件(.LST)是通过汇编程序(MASM)产生的,可以在DOS状态下用TYPE
命令显示或打印该文件,以便分析调试源程序。
列表程序由三部分组成:
(1)源程序和目标程序清单
(2)段信息汇总表
(3)符号汇总表
3)多模块程序
以string1和string2为例
文件<
string1.asm>
中内容:
publicinput
extrndisp:
far
datasegment
inputdb100,100dup(0)
string1db0dh,0ah,'
pleaseinputyourstrings'
0dh,0ah,'
$'
string2db0dh,0ah,'
thestringsyouinputare:
'
string3db0dh,0ah,'
Doyouwanttocontinue(y/n):
dataends
stackssegmentstack
db256dup(0)
stacksends
codesegment
assumecs:
code,ds:
data,ss:
stacks
mainprocfar
start:
movax,data
movds,ax
movax,stacks
movss,ax
loop1:
movdx,offsetstring1
movah,09h
int21h
movdx,offsetinput
movah,0ah
int21h
movdx,offsetstring2
int21h
calldisp
movdx,offsetstring3
movah,1
cmpal,'
y'
jzloop1
movah,4ch
mainendp
codeends
endstart
string2.asm>
中内容:
extrninput:
byte
publicdisp
codesegment
assumecs:
code
dispprocfar
xorcx,cx
movcl,input[1]
movsi,2
again:
movdl,input[si]
cmpdl,61h
jbnext
cmpdl,7ah
janext
subdl,20h
next:
movah,02h
int21h
incsi
loopagain
ret
dispendp
codeends
将string1.asm和string2.asm汇编后链接
用type语句来查看string.map中的内容.
可以看出,由连接程序LINK产生的扩展名为.MAP文件,它实际上是连接程序的列表文件,它给出了每个段的地址分配情况及长度。
而且由于本例是多模块结构,实际上使用了两个代码段,因而图中显示了两个CODE段的地址范围,但是入口地址entrypoint只有一个。
4、DOS/BIOS调用功能(I/O)调试验证
用TD打开string.1文件,F7单步调试,观察执行int21H中断时各寄存器的内容变化情况。
5、TASM/ziTLINK/vTD带符号(Symble)调试(观察源-目标关系)
实验二
相应的程序及其调试已在实验一中完成,运行结果为
结果与预期相符.
2.输入十进制数N(<
3.改写成子程序结构
程序片段:
movoutput,0000h
movdx,offsetstring1
movright,1
callchange
cmpright,0
jzerror
movdx,offsetstring2
movax,output
movdl,ah
shrdl,4
calldisp
anddl,0fh
movdl,al
jmpgo
运行结果:
用debug调试程序
MOVAX,N
CALLPCALC
MOVRESULT,AX
PCALCPROC
CMPAX,1;
递归函数
JNZPCALC1
RET
PCALCENDP
PCALC1:
PUSHAX
DECAX
CALLPCALC;
递归调用
POPBX
MULBX
RET
Debug单步调试程序,并且不断通过-d来观察栈顶的变化情况.发现在递归调用的过程中,IP的后续内容被不断压入栈中,递归返回时又被释放出来.
四.提高与创新研究
通过C++编译器,将高级语言转化为汇编语言
程序1hello.c
#include<
stdio.h>
intmain()
{
printf("
Hello,world\n"
);
return0;
}
按照如下操作,可以生成含有二进制、汇编和高级语言的.cod文件
五.分析与总结
通过这几次试验,我基本上了解并掌握了如何完成宏汇编、连接操作,实现运行,以及用debug和TD进行程序的调试.通过TD和命令行调试,可以看到CPU寄存器和存储器的内容和地址等,也可以对其进行修改.
在编写调试程序的过程中出现了许多问题,
例如在十进制转化成十六进制的试验中,出现了如下错误
发现是‘shrdl,4‘这条语句出现错误,经分析,原来当移多位时,指令系统要求以为次数必须放在CL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 微机 实验 报告