2024年5月11日发(作者:)

微机原理及接口技术 实验指导书 周志敏 谢楠 编 浙江水利水电专科学校 计算机

与信息工程系 2008 年 3 月 目 录第1章 80X86微机原理及其程序设计实

验 ..................................................................................11.1 系统认识实

验............................. ...........................................................................................11.2 运算

类编程实验................ . ................................................................................................. 51.3

分支程序设计实

验............................. .................................................................................81.4 循环程序设

计实验........................................... ...................................................................111.5 显示

程序实验................................................................... ...................................................14第

2章 80X86微机接口技术实

验 ............... ...............................................................................152.1 静态存储器扩展实

验.................... ......................................................................................152.2 8259 中断控

制实验.................................................................... .........................................182.3 DMA

特性及8237应用实验............................................. ...............................................242.4

8254 定时/计数器应用实

验.................................................. ............................................302.5 8255 并行接口实

验............................................................ ................................................352.6 8251 串行

接口应用实验...................................................... ..............................................392.7 键盘

扫描及显示设计实验............................................... ................................................512.8

电子发声设计实验............................................................... ............................................55

附录1 Wmd86联机软件使用说

明 ....................................... ....................................................59附录2 系统实验程序清

单 ........................................................................... .............................67附录3 系统编程

信息 ..................................................................................... ...........................69附录4

I386EX系统板引出管脚排列及名称 .................................................. ..........................71

附录5 TD-PITE实验箱布

局............................................................................. ..................... ..72 第1章 80X86 微

机原理及其程序设计实验 本章主要介绍汇编语言程序设计,通过实验来学习80X86

的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。 1.1 系统

认识实验1.1.1 实验目的 掌握TD-PITE 80X86 微机原理及接口技术教学实验系统

的操作,熟悉Wmd86联机集成开发调试软件的操作环境。1.1.2 实验设备 PC机一台,

TD-PITE 实验装置一套。1.1.3 实验内容 编写实验程序,将00H~0FH 共16 个数

写入内存3000H 开始的连续16 个存储单元中。1.1.4 实验步骤 1. 运行Wmd86 软

件,进入Wmd86 集成开发环境。 2. 根据程序设计使用语言的不同,通过在“设置”

下拉列表来选择需要使用的语言,如图1-1-1所示。语言选择后,下次再启动软件,

语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1-1 语言环境选

择界面 3. 语言选择后,点击新建或按CtrlN 组合键来新建一个文档,如图1-1-2所

示。默认文件名为Wmd861。 图1-1-2 新建文件界面 4. 编写实验程序,如图1-1-3

所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。 1 图1-1-3 程

序编辑界面 5. 点击 ,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信

息,然后再点击 进行链接,链接无误输出如图1-1-5所示的输出信息。 图1-1-4 编

译输出信息界面 图1-1-5 链接输出信息界面 6. 连接PC与实验系统的通讯电缆,打

开实验系统电源。 7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程

序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击 下

载程序。 为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次

完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下

载。起始运行语句下会有一条绿色的背景。如图1-1-6所示。 图1-1-6 加载成功输出

显示界面 2 8. 将输出区切换到调试窗口,使用D0000:3000命令查看内存3000H 起

始地址的数据,如图1-1-7所示。存储器在初始状态时,默认数据为CC。 图1-1-7 内

存地址单元数据显示 9. 点击按钮 运行程序,然后再点击 来停止程序运行,接下

来观察程序运行结果,仍使用命令D0000:3000 来观察数据变化。如图1-1-8所示。 图

1-1-8 运行程序后数据变化显示 10. 也可以通过 在语句AA2: JMP AA2 处设置断

点,断点显示如图1-1-9 所示,然后运行程序,当遇到断点时程序会停下来,然后

观察数据。可以使用E0000:3000 来改变该地址单元的数据,如图1-1-10 所示,输

入11 后,按“空格”键,可以接着输入第二个数,如22,结束输入按“回车”键。 图

1-1-9 断点设置显示 图1-1-10 修改内存单元数据显示界面 3 实验例程文件名为

。1.1.5 操作练习 编写程序,将内存3500H 单元开始的8 个数据复制

到3600H 单元开始的数据区中。通过调试验证程序功能,使用E命令修改3500H单

元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。 4 1.2 运算类编

程实验1.2.1 实验目的 1. 掌握使用运算类指令编程及调试方法; 2. 掌握运算类指

令对各状态标志位的影响及其测试方法; 3. 学习使用软件监视变量的方法。1.2.2

