实验一 显示程序实验
一、实验目的
1. 掌握在PC机上以十六进制形式显示数据的方法; 2. 掌握部分DOS功能调用使用方法;
3. 熟悉Tddebug调试环境和Turbo Debugger的使用。
二、实验所用设备
1. PC微机一台。
三、实验内容
一般来说,程序需要显示输出提示运行的状况和结果,有的还需
要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用(INT 21H)。
(1) 显示单个字符输出
入口:AH=02H
调用参数:DL=输出字符 (2) 显示字符串
入口:AH=09H
调用参数:DS:DX=串地址,’$’为结束字符 (3) 键盘输入并回显
入口:AH=01H
返回参数:AL=输出字符 (4) 返回DOS系统
入口:AH=4CH
调用参数:AL=返回码
第1页
四、实验步骤
1. 运行Tddebug软件,选择Edit菜单,根据实验内容的描述编
写实验程序,本实验显示部分参考实验流程如图1-1示; 2. 使用Compile菜单中的Compile和Link对实验程序进行汇
编、连接;
3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,
数据传输指令执行后,各寄存器及数据区的内容; 5. 更改数据区中的数据,考察程序的正确性。
图1-1 显示程序实验流程图
第10页
五、参考程序清单
DATA SEGMENT
MES DB 'Show a as hex:', 0AH,0DH,'$' SD DB 'a' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET MES ;显示提示信息 MOV AH, 09H INT 21H
MOV DI, OFFSET SD MOV AL, DS:[DI]
AND AL, 0F0H ;取高4位 SHR AL,4
CMP AL, 0AH ;是否是A以上的数 JB C2
ADD AL, 07H
C2: ADD AL, 30H
MOV DL, AL ;显示字符 MOV AH, 02H INT 21H
MOV AL, DS:[DI]
AND AL, 0FH ;取低4位 CMP AL, 0AH JB C3
ADD AL, 07H
C3: ADD AL, 30H
MOV DL, AL ;显示字符 MOV AH, 02H INT 21H
MOV AX, 4C00H ;返回DOS INT 21H
CODE ENDS END START
第 3 页
六、实验报告内容及要求
1.打开应用软件,参考实验程序。 2.保存程序,编译,链接,生成。 3.运行成功,在dos环境下显示为:
七、实验思考
对PC机上以十六进制形式显示数据的方法有一定了解, 了解了DOS功能调用使用,熟悉了调试环境和Turbo Debugger的使用。
第 4 页
实验二 数据传送实验
一、实验目的
1. 熟悉Tddebug调试环境和Turbo Debugger的使用; 2. 掌握与数据有关的不同寻址方式。
二、实验所用设备
1. PC微机一台。
三、实验内容
将数据段中的一个字符串传送到附加段中,并输出附加段中的
目标字符串到屏幕上。
参考实验程序:
DDATA SEGMENT ;定义源数据段 MSR DB \ LEN EQU $- MSR DDATA ENDS EXDA SEGMENT ;定义附加数据段 MSD DB LEN DUP(?) EXDA ENDS
MYSTACK SEGMENT STACK ;定义堆栈段
DW 20 DUP(?)
MYSTACK ENDS CODE SEGMENT ;定义代码段
ASSUME CS:CODE, DS:DDATA, ES:EXDA
START: MOV AX, DDATA
MOV DS, AX ;装载数据段寄存器 MOV AX, EXDA
MOV ES,AX ;装载附加数据段寄存器 MOV SI, OFFSET MSR ;设置SI MOV DI, OFFSET MSD ;设置DI MOV CX, LEN
NEXT: MOV AL, [SI] ;开始传输数据
第 5 页