微机原理实验1

更新时间:2023-10-18 18:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 TDN-MD系统认识

实验目的:

1、了解TDN-MD系统的基本组成。 2、学习和熟练掌握DEBUG监控命令。

实验要求:

1、使用教学机前,应先熟悉其的各个组成部分及使用方法。 2、实验过程中要注意听老师讲解,按照老师的要求进行实验。

3、实验过程中要仔细观察实验现象,记录实验结果,并撰写实验报告。

相关理论知识:

一、 实验箱系统基本操作

1、启动实验箱系统:接通电源,打开位于系统右上角的电源开关。 2、启动桌面的WM86程序,进入汇编及调试工具。

3、选择“新建”命令,在出现的新建窗口中输入完整程序,并保存为.asm文件。 (注意:文件保存路径必须为英文,且文件名为不超过8字符的英文名称。)

4、选择菜单中的“汇编”和“连接”操作,根据提示信息检查程序是否正确,如有错误需对源程序进行修改后重新操作。

5、点击“装入程序”工具按钮,选择已生成的.exe文件,装入到0000:2000内存区域。 6、选择“调试”命令,弹出调试窗口,并出现系统提示符“>”及闪烁光标,表示系统已经启动就绪,等待输入DEBUG调试命令。(注意:调试窗口不能关闭,否则需要重新连接时可能会连接失败。)

二、 DEBUG监控命令及操作

TDN-MD系统的基本操作比较简单,通常有查看寄存器、存储器的内容,修改寄存器或存储器的内容,输入汇编语言源程序段并进行调试、跟踪执行等操作。这些操作是由选择教学计算机所提供的一组DEBUG监控命令来实现的,以下就通过具体的例子介绍这些命令的使用。

(1) R命令:查看或修改寄存器的内容

在命令行提示符状态下输入: R↙ ;显示所有寄存器当前的值

R <寄存器名>↙ ;显示某寄存器当前的值并可修改其内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

(2) D命令:显示一段地址单元中的数据

在命令行提示符状态下输入:

D [[段地址:]起始地址 [,尾地址]]↙ ;显示内存中连续一个区域的内容。 如 D 0100:2000或D 0100:2000,2010

连续使用不带参数的D命令,起始地址会自动增加。

(3) E命令:编辑指定地址单元中的数据

E [[段地址:]偏移地址]↙

注意:用E命令每次只能显示或修改一字节数据,进入E命令状态后,屏幕显示该单元原有内容,此时按“空格”键使地址向高地址方向移动,按“-”键使地址向低地址方向移动,输入数据表示填入新的内容,按回车键则退出E命令。

(4) A命令:启动小汇编程序

在命令行提示符状态下输入:

A [段地址:][偏移地址]↙

表示该程序将保存到[段地址:][偏移地址]开始的存储区域中,其中段地址和偏移地址省略时采用系统默认值。

注意:对于汇编语句的输入有如下规定: (1) 数字一律为不带H后缀的十六进制数

(2) 直接寻址方式一定要在地址[ ]前标注W或B,如

MOV B[2010],AL 或 MOV W[2010],AX 若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。

(5) U命令:反汇编指定地址单元中已有的程序

U [[段地址:]起始地址 [,尾地址]]↙ ;将指定存储区域的一串机器指令反汇编 U↙;每次只显示当前行

(6) G命令:连续运行已有的程序

G [=[段地址:]偏移地址]↙

G=0000:2000↙ ;必须有=号和段地址

表示无断点连续运行从段地址:偏移地址指定的入口程序。程序运行后,屏幕显示各寄存器的值,可以检查程序运行是否正确。

(7)T命令:单步运行指定程序

T [=[段地址:]偏移地址] ↙

如T =0000:2000↙表示从0000:2000地址起单步执行一条程序语句。 每次执行完毕,系统将显示CS、DS、IP、AX的内容。

实验内容:

一、在实验箱上直接输入程序并运行,熟悉DEBUG命令 1、实验程序:从3500H内存单元开始建立0-15共16个数据 地址(H) 机器码(H) 助记符 2000 BF0035 MOV DI,3500 2003 B91000 MOV CX,0010 2006 B80000 MOV AX,0000 2009 9E SAHF 200A 8805 MOV B[DI],AL 200C 47 INC DI 200D 40 INC AX 200E 27 DAA 200F E2F9 LOOP 200A 2011 EBFE JMP 2011