实验设备 PC机一台,TD-PITE 实验装置一套。1.2.3 实验内容及步骤 80X86 指令

系统提供了实现加、减、乘、除运算的基本指令,可对表1-3-1 所示的数据类型进

行算术运算。 表1-2-1 数据类型算术运算表1. 二进制双精度加法运算 计算X+Y=

Z,将结果Z存入某存储单元。实验程序参考如下。 本实验是双精度(2 个16 位,

即32 位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存

入低地址存储单元,然后求高16 位的和,将结果存入高地址存储单元中。由于低16

运算后可能向高位产生进位, 因此高16 位运算时使用ADC 指令, 这样在低16位

相加运算有进位时,高位相加会加上CF中的1。实验程序清单(例程文件名为:

)SSTACK SEGMENT STACKDW 64 DUPSSTACK ENDSPUBLIC XH XL

YH YL ZH ZL 设置全局变量DATA SEGMENTXL DW X低位XH DW X高位YL

DW Y低位YH DW Y高位ZL DW Z低位ZH DW Z高位DATA ENDSCODE

SEGMENTASSUME CS:CODE DS:DATASTART: MOV AX DATAMOV DS

AXMOV AX XL 5ADD AX YL X低位加Y低位MOV ZL AX 低位和存到Z的低位

MOV AX XHADC AX YH 高位带进位加MOV ZH AX 存高位结果JMP START 在

此行设置断点,以观察变量值CODE ENDSEND START实验步骤(1)编写程序,

经编译、链接无误后装入系统;(2)程序装载完成后,点击„变量区‟标签将观察窗

切换到变量监视窗口;(3)点击 ,将变量XH,XL,YH,YL,ZH,ZL 添加到

变量监视窗中,然后修改XH,XL,YH,YL 的值,如图1-3-1 所示,修改XH 为

0015,XL为65A0,YH 为0021,YL为B79E;(4)在JMP START语句行设置断点,

然后运行程序;(5)当程序遇到断点后停止运行,查看变量监视窗口,计算结果

ZH 为0037,ZL为1D3E;(6)修改XH,XL,YH和YL的值,再次运行程序,观察

实验结果,反复测试几组数据,验证程序的功能。 图1-2-1 变量监视窗口2. 十进制

的BCD码减法运算 计算X-Y=Z,其中X、Y、Z为BCD 码。实验程序参考例程。

实验程序清单(例程文件名为)SSTACK SEGMENT STACKDW 64

DUPSSTACK ENDSPUBLIC X Y Z 定义全局变量DATA SEGMENTX DW Y DW Z

DW DATA ENDS 6CODE SEGMENTASSUME CS:CODE DS:DATASTART: MOV

AX DATAMOV DS AXMOV AH 00HSAHFMOV CX 0002HMOV SI OFFSET

XMOV DI OFFSET ZA1: MOV AL SISBB AL SI02HDASPUSHFAND AL

0FHPOPFMOV DI ALINC DIINC SILOOP A1JMP START 设置断点,以方便观察变

量。CODE ENDSEND START实验步骤(1)输入程序,编译、链接无误后装入系

统;(2)点击 将变量X, Z 添加到变量监视窗中, Y, 并为X, 赋值, Y 假

定存入40 与12 的BCD 码,即X 为0400,Y 为0102;(3)在JMP START语句行

设置断点,然后运行程序;(4)程序遇到断点后停止运行,观察变量监视窗,Z应

为0208;(5)重新修改X 与Y 的值,运行程序,观察结果,反复测试几次,验证

程序正确性。 7 1.3 分支程序设计实验1.3.1 实验目的 1. 掌握分支程序的结构; 2.

掌握分支程序的设计、调试方法。1.3.2 实验设备 PC机一台,TD-PITE 实验装置一

套。1.3.3 实验内容 设计一数据块间的搬移程序。设计思想:程序要求把内存中一

数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的

数据块在存储中可能有三种情况,如图1-4-1所示。 图1-3-1 源数据块与目的数据块

在存储中的位置情况 对于两个数据块分离的情况,如图1-3-1(a),数据的传送从

数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则

要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论: 当源数据块首

地址<目的块首地址时,从数据块末地址开始传送数据,如图1-3-1(b)所示。 当

源??/B>块首地址>目的块首地址时,从数据块首地址开始传送数据,如图1-3-1

(c)所示。 实验程序流程图如图1-4-2所示。 8 图1-3-2 程序流程图实验程序清单

(例程文件名为:)SSTACK SEGMENT STACKDW 64 DUPSSTACK

ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX 0010HMOV SI

3100HMOV DI 3200HCMP SI DIJA A2ADD SI CXADD DI CXDEC SIDEC DIA1:

MOV AL SIMOV DI ALDEC SIDEC DIDEC CX 9JNE A1JMP A3A2: MOV AL

SIMOV DI ALINC SIINC DIDEC CXJNE A2A3: JMP A3CODE ENDSEND

START1.3.4 实验步骤1. 按流程图编写实验程序,经编译、链接无误后装入系统;

2. 用E 命令在以SI为起始地址的单元中填入16 个数;3. 运行程序,然后再停止运

行;4. 通过D 命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同;5.

通过改变SI、DI 的值,观察在三种不同的数据块情况下程序的运行情况,并验证程

序的功能。 10 1.4 循环程序设计实验1.4.1 实验目的 1. 加深对循环结构的理解; 2.

掌握循环结构程序设计的方法以及调试方法。1.4.2 实验设备 PC机一台,TD-PITE

实验装置一套。1.4.3 实验内容及步骤1. 计算S=1+2×3+3×4+4×5+…+N(N+

1),直到N(N+1)项大于200为止。编写实验程序,计算上式的结果,参考流程

图如图1-5-1所示。 图1-4-1 程序流程图实验程序清单(例程文件名为:)

SSTACK SEGMENT STACKDW 64 DUPSSTACK ENDSCODE SEGMENTASSUME

CS:CODESTART: MOV DX0001HMOV BL02HA1: MOV ALBLINC BLMUL BL

11ADD DXAX 结果存于DX中CMP AX00C8H 判断NN1与200的大小JNA A1A2:

JMP A2CODE ENDSEND START实验步骤(1)编写实验程序,编译、链接无误后

装入系统;(2)运行程序,然后再停止程序运行;(3)运算结果存储在寄存器DX

中,查看结果是否正确;(4)可以改变N(N+1)的条件来验证程序功能是否正确,

但要注意,结果若大于FFFFH 将产生数据溢出。2. 求某数据区内负数的个数 设数

据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后

一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,

然后将所有数据中凡是符号位为1 的数据的个数累加起来,即得到区内所包含负数

的个数。 实验程序流程图如图1-5-2所示。 图1-4-2 程序流程图 12实验程序清单(例

程文件名为:)SSTACK SEGMENT STACKDW 64 DUPSSTACK

ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DI 3000H 数据区首地址

MOV CL DI 取数据个数XOR CH CHMOV BL CHINC DI 指向第一个数据A1:

MOV AL DITEST AL 80H 检查数据首位是否为1JE A2INC BL 负数个数加1A2:

INC DILOOP A1MOV DI BL 保存结果A3: JMP A3CODE ENDSEND START实验步

骤(1)按实验流程编写实验程序;(2)编译、链接无误后装入系统;(3)键入

E3000,输入数据如下: 3000=06 (数据个数) 3001=12 3002=88 3003=82 3004

=90 3005=22 3006=33(4)先运行程序,然后停止程序运行;(5)查看3007 内

存单元或寄存器BL 中的内容,结果应为03;(6)可以进行反复测试来验证程序的

正确性。 13 1.5 显示程序实验1.5.1 实验目的 1. 了解INT 10H 各功能模块的作用

及用法; 2. 掌握字符方式下PC机显示器显示控制。1.5.2 实验设备 PC机一台,

TD-PITE 实验装置一套。1.5.3 实验内容 编写实验程序,在显示器上的输出窗口显

示A~Z共26 个大写?⑽淖帜浮?显示I/O 功能调用使用说明如下: INT 10 使用说明

入口:AH=00H,AL=01H 功能:清屏 入口:AH=01H,AL=数据 功能:写AL

中的数据到显示屏上 入口:AH=06H,DS:BX=字串首地址,且字符串尾用00H 填

充 功能:显示一字串,直到遇到00H 为止实验程序清单(例程文件名为:)

SSTACK SEGMENT STACKDW 64 DUPSSTACK ENDSCODE SEGMENTASSUME

CS:CODESTART: MOV CX001AHMOV BL41H „A‟的ASCII码值MOV AH01HA1:

MOV ALBLINT 10H 功能调用INC BLPUSH CXMOV CX0FFFFHA2: LOOP A2POP

CXDEC CXJNZ A1A3: JMP A3CODE ENDSEND START1.5.4 实验步骤1. 编写实

验程序,经编译、链接无误后装入系统;2. 运行实验程序,观察实验结果;3. 修改

实验程序,在显示器上显示„GOOD AFTERNOON‟,要求使用AH=06 功能(显示

一字符串功能块)完成。 14 第2 章 80X86 微机接口技术实验 接口技术是把由处

理器、存储器等组成的基本系统与外部设备连接起来,从而实现CPU与外部设备通

信的一门技术。微机的应用是随着外部设备的不断更新和接口技术的不断发展而深

入到各行各业,任何微机应用开发工作都离不开接口的设计、选用及连接。微机应

用系统需要设计的硬件是一些接口电路,所要编写的软件是控制这些接口电路按要

求工作的驱动程序。因此,接口技术是微机应用中必不可少的基本技能。 2.1 静态

存储器扩展实验2.1.1 实验目的 1. 了解存储器扩展的方法和存储器的读/写; 2. 掌

握CPU对16 位存储器的访问方法。2.1.2 实验设备 PC机一台,TD-PITE 实验装置

一套,示波器一台。2.1.3 实验内容 编写实验程序,将0000H~000FH 共16个数写

入SRAM 的从0000H 起始的一段空间中,然后通过系统命令查看该存储空间,检

测写入数据是否正确。2.1.4 实验原理 存储器是用来存储信息的部件,是计算机的

重要组成部分,静态RAM 是由MOS管组成的触发器电路,每个触发器可以存放1 位

信息。只要不掉电,所储存的信息就不会丢失。因此,静态RAM工作稳定, 不要

外加刷新电路,使用方便。但一般SRAM 的每一个触发器是由6 个晶体管组成,

SRAM芯片的集成度不会太高,目前较常用的有6116(2K×8位),6264(8K×8位)

和62256(32K×8位)。本实验平台上选用的是62256,两片组成32K×16位的形式,

共64K字节。62256 的外部引脚图如图2-1-1所示。 图2-1-1 62256引脚图 本系统采

用准32 位CPU,具有16 位外部数据总线,即D0、D1、…、D15,地址总线为BHE

#(#表示该信号低电平有效)、BLE#、A1、A2、…、A20。存储器分为奇体和

偶体,分别由字节允许线BHE#和BLE#选通。 存储器中,从偶地址开始存放的字

称为规则字,从奇地址开始存放的字称为非规则字。处理器访问规则字只需要一个

时钟周期,BHE#和BLE#同时有效,从而同时选通存储器奇体和偶体。处理器访

问非规则字却需要两个时钟周期,第一个时钟周期BHE#有效,访问奇字节;第二

个时钟周期BLE#有效,访问偶字节。处理器访问字节只需要一个时钟周期,视其

存放单元为奇或偶,而BHE#或BLE#有效,从而选通奇体或偶体。写规则字和非

规则字的简单时序图如图2-1-2所示。 15 图2-1-2 写规则字(左)和非规则字(右)

简单时序图实验程序清单SSTACK SEGMENT STACKDW 32 DUPSSTACK

ENDSCODE SEGMENTSTART PROC FARASSUME CS:CODEMOV AX 8000H

存储器扩展空间段地址MOV DS AXAA0: MOV SI 0000H 数据首地址MOV CX

0010HMOV AX 0000HAA1: MOV SI AXINC AXINC SIINC SILOOP AA1NOPHERE:

JMP HERESTART ENDPCODE ENDSEND START 图2-1-3 SRAM实验接线图

162.1.5 实验步骤1. 实验接线图如图2-1-3所示,按图接线;2. 编写实验程序,经编

译、链接无误后装入系统;3. 先运行程序,然后再停止程序运行;4. 通?鼶 命令查

看写入存储器中的数据,应为0001、0002、…、000F共16 个字;5. 改变实验程序,

按非规则字写存储器,观察实验结果;6. 改变实验程序,按字节方式写存储器,观

察实验现象;7. 将实验程序改为死循环程序,分别按规则字与非规则字的方式写存

储器,并使用示波器观察WR#信号的波形,分析实验现象,掌握16 位外部数据总

线的操作方法。 17 2.2 8259 中断控制实验2.2.1 实验目的 1. 掌握8259 中断控制器

的工作原理; 2. 学习8259 的应用编程方法; 3. 掌握8259 级联方式的使用方法。

2.2.2 实验设备 PC机一台,TD-PITE 实验装置一套。2.2.3 实验内容及步骤1. 中断

控制器8259 简介 在Intel 386EX 芯片中.