当前位置:
文档之家› 微机原理与接口技术(第二版)龚尚福等编 配套实验讲义
微机原理与接口技术(第二版)龚尚福等编 配套实验讲义
一.实验目的
1. 掌握使用运算类指令编程及调试方法。 2. 掌握运算类指令对各状态标志位的影响及其测试方法。
二.实验设备
TDN86/88 教学实验系统一台
三.实验内容及步骤
8086/8088 指令系统提供了实现加、减、乘、除运算的基本指令,可对二进制、BCD 码 数据类型进行算术运算。
1. 二进制双精度加法运算 计算 X+Y=Z,将结果 Z 存入某存储单元。
b. 连续运行:在“>”提示符下输入 G=0000:2000↙(在系统默认段址 CS=0000 情况下 可直接输入 G=2000↙)可连续运行程序,在运行过程中,可通过 CTRL+BREAK 或点击菜 单中的停止来终止程序运行。
c. 断点运行:在程序中可用 B 命令定义断点,系统规定最多定义 10 个断点,例如:
显示信息 > 0000:3500 00_ 0000:3501 01_ 0000:3502 02_ 0000:3501 01_ >
E3500↙ 01 space Space
↙
键入信息
2. 系统操作练习(2) 将内存 3500H 单元开始的 0-15 共 16 个数传递到 3600H 单元开始的数据区中。
2. 学生成绩名次表 将分数为 1-100 之间的 30 个成绩存入首址为 3000H 的单元中,3000H+i 表示学号为 i
的学生成绩。编写程序能在 3100H 开始的区域排出名次表,3100H+i 为学号 i 的学生名次。
实验步骤: (1)输入程序并检查无误,经汇编、连接后装入系统。 (2)将 30 个成绩存入首址为 3000H 的单元中。 (3)调试并运行实验程序。 (4)检查 3100H 开始的区域中的名次表的正确性。
> [0:] [1:] >
显示信息
B↙ 2009↙ ↙
键入信息
上例中定义了 2009 地址为断点,输入 GB=0000:2000↙程序连续运行至断点时,程序 中断并显示当前各寄存器内容。GB 是 G 命令的扩充,表示含断点连续运行程序,断点 仅当系统复位时清除。 (3)内存单元的内容显示: 使用 D0000:3500↙可查看 3500H-350FH 单元中的内容是否为 0-15 共 16 个数。 (4)内存单元内容的修改: 若要修改某一单元内容,可进行如下操作,其中,“空格”键用于向待编辑单元的高地 址方向移动地址,而“-”键则向反方向移动地址;用↙来确认输入,退出 E 命令。
实验步骤: (1)输入程序并检查无误,经汇编、连接后装入系统。 (2)用 E3000↙在 3000-3009H 数据区中任意放入 10 个无符号数。 (3)G=0000:2000↙,运行实验程序。 (4)用 D=3000↙检查排序结果。 (5)反复修改数据区中的数,运行程序并观察结果,以验证程序的正确性。
实验一 系统认识实验
一.实验目的
掌握 TDN86/88 教学实验系统的基本操作。
二.实验设备
TDN86/88 教学实验系统一台。
三.实验内容及步骤
1. 系统认识实验(1) (1)程序的输入与修改
从 3500H 内存单元开始建立 0-15 共 16 个数据。
实验步骤: a. 使用串行通讯电缆将实验系统与 PC 机相连。 b. 开启实验系统。 c. 在系统软件所在目录(默认为 C:\TANGDU\W8688)下运行文件 WMD86.EXE 进入集成操作
软件环境,打开文件菜单选择新建,即可开始输入源程序。 d. 输入程序后,在文件菜单中选择保存程序,注意文件名的格式,扩展文件名必须为*.ASM,
例:ABC.ASM。 e. 在编译菜单中选择汇编(CTRL+F2)对源程序进行汇编,若源程序没有错误生成目标文
件*.OBJ,若源程序中有错误则返回错误信息,根据错误信息对源程序进行修改后(CTRL+F3)对汇编生成的*.OBJ 目标文件进行链接, 链接信息显示于屏幕上,如没有错误,生成相应的可执行文件*.EXE。 g. 在窗口菜单中选择调试(CTRL+1)打开调试窗口,出现系统提示符“>”后选择菜单中 的装入程序,选择相应的*.EXE 文件,填入程序段地址与偏移量(默认段地址 0000,偏 移量 2000,一般不用修改),确定后 PC 开始将程序从磁盘装入到教学实验系统内存,提 示装载完毕后使用 U 命令进行反汇编,检查程序是否正确装入。U 命令输入格式为 U0000: 2000。 h. 当发现源程序输入错误或需要调整时,在调试窗口下可用 A 命令来修改,如修改 2000 句为 MOV DI,3500 的操作如下:
图 3-1 对于两个数据块分离的情况,如图 3-1(a),数据的传送从数据块的首址开始,或者从 数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬 移”而遭破坏,可以得出以上结论: 当源数据块首址>目的块首址时,从数据块首地址开始传送数据。 当源数据块首址<目的块首址时,从数据块末地址开始传送数据。 实验步骤:
四.思考题
1. 请指出程序 1 中哪部分属于外循环,哪部分属于内循环? 2. 程序中对 SI、CX 压栈和弹栈的意义何在? 3. 修改程序 2,使其能将 3100H 开始的区域中的名次表显示出来。
实验六 中断特性及 8259 应用编程实验
一.实验目的
1. 认识 TDN86/88 系统的中断特性。 2. 掌握 8259 中断控制器的工作原理。 3. 掌握 8259 可编程控制器的应用编程。 4. 学习掌握 8259 级连方式的使用方法。 5. 学习在接口实验单元上构造连接实验电路的方法。
设计思想: a. 从最后一个数(或第一个数)开始,依次把相邻的两个数进行比较,即第 N 个数与第 N
-1 个数比较,第 N-1 个数与第 N-2 个数比较等等;若第 N-1 个数大于第 N 个数,则 两者交换,否则不交换,直到 N 个数的相邻两个数都比较完为止。此时,N 个数中的最 小数将被排在 N 个数的最前列。 b. 对剩下的 N-1 个数重复上步,找到 N-1 个数中的最小数。 c. 重复第二步,直到N个数全部排序好为止。
本实验程序是双精度(2 个 16 位,既 32 位)运算,利用累加器 AX,先求低十六位和, 并存入低址存储单元,后求高 16 位和,再存入高址存储单元。由于低位和可能向高位有进 位,因而高位字相加语句需用 ADC 指令,则低位相加有进位时,CF=1,高位字相加时,同 时加上 CF 中的 1。
实验步骤: (1)输入程序并检查无误,经汇编、连接后装入系统。(设:CS:0000H,IP:2000H) (2)用 U0000:2000 查看 MOV AX,XXXX(DATA)语句,得到数据段段地址 CS:XXXX。用 E 命令 EXXXX:0000↙给 XL,XH,YL,YH 赋值存入二进制数 A0 65 15 00 和 9E B7 21 00。 (3)G=0000:2000↙,运行程序。 (4)DXXXX:0008↙,显示计算结果:3E 1D 37 00 CC …。 (5)反复试几组数,考察程序的正确性。
3. 乘法运算 本实验实现十进制数的乘法,被乘数和乘数均以 BCD 码形式存放于内存中,乘积在屏幕
上显示。
实验步骤: (1)输入程序并检查无误,经汇编、连接后装入系统。 (2)用 U0000:2000↙查看 MOV AX,XXXX(DATA)语句,得到数据段段地址 CS:XXXX。用 E 命令 EXXXX:0000↙给在对应数据段填入乘数与被乘数。 (3)G=0000:2000↙,运行程序,屏幕显示结果。用 CTRL+BREAK 可终止程序运行。 (4)反复试几组数,考察程序的正确性。
四.思考题
1. 编写有符号数 A1B1+A2B2 的程序,A1、A2、B1、B2 均为符号数。 2. 编写两个数值长度不等的 BCD 码相加程序。
实验三 分支程序设计实验
一.实验目的
1. 掌握分支程序的结构。 2. 掌握分支程序的设计、调试方法。
二.实验设备
TDN86/88 教学实验系统一台
三.实验内容及步骤
二.实验设备
1. TDN86/88 教学实验系统一台。 2. 排线、导线若干。
三.实验内容及步骤
1. 8259 应用实验(1)
图 6-1 实验(1)线路 按图 6-1 所示实验线路编写程序,使每次响应外部中断 IRQ7 时,显示字符“7”,中断 10 次后,程序退出。 实验步骤: (1)按图 6-1 连接实验线路。 (2)输入程序并检查无误,经汇编、连接后装入系统。 (3)G=0000:2000 运行实验程序。 (4)重复按 KK2 微动开关,显示屏上应用“7”来响应,直到按 10 次后,系统处于停机状 态,用 CTRL+BREAK 返回监控。 2. 8259 应用实验(2)
三.实验内容及步骤
1. 编制程序 计算式子 1+2+3+…+99+100 的结果。
2. 求某数据区内负数的个数 设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后
一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将 所有数据中凡是符号位为 1 的数据的个数累加起来,即得区内所包含负数的个数。
四.思考题
为什么当源数据块首址>目的块首址时,应从数据块首地址开始传送数据?而当源数据 块首址<目的块首址时,应从数据块末地址开始传送数据?
实验四 循环程序设计实验
一.实验目的
1. 加深对循环结构的理解。 2. 掌握循环结构程序设计的方法。 3. 熟练掌握调试循环程序的方法。
二.实验设备
TDN86/88 教学实验系统一台
实验步骤: (1)输入程序并检查无误,经汇编、连接后装入系统。 (2)E3500↙,在 3500-3510 单元中分别送入 00、01、02…。
(3)G=0000:2000↙,运行程序,按 CTRL+BREAK 中断,返回监控。 (4)D3600↙,显示结果:3600 00 01 02 …。