2、实验步骤

(1) 输入与修改程序

① 在“>”提示符下键入A2000↙,此时显示器上会显示代码段地址CS和偏移地址IP,就可以在光标指示处输入汇编程序,每输入一行回车后自动进入下一行,直到空的回车行表示退出输入程序状态。 ② 输入过程中,若在回车前发现本行有错误字符,可以按Backspace键删除错误指令后重新输入。 ③ 若当前指令有错,按回车后系统会提示“Error”,地址指针仍旧会停留再当前行,等待重新正确输入。 ④ 输入程序后,可以用U2000↙命令进行反汇编,重新显示已输入的程序。 ⑤ 当发现源程序有输入错误时,可用A命令对中间某一句进行相应修改。 (2) 运行程序

① 单步运行 T=2000↙

在此状态下每次运行一条指令就显示各寄存器的内容以及下一条待执行指令的地址IP。重复T↙命令就可以逐步运行整个程序,直至程序结束。 ② 连续运行 G=2000↙

Ctrl+c:中断程序运行,返回监控状态。 Ctrl+s:暂停程序运行,按下任意键恢复。

(3) 内存单元的修改与显示

① 查看3500H-350FH单元中的内容 D0000:3500↙

每次只可显示8字节数据,可用D3500,35FF↙来连续显示更多数据单元的内容。 ② 手动修改某一单元内容 E3500↙

空格:使地址向高地址方向移动。 -:使地址向低地址方向移动。 回车↙:退出E命令。

二、用汇编工具完成程序编写、汇编、链接及调试运行。

1、在wm86系统中执行新建命令,输入以下程序后保存为.asm文件。 CSEG SEGMENT ASSUME CS:CSEG START: MOV DI,3600H

MOV CX,0010H MOV AX,0000H SAHF

A1: MOV [DI],AL

INC DI INC AX DAA LOOP A1

MOV AH,4CH INT 21H

CSEG ENDS END START

2、对该源程序文件进行汇编和连接,分别生成.obj和.exe文件。 3、将.exe文件装入系统0000:2000内存区域。 4、进入调试窗口,完成以下操作: (1) 查看源程序是否正确装入:命令: U0000:2000 (2) 查看3600H内存单元的原始数据。命令: D0000:3600 结果: CC CC CC CC CC CC CC CC (3) 运行一次程序。命令: G=2000 (4) 重新查看3600H内存单元的数据是否发生改变:命令: D0000:3600 结果: 00 01 02 03 04 05 06 07

三、对EX1.ASM进行宏汇编和连接,得到可执行文件EX1.EXE后用CV进行调试查看运行结果,将调试界面截图。 调试界面:

运行

查看

四、对EX2.ASM进行宏汇编,改错后再次宏汇编并连接,得到可执行文件EX2.EXE后用CV进行调试查看运行结果,将调试界面截图。 调试界面: 运行

运行后内存

五、自行编写程序实现(A+B)*4/C,结果保存在D变量中(ABCD都是8位无符号数)。得到可执行文件EX2.EXE后用CV进行调试查看运行结果,将调试界面截图。 调试界面:

Ex3.asm 源代码

DATA SEGMENT A DB 12H B DB 12H C DB 2H D DB ?

DATA ENDS ;

SSEG SEGMENT STACK DW 100 DUP(?) SSEG ENDS ;

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:SSEG START: MOV AL,A ADD AL,B MOV BL,4 MUL BL DIV C

MOV D,AL

MOV AH,4CH INT 21H

CODE ENDS END START

调试界面

实验小结:

在这次实验中熟悉了DEBUG命令的使用,编译工具(WMD86),和其他调试工具的使用。

1、 WMD86的debug命令: A 输入程序 U 查看程序 G 运行 D 查看数据

2、 编译工具 wmd86使用

“新建” .asm文件,输入程序 “汇编”生成 .obj文件 “连接” 生成 .exe 文件

3、 其他编译调试工具使用:

打开MASM.EXE,输入汇编文件名,根据提示按回车键,生成.OBJ文件

打开 LINK.EXE,输入上一步生的.BOJ文件名,根据提示按回车键,生成.EXE文件 把上一步生成的.EXE文件,拖到DEBUG.COM程序中,进行调试

教师评语:

本文来源:https://www.bwwdw.com/article/0exf.html

Top