实验要求:
1.上机前作好充分准备,包括程序框图、调试步骤、测试方法、对运行结果的分析等。
2.上机时要遵守实验室的规章制度,爱护实验设备。要熟悉与实验相关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在程序的调试过程中,有意识地学习及掌握DEBUG程序的各种操作命令,以便掌握程序的调试方法及技巧。
3.为了更好地进行上机管理,要求用硬盘(注:D盘下)存储程序,以避免文件丢失,此外,要求实验者按以下形式命名实验文件:
学号+字母(a/b/c…).扩展名 字母:实验题号
比如:03计算机2班章以敏编制的第2个程序,则命名为:031071203205b.asm
4.程序调试完后,须由实验辅导教师在机器上检查运行结果。
5.每个实验完成后,应写出实验报告。
实验报告:
实验报告的要求如下:
1基本信息。
包括:课程名称、实验名称、专业、班级、姓名、实验时间。
2实验报告编写要规范。
应包括:实验名称、目的、内容、原理、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。
③ 实验报告应附有实验原始记录和源程序清单。
加强实践能力的培养
实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。其中包括:实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等;开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序框图,目的是让每个实验者参照程序框图编写程序将实验成功地实现,在掌握其方法后,自己可用其他的程序设计方法加以实现。
序号 | 实验项目名称 | 内 容 提 要 | 主要仪器设备套数 | 实验类型 | 实验要求 | 计划学时 | 每组人数 |
1 | 8086指令操作 | 验证指令运行结果 | 40 | 验证型 | √ | 2 | 2 |
2 | 各进制数相加 | 设计两个两位十进制数相加程序 | 40 | 设计型 | √ | 2 | 2 |
3 | 各种数据转换 | 设计各种数据相互转换 | 40 | 设计型 | √ | 2 | 2 |
4 | 查表程序设计 | 对数据表实现顺序查找 | 40 | 设计型 | √ | 2 | 2 |
5 | 排序程序设计 | 对无序数据组实现排序 | 40 | 设计型 | √ | 2 | 2 |
6 | 递归子程序设计 | 采用递归设计方法解决数学递归问题 | 40 | 设计型 | √ | 2 | 2 |
一、 实验目的
1.熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2.掌握8086/8088的寻址方式及多字节数据的处理方法。
二、实验设备
1.硬件环境:IBM—PC及其兼容机
2.软件环境:操作系统DOS3.0版本以上;调试程序DEBUG. COM
三、实验内容和要求
实验内容:
a)利用DEBUG程序中的”E’命令,将两个多字节数”003F1AE7H”和”006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
b)分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元的数据相加,并将运算结果存放在DS:0208H单元中。
实验要求:
本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
四、START
预习要求
1.复习DOS启动方式和DOS有关命令。
2.阅读教材后的附录,熟悉掌握DEBUG调试程序中的A、D、E、G、Q、R、T、U
SI←200H
命令的书写格式及功能。
3.复习寻址方式和相关的数据传送指令及算术运算指令。
DI←204H
五、实验步骤
1.启动DOS操作系统。
2.运行DEBUG.COM程序(若当前盘为C)
BX←208H
C﹥DEBUG↙
—;(“—”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令)。
AX←[SI]
DX←[SI+2]
3.用“A”命令编辑和汇编程序
— A↙
126C:0100 MOV AX, [0200] ↙
126C:0103 MOV BX, [0202] ↙
AX←(AX)+[DI]
DX←(DX)+[DI+2]+CF
126C:0107 ADD AX, [0204] ↙
126C:010B ADC BX, [0206] ↙
126C:010F MOV [0208], AX↙
[BX]←(AX)
[BX+2]←(DX)+[SI+2]
126C:0112 MOV [020A], BX↙
126C:0116 HLT↙
126C:0117 ↙
—
END
注意:①DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六
进制数,其后不用“H”说明。
②在DEBUG下,源出现中不能使用“标号”、“变量”和一些伪指令。 图一
4.程序未执行前,用”R”命令观察相关寄存器的内容。
—R↙
如:(AX)= ,(BX)= ,(SI)= ,(DI)= ,
(CS)= ,(IP)=
5. 在程序未执行前,用”D”命令观察DS:0200H~DS:020BH字节单元的内容。
6. 用”T”单步操作命令对源程序逐条执行,观察AX、BX、CS、IP寄存器内容的变化,
并与预计的结果比较。最后用”D”命令观察DS:0200H~DS:020BH、字节单元的内容 。
六、实验结果分析
1.程序运行结果:(AX)= ,(BX)= , DS:0208H四字节单元的内容:
2.试用寄存器间接寻址方式编写程序段,完成上述程序的功能。(参考图一的程序流程图)
实验二 顺序程序设计
一、实验目的
1.学习数据显示的方法。
2.熟悉在PC机上用宏汇编MASM建立、汇编、链接、调试和运行8086汇编语言的过程。
二、实验设备
1.硬件环境:IBM—PC及其兼容机
2.软件环境:操作系统DOS3.0版本以上;宏汇编MASM5.0以上版本
三、实验内容
将两个两位十进制数相加,要求算术式以字符串的形式存放在DATA1为首的单元中,结果存放在DATA2为首的单元中。
START
四、参考流程图
显示算术式
被加数和加数以ASCⅡ码表示的数字转化为非压缩的BCD码
用ADD完成个位数相加
DAA调整结果送DATA2+2
用ADC完成十位数相加
DAA调整结果送DATA2+1及DATA2
显示结果
返回DOS
END
实验三 分支程序实验(1)
一、实验目的
1.掌握接收键盘数据的方法。
2.了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换。
3. 掌握汇编语言源程序的编辑、汇编、连接及调试过程。
二、实验设备
1.硬件环境:IBM—PC及其兼容机
2.软件环境:操作系统DOS3.0版本以上;宏汇编MASM5.0以上版本
三、实验内容
接收键盘字符(以回车键为结束),并将其中的小写字母转变为大写字母,然后显示在屏幕上。
四、参考流程图
START
BX指向字符行缓冲区首址
INT 21H的01H号功能调用接收键入字符
是回车键?
Y
N
是小写字母?
N
小写字母的ASCⅡ码值转换为
大写字母的ASCⅡ码值
Y
存入字符缓冲区[SI]单元
SI加1指向下一单元
换行显示转换后的字符行缓冲区内容
返回DOS
END
实验四 分支程序实验(2)
一、实验目的
1. 掌握分支程序的设计方法
2. 掌握汇编语言源程序的编辑、汇编、连接及调试过程。
二、实验设备
1.硬件环境:IBM—PC及其兼容机
2.软件环境:操作系统DOS3.0版本以上;宏汇编MASM5.0以上版本(1)
三、实验内容
1.编写一个程序,显示AL寄存器中的两位十六进制数
2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符 START 四、参考流程图 START INT 21H的01H号功能调用接收键入字符 AL赋初值 AL=0DH? 取AL高位十六进制数送DL Y N ‵0′≤AL≤ ‵9′ DL >9 ? N Y Y N 是A-Z或a-z字符? DL+07H→DL N AL→DL Y DL=‵C′ DL+30H→DL INT 21H的02H号功能调用显示字符 INT 21H的02H号功能调用显示字符 取AL低位十六进制数送DL DL >9 ? N Y DL+07H→DL 返回DOS DL+30H→DL END INT 21H的02H号功能调用显示字符 返回DOS END 实验五 循环程序实验(1) 一、实验目的 1.掌握循环程序的设计方法 2.学会针对不同的问题,选用不同的组织循环的方法。 3.掌握汇编语言源程序的编辑、汇编、连接及调试过程。 二、实验设备 1.硬件环境:IBM—PC及其兼容机 2.软件环境:操作系统DOS3.0版本以上;宏汇编MASM5.0以上版本(1) 三、实验内容 1.编写一个程序,用二进制显示从键盘输入一个字符的ASCII码。 2.编写一个程序,记录某个字存储单元数据中1的个数,以十进制形式显示结果。 START 四、参考流程图 DS等初始化;16→CX;0→AX START 取字存储单元数据→BX INT 21H的01H号功能调用接收键入字符 BX循环左移一位 8→CX;AL→BL BL循环左移一位 CF=1 ? N Y AX+1→AX CF=1 ? N Y 31H→DL 30H→DL CX—1=0 ? Y N 10→DL INT 21H的02H号功能调用显示字符 AX/DL→AX;AX→DX CX—1=0 ? N 返回DOS DX∨3030H→DX Y 返回DOS INT 21H的02H号功能调用显示字符 END END DH→DL INT 21H的02H号功能调用显示字符 实验六 循环程序实验(2) 一、实验目的 1.掌握多重循环程序的设计方法 2.学会针对不同的问题,选用不同的组织循环的方法。 3.掌握汇编语言源程序的编辑、汇编、连接及调试过程。 二、实验设备 1.硬件环境:IBM—PC及其兼容机 2.软件环境:操作系统DOS3.0版本以上;宏汇编MASM5.0以上版本(1) 三、实验内容 编写一个程序,将数据段中以BUF为首址的连续N个字节数据(无符号数)从小到大排序,并在屏幕上显示。 四、参考流程图 START AL≤9? CL—1=0 ? Y N—1→CH DL+07H→DL BUF首址→SI;CH→CL DL+30H→DL [SI ] →AL INT 21H的02H号功能调用显示字符 [SI]→DL;DL∧0FH→DL AL≤[SI+1]? Y AL≤9? AL←→[SI+1];AL→[SI] Y DL+07H→DL SI+1→SI DL+30H→DL N Y INT 21H的02H号功能调用显示字符 CH—1=0 ? N ‘;’→DL Y BUF首址→SI;N→CH;4→CL INT 21H的02H号功能调用显示字符 [SI]→DL CH—1=0 ? N Y 返回DOS SI+1→SI DL逻辑右移四位 END 实验七 过程程序实验 一、实验目的 1.掌握过程程序的设计方法 2.学会针对不同的问题,选用不同的参数传递方法。 3.掌握汇编语言源程序的编辑、汇编、连接及调试过程。 二、实验设备 1.硬件环境:IBM—PC及其兼容机 2.软件环境:操作系统DOS3.0版本以上;宏汇编MASM5.0以上版本(1) 三、实验内容 从键盘输入一个数n(0≤n≤8),采用子程序调用及子程序递归设计方法实现求 X=n!的值并显示结果。 四、参考流程图 1)主程序框图 3) 显示子程序 START 子程序入口 0404H→CX INT 21H的01H号功能调用接收键入n值 DX→BX AL∧0FH→AL;0→AH BX循环右移CL次 调用求n! 子程序 BL→DL;DL∧0FH→DL 调用显示子程序 DL≤9? 返回DOS Y DL+07H→DL END N DL+30H→DL 2) 求n! 子程序 AX—1→AX INT 21H的02H号功能调用显示字符 子程序入口 递归调用 AX=0 ? CH—1=9? N 出栈至AX Y AX压栈保存 N 子程序返回 AX×DX→AX AX→DX 01H→DX 子程序返回 01H→DX