微实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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处输入下列内容:

相关文档
最新文档