微实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生实验报告
实验课程微机原理与接口技术
学院名称信息科学与技术学院
专业名称电子信息工程
学生姓名干娜
学生学号************
指导教师李志鹏
实验地点6B610
实验成绩
二〇一六年十月二〇一六年十二月
实验一、动态调试程序DEBUG
一、实验目的
1.动态调试程序DEBUG环境的搭建;
2. 掌握各种汇编指令的作用;
3. 掌握磁盘文件操作命令的使用;
4.掌握查找、比较、填充和移动内存命令的使用。
二、实验内容
1.搭建汇编调试环境,安装DOS系统;
2.进行DEBUG动态调试程序的启动与退出;
3.进行汇编、执行、跟踪与反汇编命令的编写与运行;
4.进行显示、修改内存和寄存器命令的编写与运行;
5.进行查找、比较、填充和移动内存命令的编写与运行。
三、DEBUG的启动与退出
DEBUG的启动:首先选择一个磁盘,建立一个名为“TEST”的文件,文件名可以任意,然后挂载DOS系统在任意磁盘上,执行代码界面为:
出现“-”表示执行成功,进入DEBUG调试环境,此后可以进行代码的编译与执行。
DEBUG的退出命令:-Q
四、汇编、执行、跟踪与反汇编
1.A命令:逐行汇编命令,主要用于小段程序的汇编和修改目标程序。使用逐行汇编命令的格式为:
A[地址]
实验内容:汇编一小段程序,DOS运行界面为:
该段程序完成了对AX,BX,CX,DX寄存器写入规定的数据。
2.G命令:启动运行一个程序或程序的一段,编写格式为:
G[=<起始地址>][<断点地址>…]
执行A命令的代码后,运用G命令查看各个寄存器状态:
结果分析:从运行结果可以看出,BX、CX、DX已经写入了输入值,但AX中的值并不是输入值,可能是AX寄存器的值写入后又被改变。
3.T命令
T命令用来逐条跟踪程序的运行,编写格式如下:
T[=<地址>][<跟踪条数>]
每条指令执行后,都要暂停并显示各寄存器的内容,跟踪执行实际上是单步执行,执行结果如下:
从地址100开始,跟踪三条指令,从执行细节可以看出AX、BX、CX、DX都写入了程序给定的值,IP指针的值也是逐条递增。
4.U命令:用来对二进制代码程序进行反汇编,常用于分析和调试目标程序,引用格式如下:
U[<地址>]
对前面那段程序进行反汇编,运行界面如下:
结果分析:上述反汇编程序增加了二进制机器码,右侧两列是反汇编出的原来的程序,可以看出与之前输入的程序一致,同时增加了入栈出栈等信息。
五、显示、修改内存和寄存器命令
1.D命令
该命令是将调入内存的程序以十六进制形式以及对应的ASCII码字符形式显示出来,格式为:
D[<地址>]
显示内存地址从100H到200H这一段内容的程序执行为:
从结果可以看出从100H到110H这段地址中写入数据,其他地址写入数据都为0。
2.R命令
R命令的作用是显示寄存器内容,格式如下:
R (显示所有寄存器和标志)
R寄存器(显示指定寄存器)
RF (显示所有标志)
显示寄存器内容时,首先显示13个16位寄存器的内容,随后是标志寄存器的内容,最后一行是下一条要执行指令的地址及指令内容。
显示CX寄存器中的内容,并修改为0F,运行界面如下所示:
然后利用T命令跟踪,可以看到显示结果,CX寄存器的内容确实被修改为0F
实验二、DEBUG命令及8086指令使用
一、实验目的
通过实验复习和掌握下列知识:
1.8086汇编指令:MOV、ADD、ADC、SUB、SBB、DAA、
XCHG;
2.DEBUG命令:A、D、E、F、H、R、T、U;
3.BCD码、ASCLL码以及用十六进制数表示二进制数的方法;
4.寄存器:AX、BX、CX、DX、F、IP。
二、实验内容
1.DEBUG命令的使用实验;
2.常用8086汇编指令练习。
三、DEBUG命令的使用
实验步骤:
1.输入“DEBUG”进入DEBUG控制状态,显示提示符“-”;
2.用命令F 1001 0F“A”将“A”的ASCLL码填入内存;
3.用命令D 1001 0F观察内存中的十六进制码以及屏幕右边的ASCLL字
符;
4.用命令F 1101 1F 41重复上两项实验,观察结果并比较;
5.用命令E 100 303132…将30H-3FH写入地址为100H开始的内存单元,再
用命令D观察结果,看输入的十六进制是什么字符的ASCLL码;
6.用H命令检查下列各组十六进制数加减结果并和手算结果比较:
34H、22H 56H、78H A5H、79H 1284H、5678H 3A758H、347FH 7.用R命令检查个寄存器内容,注意AX、BX、CX、DX、IP及标志ZF、
CF和AF的内容;
8.用R命令将AX、BX内容改为1050H及22A8H。
执行步骤1,2,3得到的结果为:
从运行结果可以看出A字符被写入内存,同时写入的内容是其ASCLL码
41。
执行步骤4,得到的结果为:
从运行结果可以看出写入ASCLL码和直接写入字符,得到的效果是一样的,屏幕右边的ASCLL码字符都被写入和显示。
执行步骤5,运行结果为:
可以看出30H-3FH对应的ASCLL字符“0123456789:;<=?. ”被写入,将其ASCLL码对应的字符显示在了屏幕右侧。
执行步骤6,用H命令实现两个数的加减,“和”显示在前面,“差”显示在后面,运行的结果为:
经过手算,可以看出计算结果与运行结果一致,在进行减法运算时,应当用操作数的补码。
执行步骤7,结果为:
由运行结果可以看出标志位ZF的值为0,CF的值为0,AF的值为0,AX、BX、CX、DX寄存器的都为0,IP指针指向地址0100H。
四、常用8086汇编指令练习
1.传送指令
用A指令在内存100H处输入下列内容: