桂 林 理 工 大 学
实 验 告
班级 软件工程16-1班 学 3162052051116 姓名 张识虔 同组实验者
实验名称 显示程序实验 日期 2018年 11 月12 日
一、实验目的:
二、实验环境:
三、实验内容:
2.1 显示程序实验
2.1.1 实验目的
1. 掌握在 PC 机上以十六进制形式显示数据的方法。
2. 掌握部分 DOS 功能调用使用方法。
3. 熟悉 Windows 集成操作软件 Tdpit 的操作环境和操作方法。
2.1.2 实验设备 PC 微机一台、TD-PITD 实验系统一套。
2.1.3 实验内容及说明
一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将 数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形 式显示在屏幕上,并利用 DOS 功能调用完成一些提示信息的显示。通过本实验, 初步掌握实验系统配套操作软件的使用。 实验中常使用的 DOS 功能调用(INT 21H)说明如下。
(1) 显示单个字符输出 入口:AH=02H 调用参数:AL=输出字符
例如: MOV AH ,02H INT 21H
(2) 显示字符串 入口:AH=09H 调用参数:DS:DX=串地址,’$’为结束字符
例如: MOV AH ,09H INT 21H
(3) 键盘输入并回显 入口:AH=01H 返回参数:AL=
例如: MOV AH ,01H INT 21H
(4) 返回 DOS 系统 入口:AH=4CH 调用参数:AL=返回码
例如: MOV AH ,4CH INT 21H
汇编语言源程序包含指令和伪指令。如 ADD AL,BL 和 MOV AX,1000 都是指令。在汇编过程中伪指令并不形成任何代码,常用的伪指令有:
(1) 确定 CPU 的伪指令.586/.586 P。为了使汇编语言准确运行,要求在汇编 语言源程序的开头用伪指令“.586”或者“.586 P”来表示当前的程序是在 Pentium 系统中运行。否则汇编程序采用默认值“.8086”;
(2) 标 赋值伪指令 EQU;
(3) 定义存储单元伪指令 DB、DW、DD、DQ 和 DT。DB 定义字节,DW 定义字,DD 定义双字,DQ 定义四字,DT 定义 10 个字节;
(4) 定义存储单元类型伪指令 BYTE、WORD、DWORD;
(5) 段定义伪指令 SEGMENT、ENDS、ASSUME 和 ORG。伪指令 SEGMENT 和 ENDS 总是成对使用,用这一对伪指令可将汇编语言与程序分成几个段,通 常分为数据段、堆栈段和代码段。ASSUME 是告诉汇编程序哪个段为数据段, 哪个段为堆栈段,哪个段为代码段;
(6) 简约段定义伪指令.DATA/.STACK/.CODE;
(7) 过程定义伪指令 PROC、ENDP、NEAR、FAR。定义过程的伪指令 PROC 和 ENDP 总是成对出现,这两条伪指令中间的内容作为一个子程序;
(8) 程序结束伪指令 END。
从存储区域读出的数据为十六进制数据,本程序设计的难点在于将十六进制 的数字转换成 ASCII 码显示。数值与 ASCII 的关系:0~9 转换成 ASCII 码时直 接在数值上加上 30H 即可,A~F 转换成 ASCII 码时直接在数值上加上 37H。程 序流程图如图 2-1-1 所示,根据程序流程图编写汇编源程序。
图 2-1-1 显示程序参考流程
根据上述流程图编写实验程序(例程文件名:A1.ASM)
2.1.4 实验步骤
1.使用 MASM5.0 实现
(2) 编译 A1.asm 文件 在 DOS 下打开 MASM5.0 所在目录。方法:开始->运行输入 cmd 可进入 DOS
系统,依次输入 E: 回车,进入 E 盘根目录,然后输入 E:>CD MYCODE 回车,可
打开 E:MYCODE 目录。打开文件目录后输入命令:E:MYCODE> D:MASM5.0MASM A1.ASM ,之后连续 3 次回车。程序无错则在 E:MYCODE中增加文件 A1.OBJ。如图 2-1-2 所示。
图 2-1-2 生成 A1.obj 文件
(3) 链接 A1.obj 文件 生成的 obj 文件并不是一个可执行文件,还需要经过 LINK 链接之后才能生 成 A1.exe 文件。在界面输入 E:MYCODE>D:MASM5.0LINK A1.OBJ 之后连续 3 次回车,可生成.exe 文件。如图 2-1-3 所示。
图 2-1-3 生成 A1.exe 文件
此后可在 E:MYCODE 目录下发现一个 A1.exe 文件。此文件是一个可执行 文件。如图 2-1-4 所示。
图 2-1-4 MYCODE 文件夹中显示 A1.exe 文件
本实验的结果就是将 ASCII 码‘a’的十六进制数值在屏幕上显示出来。从 屏幕上看显示结果可知实验完成。但是运行 a1.exe 文件的速度非常之快,我们无 法知道程序运行的过程,下面将介绍使用 DEBUG 调试来查看程序的运行步骤。
(4) DEBUG 调试 DEBUG 命令式操作系统的一个外部命令,不是 MASM5.0 的命令。 进入 DEBUG,可以对程序进行一步一步的跟踪执行,可以查看每条指令执 行后,CPU 寄存器的变化,内存单元的变化,可以修改寄存器内容和存储单元 内容,可以连续执行多条指令或全速执行程序等。
常用的调试命令如下: -u 反汇编 -r 显示寄存器内容 -g [=address1][address2][address3] 执行到断点行,如: -g 12 为执行到第 12
行
-t [=address][value] 跟踪,配合-g 使用 如:-t 12 1 为从第 12 行开始,每执 行 1 条指令后停下来 -e address [list] 修改地址 address 处的值为 list,list 不写时默认为 0 -d 查看数据 -q 退出返回操作系统 下面我们调试 a1.exe 文件。
输入命令 E:MYCODE> DEBUG A1.EXE 回车可进入调试系统,先输入命令
– u 对文件进行反汇编,如图 2-1-5 所示。
图 2-1-5 反汇编
输入命令-g 8 回车可将程序运行到地址为 0008 处的指令 MOV AH,09 停
止,再用-t 回车命令单步跟踪,观察 AX 寄存器的值。如图 2-1-6 所示。
图 2-1-6 单步调试观察寄存器的值
由地址 0013 处的程序 MOV SI,002C,可知 ASCII 码’a’的数值存放在偏移地
址为 002C 的位置上,通过命令 d 可查询。输入命令-g 16 回车将程序运行到偏移
地址为 0016 处,输入命令-d 002C 回车,可查看内存中的数据,数值为 61H。图
2-1-7 的程序运行结果 61,说明程序正确。如图 2-1-7 所示。
图 2-1-7 查看内存中的数据
可输入命令-e 002C 55 回车,将偏移地址 002C 处的 61,改成 55,通过命令
-d 002C 回车 d 002C 查看更改后的结果为 55,输入命令-g 回车回车可全速运行
程序到程序结束,可见运行结果为 55,正是之前修改过的值,如图 2-1-8 所示。
图 2-1-8 修改偏移地址查看运行结果
通过上述的 DEBUG 命令操作要熟悉对程序的调试。
2.使用 Tdpit 集成操作软件实现
(2) 根据程序设计使用语言不同,在“语言设置”菜单项中设置所使用的语 言。如图 2-1-9 所示。该项一经设置,会再下次启动后仍保持不变。
图 2-1-9 设置语言环境
(3) 开始新建文件进行编程。点击“文件”菜单项中的“新建”,可以新建一 个空白文档。默认名为 Td-pit1。如图 2-1-10 所示。
图 2-1-10 新建空白文档 (
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!