微机原理与接口技术(第二版)龚尚福_复习题解析和实验指导 下载本文

实验二 运算类编程实验

一.实验目的

1. 掌握使用运算类指令编程及调试方法。

2. 掌握运算类指令对各状态标志位的影响及其测试方法。

二.实验设备

TDN86/88教学实验系统一台

三.实验容及步骤

8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对二进制、BCD码数据类型进行算术运算。

1. 二进制双精度加法运算

计算X+Y=Z,将结果Z存入某存储单元。

本实验程序是双精度(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)反复试几组数,考察程序的正确性。

2. 十进制数的BCD码减法运算

计算X-Y=Z,其中,X、Y、Z为BCD码。

实验步骤:

(1)输入程序并检查无误,经汇编、连接后装入系统。(设:CS:0000H,IP:2000H) (2)用U0000:2000查看MOV AX,XXXX(DATA)语句,得到数据段段地址CS:XXXX。用E命令EXXXX:0000↙给X,Y赋值存入40和12的BCD码:00 04 02 01。 (3)G=0000:2000↙,运行程序。

(4)DXXXX:0004↙,显示计算结果:08 02 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. 比较两个字符串STR1与STR2是否相同,若相同则在屏幕上显示MATCH,不同则显示

NOMATCH。

2. 设计一数据块间的搬移程序

设计思想:程序要求把存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图3-1所示。

图3-1

对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏,可以得出以上结论:

当源数据块首址>目的块首址时,从数据块首地址开始传送数据。 当源数据块首址<目的块首址时,从数据块末地址开始传送数据。

实验步骤:

(1)输入程序并检查无误,经汇编、连接后装入系统。 (2)用E命令在以SI为起址的单元中填入16个数。 (3)G=0000:2000↙,运行程序。

(4)用D命令查看DI为起址的单元中的数据是否与SI单元中的数据相同。 (5)试改变SI、DI的取值,观察在三种不同的数据块情况下程序的运行。

四.思考题

为什么当源数据块首址>目的块首址时,应从数据块首地址开始传送数据?而当源数据块首址<目的块首址时,应从数据块末地址开始传送数据?