第一章 dvcc系列单片机仿真实验系统2 dvcc...

58
第一章 DVCC 系列单片机仿真实验系统 .......................................................... 2 原理和组成 ................................................................................................................ 2 第二章 键盘监控命令简介 .................................................................................... 5 第三章 DVCC 微机实验系统软件概述 .............................................................. 15 第四章 DOS 功能调用 ......................................................................................... 26 实验一 初级程序的调试与执行 .......................................................................... 29 实验二、编码及数制转换 ...................................................................................... 32 实验三.分支及循环程序设计 .............................................................................. 35 实验四 排序程序设计及双重循环程序 .............................................................. 39 的应用 ...................................................................................................................... 39 实验五 并行口 8255A 应用 ............................................................................... 42 实验六 8253A 定时计数器实验 ........................................................................ 45 实验七 使用 8259A 的单级中断控制实验 ......................................................... 48 实验八 存贮器读写实验 .................................................................................... 53

Upload: others

Post on 13-May-2020

31 views

Category:

Documents


0 download

TRANSCRIPT

第一章 DVCC系列单片机仿真实验系统 ..........................................................2

原理和组成 ................................................................................................................2

第二章 键盘监控命令简介 ....................................................................................5

第三章 DVCC微机实验系统软件概述 ..............................................................15

第四章 DOS功能调用 .........................................................................................26

实验一 初级程序的调试与执行 ..........................................................................29

实验二、编码及数制转换 ......................................................................................32

实验三.分支及循环程序设计 ..............................................................................35

实验四 排序程序设计及双重循环程序 ..............................................................39

的应用 ......................................................................................................................39

实验五 并行口 8255A应用 ...............................................................................42

实验六 8253A定时计数器实验 ........................................................................45

实验七 使用 8259A的单级中断控制实验 .........................................................48

实验八 存贮器读写实验 ....................................................................................53

第一章 DVCC系列单片机仿真实验系统

原理和组成

一、总体框图

图 1—1

二、微处理器

8086/8088十六位微处理器采用双列直插式封装,引脚配置如图 1—2所示。

图 1—2

1、存贮器

系统上扩展了 2片静态存贮器 62256,共 64K。

对 8088CPU系统来说,8088有 1兆存贮空间,系统提供用户使用的空间为

00000H—0FFFFH,具体存贮器分配关系见表 1—1。

表 1—1

存 贮 器 单 板 态

00000—00013H 监控/用户中断矢量区

00014—000FFH 用户中断矢量

00100H—00FFFH 监控数据区、默认用户栈

01000—0FFFFH 用户数据区、程序区

2.I/O接口器件地址

在 DVCC系列实验开发系统上,系统所用接口器件地址安排如下:

8155控制口 FF20H

8155A口(字位) FF21H

8155B口(字形) FF22H

8155C口(键扫) FF23H

8255控制口 FF2BH

8255A口 FF28H

8255B口 FF29H

8255C口 FF2AH

其中 8155是键盘显示接口器件,8255是 EPROM固化接口器件。用户亦可

以使用这两个器件进行键扫显示实验或 EPROM 写入实验。8155、8255 两个器

件,三个实验系统公用(51/96/8088)。

DVCC系列实验系统上实验用各接口器件模块其地址由 74LS138译码产生。

不同 CPU状态,其译码输出地址如下表 1—2所示。

表 1—2

138译码输入 138译码输出 系统状态

G1 G2 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

8088CPU +5V 地 A6 A5 A4 00~0F 10~1F 20~2F 30~3F 40~4 50~5F 60~6F 70~7F

注:在 8088CPU状态下,Y4、Y5已和接口芯片 8253、8251的片选端连好,因

此 Y4、Y5不能作他用。在 51/196状态下,Y0~Y7作为用户目标程序、数

据或 I/O口片选地址。

第二章 键盘监控命令简介

一、 键盘布置

表 2—1 !

77R

8DRL

9DPH

ILin

AA

%

MEMTV

S

/

DELEPRGH

J

= PRT

P

$

FVBPEXEC

@ &

44R

Quin

55R

Biack

66R

Dlin

BB

T

OFSTREC

M

*

INSODRW

O

COMP

V

EPRGLPCDBG

X ―

11R

K

22R

W

33R

G

CPSW

+

LAST1F

R

·

EPMOV

L

H

MOVE

Z

NVBPSTEP

# <

0RO

>

FPCH

Y

EPCL

Q

DSP

NEXT2F

SHIFT

U

EPCOMEPCH

N

: 、

DAR

I

MON

DVCC系列单片机仿真实验系统键盘共有 32个。

上图中左边 16 个为数字键,在键上“一”下面表示的十六进制数字 0~F,用

于输入地址、数据或机器语言代码。对 51CPU 用而言,“一”上面是工作寄存器

名或其省略写法,如 DPH表示数据寄存器 DRTR高 8位,DPL表示数据指针寄

存器 DRTR低 8位,PCH表示程序指针的高 8位,PCL表示程序指针低 8位。

但在不同的 CPU 状态,由于其内部寄存器的设置不一样,因此键盘上的代号代

表的意义也不一样。

表 2—2

代 号 0 1 2 3 4 5 6 7 8 9 A B C D E F

寄存器名 8088CPU AX BX CX DX SP BP SI DI CS DS SS ES IP FL

图中右边 16个为功能键,在独立运行模式下输入操作命令,其通用功能如下:

TV/MEM: TV/程序存贮器检查

REG/OFST: 片内 RAM、寄存器、特殊功能寄存器检查/偏移量计算

ODRW/INS: 外部数据存贮器、外部 RAM、I/O检查/插入一字节

EPRGH/DEL: EPROM高速写入/删除一字节

F1/LAST: 第一标志键/读上一字节

F2/NEXT: 第二标志键/读下一字节

STEP/NVBP: 单拍/单拍跟踪

EXEC/FVBP: 连续执行/断点运行

PCDBG/EPRGL: 与上位机通讯调试/低速固化

EPMOV: 固化区内容移入目标 RAM

EPCH/EPCOM: EPROM查空/EPROM比较

PRT: 打印命令

COMP: 源程序与目标程序比较

MOVE: 程序块或数据块移动

DAR: 反汇编

MON: 退出当前操作,返回初态——显示闪动“P”

RESET: 系统复位按钮,无论何时按 RESET键,都使整个系

统复位,返回初始状态——闪动“P”

二、键盘监控工作状态

用户可以通过 32个键向本机发出各种操作命令,大多数键均有 2个以上功

能,本机无上下档转换键,计算机到底进行什么操作,不仅与按压什么键有关,

也与当前计算机所处的工作状态有关。“工作状态”在操作中,是一个重要的概念,

下面作有关介绍。

1、单板状态:在本状态时,显示器的左端显示提示符,一个闪动的“P”字符,

表示开发机处于初始化状态,等待你操作。

在计算机接通电源自动复位时处于单板状态;

按压 RESET复位键后,使本机处于单板状态;

在大多数情况下,按MON键,也可以使本机进入单板状态(在后面也称为待命

状态 0)。待命状态 0时,可以进行的操作有:

*按压任一数字键,进入待命状态 1,待命状态 1即为数字键可输入状态;

*按压 PCDBG键,进入与上位机通讯、调试、反汇编,显示器全暗;

*按压 EXEC键,从现行 PC地址开始执行用户程序;

*按压 STEP键,从现行 PC地址开始单拍执行用户程序。

2、MEM 态:即存贮器读写状态,进入存贮器读写状态时,前 4 位显示存贮

器地址,后 2位显示器显示该存贮器单元中的内容。

在待命状态下,按压MEM键,或当执行用户程序时遇到断点、单拍执行、EPROM

编程写入出错等都会使计算机进入该状态,本状态可进入如下操作。

*按压 OFST键,进入相对偏移量计算;

*按压 DEL键,进入删除操作,按一下,删除一字节;

*按压 INS,进入插入操作,按一下,插入一字节;

*按压 LAST键,进入上一字节读写操作;

*按压 STEP 键,以当前显示器内容作为地址,按压一下,执行一条命令,

即执行用户程序一步;

*按压 EXEC 键,以当前显示器内容作为地址,连续执行用户程序,(若要

退出,应按 RESET复位按钮);

*按压MON键,返回待命状态 0(按 EXEC键后,该命令无效)。

3、REC态:即寄存器读写状态,进入该状态时,前面 1位和 2位显示寄存

器地址,后面 2位显示该寄存器中的内容。

三、键盘监控操作命令介绍

1、复位命令—RESET键

在任何时刻按压复位键 RESET,都会迫使计算机进入初始状态(与通电复

位作用一样),在 RST 为高的第二个周期执行内部复位,并且在 RST 变低前每

一个周期重复执行内部复位,复位后:

*使 8155、8255I/O接口芯片复位

*使计算机进入待命状态 0

*按压复位键不会改变用户存贮区的内容,也不会改变 CPU片内 RAM区的

内容及外部数据区的内容。

2、返回待命状态—MON键

按MON,可迫使计算机进入待命状态。通常用MON键进行以下操作;

*清除已送入显示器的数字;

*退出其他操作状态。例如,退出存储器读写状态,寄存器读写状态等;按

MON键,不会影响用户的存贮器、寄存器内容。

3、程序存贮器读写命令一MEM、NEXT、LAST键

这一组命令是用来检查(读出)或更改(写人)内存单元,因此,通过这些键命

令的操作,向计算机送入程序和数据或从计算机中读出数据。

在“P……”状态下,读出的是仿真程序/数据区的内容(在实验系统上的外部

存贮器)。

在“H……状”状态下,读出的是用户板(目标板)上程序存贮器即 EPROM

中内容。

先按压MON键,使计算机处于待命状态 0,然后送入 4位表示要检查的程

序存储器的地址,再按MEM键,读出该单元的内容,计算机便进入存储器读写

状态。

在程序存贮器读写状态,显示器的左边 4位数字是内存单元地址,右边的 2

位是该单元的内容。光标(闪动的数字)表示等待修改(写入)的数字。

程序存贮器读写状态是键盘监控的一种重要状态;这时许多命令键都具有与

待命状态 1不同的功能。

*请注意:程序存贮器读写状态的明显标志是:显示 6位数字,光标在第五

位或第六位。

在程序存贮器读写状态,使用 LAST 或 NEXT 键可以读出上一个或下一个

存贮器单元的内容,同时光标自动移动到第五位。持续按 LAST或 NEXT键在 1

秒以上,计算机便开始对内存进行向上或下扫描,依次显示各单元地址及内容,

或快速移动到要检查的单元,从而简化了操作。

按MON键,可使计算机退出存储器读写状态,返回待命状态。

下面举例说明操作规程:

表 2—3

按 键 显 示 说 明

MON 单板状态。

0 送入数字 0。

MEM

待命状态 1,MEM键有效,未送入的数字(地址)隐含为0,进入存贮器读写状态,显示 0000H单元的内容 XX,第五位数字 X闪动,表示此位可更改。XX为随机数。

A 按数字 A,对 0000H单元进行写入,光标移到第六位。

MON 按MON键。返回待命状态 0。

001 要检查 0010H单元,最后一位 0可省略不送入,处于待命状态 1。

MEM 按MEM键,进入存储器写状态,显示 0010H的内容 XX,光标在第 5位。XX为随机数(下同)。

0 按 0键,第一位即被更改,并写入 0010H单元,光标移至第 6位。

8 按 8键,第 6位被更改,光标重新移到第 5位。

1 按 1键,第 5位被更改,光标重新移到第 6位。

NEXT 按 NEXT键,读出下一个单元 0011H,光标移至第 5位。

A 按 A键,光标移至第 6位。

LAST 按 LAST键,读出上一个单元,光标重新移到第 5位。

4、寄存器读写、特殊功能寄存器检查、片内 RAM 区读写命令——REG、

NEXT、LAST键:

寄存器读写可以输入一位地址,亦可以二位地址。

在 51CPU和 8088CPU系统中,输入一位地址时作为寄存器代号。

输入一位地址时,寄存器读写状态的标志是:显示器上显示 3个数字,左边

第一位数字代表寄存器的代号,右边的 2位数字表示该寄存器的内容。光标处于

显示器的第 5位到第 6位之中。

若要对寄存器的内容进行改写,可按压所需的数字键,光标所在处的数字即

被更换,而光标随即往右移一位。(若到了最右端,又重新回到起始位)。

0

P

0 0 1 1 X X

0 0 1 0 1 8

0 0 1 0 0 8

0 0 1 0 0 X

0 0 1 0 X X

0 0 1

P

0 0 0 0 A X

0 0 0 0 X X

0 0 1 1 A X

0 0 1 0 1 8

特殊功能寄存器检查状态标志是:显示器上显示 4个数字,左边第一位、第

二位数字表示寄存器地址,右边的 2位数字表示该寄存器的内容,中间两位是空

格,光标在第五位中第六位。

片内 RAM区读写状态是:显示器上显示四个数字,左边两位是 RAM区地

址,右边两位是该地址的内容,中间两位是空格。光标处于显示器的第 5、6位。

若要对 RAM区的内容进行改写,按压所需的数字键,光标所处的数字即被

更换。按压 NEXT或 LAST键,可检查更改下一或上一单元 RAM区(按地址顺

序排列)的内容。持续按 LAST 或 NEXT 键的时间在 1 秒以上时,可实现快速

查找。按压MON键,可以从寄存器、RAM区读写状态返回待命状态 0。196系

统中,按 Last或 Next键,地址减 2或加 2。

特殊功能寄存器检查状态标志是:显示器上显示 4~6个数字,(字节寻址显

示 8位数据,字寻址显示 16位数据)左边第一位、第二位数字代表寄存器地址,

右边的 4位数字表示该寄存器的内容。

片内 RAM区读写状态是:显示器上显示 6个数字,左边两位是 RAM区地

址,右边四位是该地址的内容。

5、执行程序命令——EXEC

执行键 EXEC在待命状态 0、待命状态 1和存储器读写状态时有效。在待命

状态 0显示一个闪动“P”,按 EXEC键,计算机将按照用户 0000H的地址,开始

执行程序;在待命状态 1(送入数字后的状态,数字后的 0 可省),则按显示器

地址执行程序,在存储器读写状态,按显示器的现行地址执行程序。在其它状态,

EXEC键无效。

用 EXEC 键执行用户程序,在程序中遇到断点时会停下来,显示断点地址

和该单元内容并保护所有的寄存器的内容,返回待命状态 1。这时 EXEC键作为

断点运行键(FVBP)。

6、8088CPU系统部分键功能简介

表 2—4 键 名 功 能 操 作

MEM 存储器读写 先输入四位单元地址,再按MEM键,读存贮器单元的内容,此时输入数字键,则修改该单元的内容。

REG 寄存器读写 先输入寄存器代号,再按 REG键读出该代号所表示的

寄存器单元的内容。此时再输入数字键,则修改该寄

存器的内容。

ODRW 读 I/O口 先输入四位 I/O地址,再按 ODRW键,读入该 I/O的状态,每按一次 ODRW键,则读入一次。

键 名 功 能 操 作 DAR 写 I/O口 选输入四位 I/O口地址,再按 DAR键,显示 00,再输

入要写的数据,每改写一次写入的数据,I/O 口状态跟着改变。

MOVE 数据块移动 输入四位源首地址后按 F1,再输入源末地址后按 F2,再输入四位目的首地址后按MOVE键即可。

STEP 单步运行 先输入四位源首地址,再按 STEP键或在存贮器读写状态下按 STEP键或在“P”监控提示符状态下按 STEP键,按一次执行一条指令语句。

EXEC 连续运行 先输入四位起始地址,按 EXEC键或在存贮器读写状态下按 EXEC键或在“P”监控提示符下按 EXEC键或先输入四位段地址后按 F1键,再输入四位偏移地址按 EXEC键。

EXEC 断点运行 先输入四位断点地址后按 F2 键,再输入四位起始地址后按 EXEC键。

四、8088CPU系统总操作过程

8088十六位微机实验系统上电总清以后,显示器上显示字符“P”,各寄存器

的初始化值如下:

SP=0628H,CS=0000H,DS=0000H,SS=0000H,HS=0000H

IP=1000H,FL=0000H

注意:

※所有命令均在提示符“P”状态输入。

※ 在键盘监控状态,段地址缺省值为 0000H。

五、8088CPU系统监控程序命令及操作。

1、存贮器单元内容显示修改

操作:××××MEM即在提示符“P”下,先输入四位存贮单元地址,再按MEM

键,显示器左边 4位显示地址,右边 2位显示该单元的内容。此时。

※按 NEXT键使地址加 1再显示。

※按 LAST键使地址减 1再显示。

※键入十六进制数据,则将改写现行地址单元的内容。

※按MON键则返回监控,显示提示符“P”

2、寄存器内容显示修改

操作:×REG即在“P”提示符下,先输入寄存器代号,再按 REG键,显示器右边

4位显示寄存器中内容,左 3、4位显示寄存器名,此时:

※按 NEXT键,则依次显示下一个寄存器中的内容。

※按 LAST键,则依次显示上一个寄存器中的内容。

※键入十六进制数据,则该寄存器中的内容被修改。

※按MON键,则返回监控,显示提示符“P”。

寄存器代号和寄存器名的对应关系如下:

0 1 2 3 4 5 6 7 8 9 A C D E

A

X BX CX

D

X SP BP SI DI DS SS ES IP RL

3.I/O口读

操作:××××ODRW即在提示符“P”下,先输入四位 I/O口地址,再按 ODRW

键,显示器左边 4位显示 I/O地址,右边 2位显示读出的 I/O口状态数据。此时:

※按 ODRW键,再次读入 I/O口的状态。

※按 NEXT键,I/O地址加 1,读出下一个口地址的状态数据。

※按 LAST键,I/O地址减 1,读出上一个口地址的状态数据。

※按MON键,返回监控提示符“P”

4、I/O口写

操作:××××DAR××在提示符“P”状态下,输入 4位 I/O口地址,按 DAR键,

显示器左边 4位显示 I/O地址,右边 2位初始显示 00,此时输入要写入的数据,

I/O口的状态会随写入的内容而变化。这时:

※按 NEXT键,I/O口地址加 1。

※按 LAST键,I/O口地址减 1。

※按MON键,返回监控提示符“P”。

5、数据块移动

操作:××××F1×××F2×××MOVE 即在提示符“P”状态下,先输入 4 位数据块

源首地址,按 F1 键,再输入数据块源末地址,按 F2 键,最后输入目标数据块

首地址,按MOVE键,开始数据块传送,传送完毕返回监控,显示提示符“P”。

6、单步运行

操作:有三种状态都进入单步操作(段地址固定为 0000H)

※在监控提示符“P”状态下,按 STEP键,从默认的起始地址 IP=1000H单元

开始单步运行一条指令语句。

※在存贮器单元读写状态(即左边 4位显示地址,右边 2位显示单元内容)

下,从当前存贮器地址开始单步运行一条指令语句。

※先输入四位起始地址,再按 STEP 键,则从输入的起始地址开始运行一

条指令语句。每运行一条语句,显示器显示下一条指令语句的地址及其内容。

7、连续运行

操作:有三种状态可以进入连续运行

※在监控提示符“P”状态下,按 EXEC 键,从默认的起始地址 CS=1000H,

IP=1000H开始连续运行用户程序。

※在存贮器读写状态下,按 EXEC键,从现行存贮器地址开始(CS=0000H)

连续运行用户程序。

※先输入 4 位起始地址,再按 EXEC 键,则从输入的起始地址开始

(CS=0000H)连续运行用户程序。

先输入起始 4位段地址,按 F1键,再输入 4位起始偏移地址,再按 EXEC

键,则从规定的段地址和偏移地址开始连续运行用户程序。

要想从运行用户程序返回监控,可以按 8088卡上的 STOP暂停键或系统复

位 RESET键。如果用 STOP键中断程序运行,则保护所有寄存器的内容返回监

控。如果用 RESET键,则重新进入监控状态,初始化各寄存器。

8、断点运行(默认段地址 CS=0000H)

操作:××××F2××××EXEC即在提示符“P”,状态下,输入 4位断点地址,按

F2键,再输入 4位起始地址,按 EXEC键,程序从起始地址开始运行,显示器

显示“ ”┎ 执行符。当程序运行到断点地址时会自动停下来,并显示断点地址的内

容,同时保护所有寄存器的值。

当由于某种原因程序不能正常运行到断点地址处时(即通常所说的程序“跑

飞”),可以按 8088 卡上的 STOP 暂停键,以确定程序运行到何处,同时必须用

存贮器读写功能恢复断点处的一个字节内容。

第三章 DVCC微机实验系统软件概述

DVCC微机实验系统软件是在 WINDOWS98界面上运行的综合调试软件,

采用窗口提示直接明了,对于习惯在 WINDOWS 界面上工作的用户运用起来相

当方便。

本软件系统的菜单分为三类:文件编辑部分菜单、调试部分菜单、辅助部分

菜单。

文件菜单

编辑菜单

文件编辑部分菜单 查找菜单

编译菜单

选项菜单

调试部分菜单——动态调试菜单

实验指南菜单

辅助菜单 窗口菜单

帮助菜单

本软件系统工具栏分为三类:编辑工具栏、调试工具栏、实验指南工具栏。

新建

打开

编辑工具栏 保存

剪切

拷贝

粘贴

所选实验的目的

所选实验的内容

实验指南工具栏 所选实验的原理

所选实验的位置图

所选实验的源程序

所选实验用的部分芯片

联接

编译

调试

单步(子程序追踪)

调试工具栏 单步(子程序追踪)

运行(运行到当前行)(51/96系统)

运行(连续运行)

端口(88系统)

断点

88系统部分可分为:编辑窗口、反汇编窗口、数据窗口、寄存器窗口等。

(编辑窗口在编辑操作时出现,反汇编窗口、数据窗口、寄存器窗口等在成

功联机后出现)。

在本 DVCC 实验系统软件中,窗口间切换按 CTRL+F6、关闭窗口按

CTRL+F4;菜单切换可用“ALT+菜单栏字母”,例:“文件(F)”可用“ALT+F”来

打开:菜单与窗口间可用“ALT”键切换;菜单间选择用“←→”键;菜单中某项选

择用“↑↓”键后,按 ENTER键来确认。上述切换也可用鼠标选定后单击确认。

一、菜单及其命令

菜 单 用 途

文件菜单 载入或创建源程序文件,打开历史文档以及退出 DVCC

实验系统等。

编辑菜单 对源程序窗口的有关内容进行编辑。并对编译、链接成

功的 51/96源程序进行源程序窗口调试。

查找菜单 对编辑窗口的源程序进行查找、替换、定位等操作。

编译菜单 对编辑的源程序进行编译、连接、传送等。

选项菜单 控制工具栏的显示状态(打开或关闭),设置编译、连接、

系统等选项。

动态调试菜单 对源程序进行单步、宏单步、连续执行、端口操作、系

统联机、文件(EXE)传送等操作。

实验指南菜单 提供所选实验项目的目的、内容、原理图、源程序、相

关芯片查询等。

窗口菜单 列出当前屏幕出现的所有窗口名及指出当前活动窗口

名。并可调整活动窗口。

帮助菜单 获得在线帮助。

在文件菜单可以载入或新建源程序时,在文件菜单的底部列有最近打的文

件,最多可列 4个文件,你可直接从中选择装入的源程序,这是打开文件的最快

方法,特别是当你在处理一组文件时更加有效。

■新建

创建一个新的程序文件,这时 DVCC 软件系统打开一个空文档窗口,你可

在该窗口中建立和编辑你的程序文件。

快捷操作:

·单击工具栏上“新建”命令按钮。

·使用快捷键“CTRL+N”。

■打开

打开一个已存在的程序文件,可直接输入文件名打开,也可通过“搜索栏”

打开。

·单击工具栏“打开”命令按钮。

·使用快捷键“CTRL+O”。

■关闭

该命令关闭当前正在使用的编辑窗口。

■保存

将当前正在使用的编辑窗口的源文件存盘。如果要存入的文件是你新创建的

文件,则本软件系统打开一个“另存为”对话框,供你选择或键入新的文件名。

快捷操作:

·单击工具栏“保存”命令。

·使用快捷键“CTRL+S”

■另存为

将当前编辑窗口的源程序用新的文件名存盘。使用该命令,软件系统打开一

个“另存为”对话框,在该对话框中,你可选择要存入的路径名及文件名。

二、编译菜单

编译菜单可对当前正在编辑窗口的文档进行编译连接与装载(系统成功联机

后),并出现相应的编译、连接的信息窗口,根据信息窗口提示的内容进行源程

序检查与修改。88部分系统软件最终生成的目标文件后缀为.EXE。

■编译

编译当前文本,生成后缀为.OBJ的中间文本。

快捷操作:

·单击工具栏中“编译”按钮。

·使用快键捷 F11(快捷键只有在编辑窗口被激活时有效)。

■编译连接

编译并连接当前文本(88系统编译并生成.EXE文件)。

快捷操作:

·使用快键捷 F12(快捷键只有在编辑窗口被激活时有效)。

■编译、连接、传送

编译连接当前文件.EXE文件(88系列)到 DVCC实验系统 RAM区中。

快捷操作:

·单击工具栏中“调试”按钮。

·使用快键捷 CTRL+F9(快捷键只有在编辑窗口激活时有效)。

1、88系统调试菜单

■联接 DVCC系统

将随机提供的通信电缆线一头 D型 9芯插头插入 DVCC实验系统 J2插座,

另一头插入 PC机的串行口 COM1或 COM2任选。接通 DVCC实验系统电源,

在 DVCC实验系统显示“P”状态下,按 PCDBG键,显示器显示“5.0”版本号,PC

机菜单上选择“联接 DVCC系统”菜单项。联机正常,屏幕上出现:反汇编窗口、

数据窗口、寄存器标志窗口。如出现“联机失败”提示,则表明 DVCC 实验系统

电源是否打开,对于 DVCC-5288H、DVCC-598H机型,开关 SK2位 1-2是否在

OFF位置,开关 KBB是否在 ON位置等。

快捷操作:

·单击工具栏“联接”命令按钮。

·使用快捷键“Ctrl+H”。

■单步执行(TaceIn)

单步执行一条程序,遇子程序调用则步入子程序。

快捷操作:

·单击工具栏上“单步”命令按钮,图标为 。

·使用快捷键“F7”。

■单步执行(TaceOut)

单步执行一条程序,遇予程序调用则跳过子程序,故也称宏单步。

快捷操作:

·单击工具栏上“单步”命令按钮,图标为 。

·使用快捷键“F8”。

■连续执行

从当前 PC值开始连续运行程序。

快捷操作:

·单击工具栏“运行”命令按钮。

·使用快捷键“F9”。

■执行到光标处

从当前 PC值开始,执行到当前光标所在的目标地址(只对反汇编窗口有效)。

快捷操作:

·使用快捷键“F4”。

■I/O端口操作

在选择该命令后出现“端口输入/输出”对话框,按要求输入和选择。

快捷操作:

·单击工具条“端口”命令按钮。

·使用快捷键“F1O”。

■传送(EXE)文件

选择该命令出现“打开”文件的对话框,要求你选择或输入欲传送到 DVCC

实验系统.EXE文件。

快捷操作:

·使用快捷键:“CTRL+L”。

2、在文本中移动

■按键移动

按键 操作

→右移一个字符

←左移一个字符

↑上移一行

↓下移一行

PgUp上移一页

PgDn下移一页

End右移至当前行末

Home移至当前行的开头,即第一列

Ctrl+Home移至文件头

Ctrl+End移至文件末尾

Ctrl+→光标右移一个字或一个单词

Ctrl+←光标左移一个字或一个单词

Ctrl+↑屏幕下滚一行

Ctrl+↓屏幕上滚一行

3、反汇编窗口

反汇编窗口是调试的基本部分,大部分的调试命令都是针对它而言,当该窗

口为活动窗口时,按快捷键 F1得到该窗口的帮助菜单,光标在该窗口时,单击

鼠标右键或按快捷键 Enter,则可出现反汇编对话框,在该对话框,可进行反汇

编的相应操作。

■设置新反汇编地址

本软件系统的反汇编窗口,“↑、↓、PgDn、PgUp”等键使光标在屏幕上下移

动,但此键只能对当前反汇编窗口所在第一行以下的行起作用。第一行以上的源

程序不能查看。如要查看则可选择“设置反汇编地址”命令,即可对源程序中任何

地址均可查看。执行该命令后,出现“反汇编”对话框,反汇编窗口默认地址为当

前反汇编窗口第一行源程序所在行地址,你可根据需要自行设定后,屏幕上反汇

编窗口反汇编出你所设地址开始的源程序。

快捷操作(51/96部分)

·按快捷键“CTRL+A”。

■设置新 PC

选择该命令后,出现“断点地址设置”对话框,对话框的默认地址为当前光标

所在行的地址,你可根据需要设置断点地址,执行该命令,反汇编窗口在你所选

地址出现一红色的光标条,表示断点设置成功。

■输入小汇编

在 51/96系统软件的“反汇编窗口”中,可输入单行小汇编,直接对光标所在

行的源程序进行修改。

快捷操作:

·单击光标所在行并按快捷键“CTRL+A”。

■文件存盘

选择该命令,出现“文件存盘”对话框,根据对话框提示输入文件名后按“确

认”键即可。

·数据存盘

进行数据块存盘操作。选择该项,出现“数据块操作”对话框,按照对话框要

求输入欲存盘数据块的起始地址、中止地址、文件名(必须是 HEX或 BIN格式)。

注意:如选择“仿真 RAM”,则将 DVCC实验系统 RAM中指定的数据块内

容进行存盘操作;如选择“外部数据 RAM”则将用户目标系统 RAM 中指的数据

块内容进行存盘操作。

■刷新窗口

选择该命令后,对反汇编窗口重新刷新一次。

快捷操作:

·按快捷键“F5”。

■设当前地址为 PC值:

执行该命令后,系统自动将当前光标所在地址设定为新的 PC地址,蓝色光

标条自动跳到该处。

快捷操作:

·单击光标所在行按快捷键“F3”。

■运行到此

选择该命令后,程序从原有的 PC的值处自动连续运行到当前光标所在行(程

序无法运行到该处除外)。

快捷键操作:

·按快捷键“F4”。

■设为断点

选择该命令后,将当前光标所在行设为断点。

快捷操作:

·按快捷键“F2”。

■清除断点

选择该命令后,取消你所设置的断点地址,反汇编窗口红色光标条消失,表

示设置点已取消。

快捷操作:

·按快捷键“F6”。

§快捷键及其定义

快捷键 定义 备注

F1 帮助 当前编窗口

F2 设置/清除断点 反汇编窗口

F3 设置当前 PC值 反汇编窗口

F4 执行到光标处 反汇编窗口

F5 刷新窗口 反汇编窗口、数据窗口

F6 清除断点 反汇编窗口

F7 单步 编辑状态

F8 宏单步 编辑状态

F9 连续执行 编辑状态

F10 端口输入、输出 编辑状态

F11 编译 编辑状态

F12 编译、连接 编辑状态

ALT 光标在菜单与窗口间切换

ALT+菜单栏字母 激活菜单

ALT+空格 激活系统菜单

ALT+F4 退出连机

ALT+X 退出系统

CTRL+A 设置新反汇编地址 反汇编窗口(51/96系统)

CTRL+A 全选 编辑状态

CTRL+C 复制 编辑状态

CTRL+F 查找 编辑状态

CTRL+G 光标快速定位 编辑状态

CTRL+H 联机

CTRL+K 刷新所有窗口 编辑状态(51/96系统)

CTRL+L 传送目标文件 编辑状态

CTRL+M 改变仿真模式 编辑状态(51/96系统)

CTRL+N 新建 编辑状态

CTRL+R 打开 编辑状态

CTRL+S 替换 编辑状态

CTRL+V 粘贴 编辑状态

CTRL+X 剪切 编辑状态

CTRL+Z 撤消 编辑状态

CTRL+F4 关闭窗口

CTRL+F6 窗口切换 编辑状态

CTRL+F7 连续单步(In)

CTRL+F8 连续单步(Out)

CTRL+F9 编译连接传送(exe) 编辑状态

CTRL+Number 跳到书签

(0-9) 退出菜单

ESC 退出菜单

SHIFT+CTRL 设置书签 编辑状态

+Number(0-9)

SHIFT+CTRL+Z 重做 编辑状态

SHIFT+F1 帮助主题

第四章 DOS功能调用

一、什么是 DOS功能调用

MS-DOS(PC-DOS)内包含了许多涉及设备驱动和文件管理等方面的子

程序,DOS 的各种命令就是通过适当的调用这些子程序实现的。为了方便程序

员使用,把这些子程序编写成相对独立的程序模块而且编上号。程序员利用汇编

语言可方便的调用这些子程序,这些子程序被精心编写,而且经过了大量应用实

践的考验。程序员调用这些子程序可减少对系统硬件环境的考虑和依赖,从而一

方面可大大精简应用程序的编写,另一方面可以使程序有良好的通用性。这些编

了号的可由程序员调用的子程序就称为 DOS 的功能调用或称为系统调用。DOS

功能调用主要包括子程序,设备驱动(基本 I/O)、文件管理、和其他(包括内存

管理、置取实践、置取中断向量、终止程序等)。

二、调用方法

(1)、根据所需要的功能调用准备入口参数,一部分功能调用是不需要入口参

数的,但大部分功能调用需要入口参数,在调用前应按要求准备好入口参数。

(2)、把功能调用号送 AH寄存器。

(3)、发软中断指令“INT 21H”。

三、本实验指导书中的程序所涉及到的基本 DOS功能调用有

(1)、带回显键盘输入(1号功能调用)

功能:从标准输入设备上读一个字符,并将该字符回显在标准输出设备上。

通常情况下,标准输入设备就是键盘,标准输出设备就是屏幕。如果键盘无字符

可读,则一直等待到有字符可读(即按键)。

入口参数:无

出口参数:AL=读到字符的代码(ASCII码)。

说明:如果读到的字符是 Ctrl+C或 Ctrl+Break,则结束程序。

(2)、显示输出(2号功能调用)

功能:向标准输出设备写一字符。通常情况下,标准输出设备就是屏幕。

入口参数:DL=要输出的字符(ASCII码)。

出口参数:无

说明:如果读到的字符是 Ctrl+C或 Ctrl+Break,则结束程序。

(3)、显示字符串(9号功能调用)

功能:在标准输出上显示一个字符串,通常情况下,标准输出就是屏幕。

入口参数:DL:DX=需要输出字符串的首地址,字符串以字符‘$’为结束

标志。

出口参数:无

说明:如果读到的字符是 Ctrl+C或 Ctrl+Break,则结束程序。

(4)、4CH号功能调用,其功能就是结束程序的运行而返回 DOS。4CH号功

能调用有一个存放在 AL寄存器中的入口参数,该入口参数是程序的结束码,其

值大小不影响程序的结束。

四、上机调试

程序编写好后,还要经过上机调试,以便检验程序是否正确并得到程序的

运行结果。8086/8088汇编语言的上机过程是:

(1)、用编辑程序 EDIT建立一个.ASM源文件。 即 C:\WINDOW>EDIT;

(2)、用汇编程序MASM把.ASM文件汇编成.OBJ文件。

即 C:\WINDOW>MASM 文件名.ASM;

(3)、用连接程序 LINK把.OBJ文件连接装配成.EXE文件。

即 C:\WINDOW> LINK 文件名.OBJ;

(4)、在 DOS环境下运行可执行文件。 即 C:\WINDOW>文件名。

汇编语言程序经过编辑、汇编和连接之后就形成了没有语法错误的可执行文

件,之后还需对可执行文件进行调试,以检查其算法的正确性,即是否能达到并

实现设计时的要求。调试程序 DEBUG就是专门用于调试汇编语言程序的一种工

具,它可逐段或逐条地调试运行可执行文件并同时给出有关结果,如发现有错及

时修改程序。

五、DEBUG命令及使用介绍

DEBUG 是一种面向汇编语言的动态调试工具,共有 19 条命令,现介绍

其中经常用到的几条命令。

DEBUG的启动方式为 C:\WINDOW>DEBUG 文件名.EXE <CR>

(1)、U(Unassemble)反汇编

格式:U[起始地址]

U[起始地址 结束地址]

U[起始地址 L字节数]

功能:对内存的机器码指令进行反汇编。屏幕上显示出每条指令存放的地

址、机器代码及汇编助记符指令,L后面的参数是反汇编的字节数。

(2)、G(Go)执行程序

格式:G[=起始地址]

G[=起始地址 断点地址 1,断点地址 2…]

功能:从起始地址开始执行程序,执行到指定断点时停止,并显示所有寄

存器和标志位的值,同时指出下一条要执行的指令地址和指令。若地址缺省,则

从 CS:IP开始执行;若起始地址只含偏移部分,则默认段地址是 CS。

(3)、P(Proceed)软中断跟踪命令

格式:P[=起始地址 指令数]

功能:逐条跟踪指令执行,遇到 INT H╳╳ 指令后停止,不会跟踪进中

断处理程序。能够一次执行完中断处理程序、子程序、循环指令及重复串指令后,

停在下一条指令。

(4)、R(Register)显示或修改寄存器内容

格式:R[寄存器名]

功能:显示或修改寄存器的内容,若寄存器名缺省,则显示所有 CPU 寄

存器内容、标志位状态、现行 CS:IP指示的机器码指令以及对应的汇编助记符

指令。

(5)、Q(Quit)退出 DEBUG命令

格式:Q

功能:退出 DEBUG环境返回到 DOS状态。Q命令不将内存中的程序存

盘。

软件实验

实验一 初级程序的调试与执行

一、 实验目的

1、 学习数据传送和算术运算指令的用法。

2、 掌握运算类指令的用法。

3、了解变量的表示、使用。

4、了解 DOS程序的调试与执行。

二、实验内容

1.在 DVCC实验系统下,将两个二进制双精度(32位二进制数)数相加,

先求低 16位和,并将结果存入低址单元,后求高 16位和,再将结果存入高

址单元。 由于在低位相加时可能有进位,因而高 16位相加时用 ADC指令。

例:0018655AH+0043D58CH=005C3AE6H

2.DOS操作系统下,完成十六以内两个一位数加法,生成可执行文件显示

结果。例:4+3=7

三、在 DVCC实验系统下调试,程序如下:

0000 CODE SEGMENT

ASSUME CS:CODE

ORG 1000H

1000 BB 2000 START: MOV BX,2000H

1003 8B 07 MOV AX,[BX]

1005 BB 2004 MOV BX,2004H

1008 03 07 ADD AX,[BX] ;低位相加

100A BB 2008 MOV BX,2008H

100D 89 07 MOV [BX],AX ;存低位结果

100F BB 2002 MOV BX,2002H

1012 8B 07 MOV AX,[BX]

1014 BB 2006 MOV BX,2006H

1017 13 07 ADC AX,[BX] ;带进位高位加法

1019 BB 200A MOV BX,200AH

101C 89 07 MOV [BX],AX ;存高位结果

101E EB FE JMP $ ;原地循环

1020 CODE ENDS

END START

四、实验步骤

1、按 MON键,显示器的左端显示提示符,一个闪动的“P”字符,表示开发

机处于初始化状态。按压 PCDBG键,进入与上位机通讯、调试、反汇编状态,

显示器全暗。

2、打开 "新建 "正确输入实验程序,然后存盘,点击 "调试 " 图标或

"CTRL+F9",完成编译连接传送。

3、在 2000H--2003H单元中存放加数 5A 65 18 00 (低位在前,高位在后) ,

在 2004H--2007H单元中存放被加数 8C D5 43 00。

4、按"F9"或点击"运行"图标,连续运行上面程序。

5、检查结果,查看 2008H单元内容应为 E6 3A 5C 00。

五、DOS操作系统下源程序:

data segment at 2000h

x db 4

y db 3

z db ?

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov al,x

add al,y

mov z,al

add z,30h ;结果转换为 ASCII码

mov dl,z

mov ah,2

int 21h ;2号调用,显示输出结果

mov ah,4ch

int 21h ;过程终止返回操作系统

code ends

end start

五、习题: 1. DVCC 实验程序 0008H 处,ADD AX,[BX]执行后的

状态标志 CF,OF 是什么?

2. 解释 DOS源程序中,八条黑体字指令的含义。

实验二、编码及数制转换

一、实验目的

掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。

二、实验内容

将 ASCII码表示的十进制数转换为二进制数。

十进制数表示方法是:Dn*10^n+D(n-1)*10^(n-1)+...+D0*10^0 ,从十进制数

的最高位 Dn开始作乘 10加下一位的操作,结果再乘 10加下一位,经重复可求

出二进制数结果。

被转换的 ASCII 码表示的十进制数 00319D(30H、30H、33H、31H、39H)存

放在 2000H--2004H单元中, 转换结果 013FH存放在 2010H--2011H单元中。

((((D4-30H)*0AH+D3-30H)*0AH+D2-30H)*0AH+D1-30H)*0AH+D0

三、在 DVCC实验系统下调试,程序如下

0000 CODE SEGMENT

ASSUME CS:CODE

ORG 1000H

1000 BE 0020 START:MOV SI,2000H ;十进制数首地址

1003 BF 1020 MOV DI,2010H ;二进制数首地址

1006 BB 0A00 MOV BX,000AH

1009 B9 0400 MOV CX,0004H ;转换位数

100C B4 00 MOV AH,00H

100E 8A 04 MOV AL,[SI] ;取第一个 ASCII码

1010 2C 30 SUB AL,30H ;减去 30乘 10

1012 F7 EB LOOP1: IMUL BX

1014 02 44 01 ADD AL,[SI+01] ;加下一个 ASCII 码减

30

1017 2C 30 SUB AL,30H

1019 46 INC SI

101A E2 F6 LOOP LOOP1 ;转换结束否

101C 89 05 MOV [DI],AX ;存结果

101E EB FE JMP $

1020 CODE ENDS

END START

四、DOS操作系统下源程序:

data segment asc db 30h,30h,33h,31h,39h res dw (?) data ends code segment assume ds:data, cs:code org 1000h start: mov ax,data mov ds,ax lea si,asc lea di,res mov bx,000ah mov cx,0004h mov ah,00h mov al,[si] sub al,30h loop1: imul bx add al,[si+1] sub al,30h inc si loop loop1 mov [di],ax mov ah,4ch int 21h code ends end start 五、习题: 1.分析主程序,用数学表达式表明该程序的执行过程;

2.试述指令 SUB AL,30h的作用; 3.试述 LOOP LOOP1指令的执行过程。

实验三.分支及循环程序设计

一、实验目的

1、 掌握分支、循环程序结构;

2、 了解程序设计的基本方法。

二、实验内容

将内存中一数据块(源数据块)传送到另一存贮空间(目的数据块)。当源数据块

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

址时,从数据块末址开始传送。

三、在 DVCC实验系统下调试,程序如下

0000 CODE SEGMENT

ASSUME CS:CODE

ORG 1000H

1000 B9 1000 START: MOV CX,0010H ;数据块字节数

1003 BE 0020 MOV SI,2000H ;源首地址

1006 BF 0021 MOV DI,2100H ;目的首地址

1009 3B F7 CMP SI,DI

100B 77 12 JA SEND ;源首>目的地址是时转移

100D 03 F1 ADD SI,CX ;源首<目的地址,从末址开始传

100F 03 F9 ADD DI,CX

1011 4E DEC SI

1012 4F DEC DI

1013 8A 04 LOOP1: MOV AL,[SI]

1015 88 05 MOV [DI],AL

1017 4E DEC SI

1018 4F DEC DI

1019 49 DEC CX

101A 75 F7 JNE LOOP1

101C EB 0A 90 JMP LAST

101F 8A 04 SEND: MOV AL,[SI] ;从首地址开始传送

1021 88 05 MOV [DI],AL

1023 46 INC SI

1024 47 INC DI

1025 49 DEC CX

1026 75 F9 JNE SEND

1028 EB FE LAST: JMP $

102A CODE ENDS

END START

四、实验步骤

1、正确输入程序。

2、在 SI(2000H)为起始地址的单元存入 16个数。

3、运行程序。

4、查看以 DI(2100H)为起始单元中的数据与以 SI(2000H) 为起始地址单元

中的数据是否相同。

五、选做实验内容

现需对某单位职工人数中的男性、女性人数分别进行统计。在人口属性统计表

中,男性用“0”表示,女性用“1”表示,总人数为 COUNT。编程实现。

六、DOS操作系统下源程序:

data segment

block db 0,1,0,1,1,1,0,1,1,1

man db ?

woman db ?

count equ 0ah

data ends

code segment

assume cs:code,ds:data

org 1000h

mov ax,data

mov ds,ax

mov cx,count

mov si,0

mov man,0

mov woman,0

a:mov al,block[si]

cmp al,0

jnz w

inc man

b:inc si

loop a

add man,30h

mov dl,man

mov ah,2

int 21h

add woman,30h

mov dl,woman

mov ah,2

int 21h

mov ah,4ch

int 21h

w:inc woman

jmp b

code ends

end

七、程序流程图:

八、习题: 1.分析程序执行结果。 2.比较本例中程序转移类指令 JNZ W、LOOP A、JMP B的特征。

取出代码, [SI]=1?

初始化: 指针 SI=0; 男职工数MAN=0; 女职工数WOMAN=0.

MAN+1 WOMAN+1

SI+1,指向下一代码

显示男职工数MAN

显示女职工数WOMAN

程序结束

程序开始

统计完毕? CX-1=0?

Y

Y

N

实验四 排序程序设计及双重循环程序

的应用

一、实验目的

1、 掌握用寄存器、内存单元、堆栈来暂存数据的基本方法;

2、 掌握寄存器在操作数寻址方式中的使用;

3、 了解大、小写字母的 ASCII码表示;

4、 巩固 DOS程序的调试方法。

5、 掌握分支、循环、程序调用等基本程序结构。

二、实验内容

有 10个数存入 2000H开始的单元中,编制程序使 10个数从大到小排列。

三、在 DVCC实验系统下调试,程序如下:

0000 CODE SEGMENT

ASSUME CS:CODE

ORG 1000H

1000 BA0900 START: MOV DX,09H

1003 BE0020 START1: MOV SI,2000H ;2000单元为初始地址

1006 B90A00 MOV CX,09H ;置 10个数

1009 E80800 A: CALL COMP ;一个单元和下一单元比

100C 46 INC SI

100D E2FA LOOP A

100F 4A DEC DX

1010 75F JNZ START1

1012 EBFE JMP $

1014 51 COMP: PUSH CX ;比较子程序 ,大数在前

1015 8A04 MOV AL,[SI]

1017 46 INC SI

1018 8A1C MOV BL,[SI]

101A 3AC3 A2: CMP AL,BL

101C 7604 JBE A1

101E 4E DEC SI

101F EB0890 JMP A3

1022 86C3 A1: XCHG AL,BL

1024 881C MOV [SI],BL

1026 4E DEC SI

1027 8804 MOV [SI],AL

1029 59 A3: POP CX

102A C3 RET

102B CODE ENDS

END START

四、选做实验内容

将数据段 datasg中每个单词改为大写字母。

五、DOS操作系统下源程序:

assume cs:codesg,ds:datasg

datasg segment

db 'ibm '

db 'dec '

db 'dos '

db 'rax '

datasg ends

codesg segment

start: mov ax,datasg

mov ds,ax

mov bx,0

mov cx,4

s0: mov dx,cx ;保护外循环计数值

mov si,0

mov cx,3

s: mov al,[bx+si]

and al,11011111b

mov [bx+si],al

inc si

loop s

add bx,16

mov cx,dx ;恢复外循环计数值

loop s0

mov ah,4ch

int 21h

codesg ends

end start

六、习题:

1. 程序使用两条 LOOP指令完成内、外循环,外循环使用MOV DX,CX

MOV CX,DX来保护计数值,请再写出两种计数值的保存和提取方式。

2.指出指令MOV AL,[BX+SI]中内存单元操作数的寻址方式;说明 BX、

SI寄存器在内、外循环中的作用。

3.分析程序执行结果。

实验五 并行口 8255A应用

一、实验目的

进一步掌握 8255A可编程并行口使用方法。

二、实验内容

1、实验原理

实验原理图如图所示。PB4~PB7 和 PC0~PC7 分别与发光二极管电路 L1~L12

相连,本实验为模拟交通灯实验。交通灯的亮灭规律如下:

设有一个十字路口,1、3 为南北方向,2、4 为东西方向,初始为四个路口的红

灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;延时一

段时间后,1、3路口的绿灯熄灭,而 1、3路口的黄灯开始闪烁,闪烁若干次以后,1、

3路口红灯亮,而同时 2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、

4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到 1、3 路口方向,之

后重复上述过程。8255A的 PB4~PB7对应黄灯,PCO~PC3对应,红灯,PC4~PC7

对应绿灯。8255A工作于模式 0,并置为输出。由于各发光二极管为反向驱动,

使其点亮应使 8255A相应端口置 1。

2、实验线路连接

(1)L1-PC0 L4-PC1 L7-PC2 L10-PC3 L2-PB4 L5-PB5

L8-PB6

L11-PB7 L3-PC4 L6-PC5 L9-PC6 L12-PC7

三、实验步骤

1、按图连好实验线路

2、运行实验程序

(1)联机时,输入实验程序,联机运行。

(2)单机时,实验程序起始地址为 F0000:90E0。

在系统显示监控提示苻 P时:

输入 F0000按 F1键

输入 90E0按 EXEC键

在系统上显示执行符,同时 L1~L12发光二极管模拟交通灯显示。

四、实验报告及实验要求

1、予习 8255A工作原理及编程方法。

2、根据实验要求编制程序。

3、总结方式 0的工作特点及输入输出编程方法。

五、选做实验内容

1、将 8255的 PB0-PB3与开关电路 K1-K4相连,PC0-PC3与发光二极管电路

L1-L4相连,由 8255A的 PB口的低四位输入开关的状态,通过 PC口控制的

发光二极管显示出来。在本实验中,8255A 工作于模式 0,PB 口置为输入,

PC口低四位置为输出。自编程序。

2、本实验将 8255的 PC0-PC3与开关电路 K1-K4相连,PB0-PB7与发光二极

管电路 L1-L8相连,由 8255A的 PC口的低四位输入二位开关的状态,将其对

应的十六进制数通过 PB口控制的七段显示器显示出来。在本实验中,用 8个

发光二极管来模拟七段显示器的 a-dp。8255A工作于模式 0,PB口置为输出,

PC 口低四位置为输入。由于发光二极管为反向驱动,使其点亮应使 PB 口相

应位置 1。

(1)实验线路连接

PC0─K1 PC1─K2 PC2─K3 PC3─K4

PB0─L1 PB1─L2 PB2─L3 PB3─L4

PB4─L5 PB5─L6 PB6─L7 PB7─L8

六、实验程序

CODE SEGMENT

ASSUME CS:CODE

DB55 EQU 0FF29H ;B端口地址为 0FF29H

DC55 EQU 0FF2AH ;C端口地址为 0FF2AH

CTL EQU 0FF2BH ;控制口地址为 0FF2BH

ORG 1000H ;定义起始地址

START:MOV DX,CTL ;写控制字

MOV AL,81H

OUT DX,AL

MOV BX,OFFSET TAB ;取代码表的偏移量送 BX

MOV DX,DC55

IN AL,DX ;读开关状态

AND AL,0FH ;屏蔽高 4位

XLAT ;换显示代码

MOV DX,DB55

OUT DX,AL ;将显示代码送 PB口输出

JMP START

TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

CODE ENDS

END START

实验六 8253A定时计数器实验

一、实验目的

学习 8253A可编程定时计数器与 8088CPU的接口方法;了解 8253A的工作方

式;掌握 8253A在各种方式下的编程方法。

二、实验内容

本实验原理图如图所示,8253A的 A0、A1接系统地址总线 A0、A1,故 8253A

有四个端口地址, 端口地址如表 8-1所示。8253A的片选地址为 40H~4FH。因此,

本实验仪中的 8253A四个端口地址为 40H、41H、42H、43H,分别对应通道 0、

通道 1、通道 2、和控制字。采用 8253A 通道 0,工作在方式 3(方波发生器方

式 0,输入时钟 CLK0为 1MHZ,输出 OUTO要求为 1KHZ的方波,并要求用接

在 GATE0引脚上的导线是接地(0电平)或甩空(1电平)来观察 GATE对计

图 6-1

数器的控制作用,用示波器观察输出波形。

三、实验线路连接

(1)8253的 GATE0接+5V

(2)8253 的 CLK0 插孔接分频器 74LS393(左上方)的 T4 插孔,分频器的

频率为 4MHZ。

四、实验步骤

1、按图连好实验线路

(1)联机时,输入实验程序,联机运行。

(2)单机时,实验程序起始地址为 F0000:9180。

在系统显示监控提示符 P时:

输入 F000按 F1键

输入 9180按 EXEC键

3、用示波器测量 8253左侧 OUTO插孔,应有方波输出。

五、实验报告及实验要求

1、预习 8253A工作原理及编程方法.

2、总结方式 3工作特点、编程方法及分频设置方法。

3、记录输入及输出时钟波型。

六、选做实验内容

本实验原理图如图 6—2 所示,8253A 的 A0、A1 接系统地址总线 A0、A1,

故 8253A 有四个端口地址,端口地址如表 6—1 所示。8253A 的片选地址为

40H~4FH。因此,本实验仪器中的 8253A四个端口地址为 40H、41H、42H、43H,

分别对应通道 0、通道 1、通道 2和控制字。采用 8253A通道 0,工作在方式 3

(方波发生器方式),输入时钟 CLK0为 1MHZ,输出 OUT0要求为 1KHZ的方

波;通道 2,工作在方式 2(频率发生器),当通道 0中输出的 1KHZ方波接入通

道 2的 CLK2,对此方波进行分频,并要求用接在 GATE0和 GATE2引脚上的导

线接地(“0”电平)或甩空(“1”电平)来观察 GATE对计数器的控制作用,用示

波器观察输入波形和 OUT0及 OUT2的输出波形,进行对比。

D08 OUT0 10

D17 GATE0 11

D26 CLK0 9

D35

D44

D53

D62 OUT1 13

D71 GATE1 14

CLK1 15

CS21

RD22

WR23

OUT2 17

A019 GATE2 16

A120 CLK2 18

VCC

74LS393

MPT4

OUT0GATE0CLK0

OUT2GATE2CLK2

CH2

+5V

CH1

XRDXWR

XA0XA1

D0

D7

XD0

XD7

KBB-2

8253CS

Y48251CS

Y5

图 6-2

七、实验步骤

1、本实验在 DVCC环境下进行。按图 6—2连好实验线路。

2、运行实验程序。

3、用示波器测量 8253A左侧 OUT0插孔和 OUT2插孔,观察输出波形。

八、实验程序

CODE SEGMENT

ASSUME CS:CODE

ORG 1180H ;定义起始地址

START: JMP TCONT

TCONTRO EQU 0043H ;定义 8253控制口、

TCON0 EQU 0040H ;0通道和 2通道地址

TCON2 EQU 0042H

TCONT: MOV DX,TCONTRO ;写控制字,0通道输出方波

MOV AL,37H

OUT DX,AL

MOV AL,95H ;写控制字,2通道对方波进行分频

OUT DX,AL

MOV DX,TCON0 ;计数初值送 0通道寄存器

MOV AL,00H

OUT DX,AL

MOV AL,10H

OUT DX,AL

MOV DX,TCON2 ;计数初值送 2通道寄存器

MOV AL,02H

OUT DX,AL

JMP $ ;结束

CODE ENDS

END START

实验七 使用 8259A的单级中断控制实验

一、实验目的

1、 掌握中断控制器 8259A与微机接口的原理和方法。

2、 掌握中断控制器 8259A的应用编程。

二、实验内容

本系统中已设计有一片 8259A中断控制芯片,工作于主片方式,8个中断

请求输入端 IR0-IR7对应的中断型号为 8-F,其和中断矢量关系如下表所示。

表 7-1

8259A中断源 中断类型号 中断矢量表地址

IR0 8 20H~23H

IR1 9 24H~27H

IR2 A 28H~2BH

IR3 B 2CH~2FH

IR4 C 30H~33H

IR5 D 34H~37H

IR6 E 38H~3BH

IR7 F 3CH~3FH

根据实验原理图,8259A和 8088系统总线直接相连,8259A上连有一系统

地址线 A0,故 8259A有 2个端口地址,本系统中为 60H、61H。60H用来写 ICWI,

61H用来写 ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。OCW2、

OCW3用口地址 60H,OCW1用口地址 61H。图中使用了 3号中断源,IR3插孔

和 SP插孔相连,中断方式为边沿触发方式,每按一次 AN按钮产品中断信号,

向 8259A 发出中断请求信号。如果中断源电平信号不符规定要求则自动转到 7

号中断,显示 Err。CPU响应中断后,在中断服务中,对中断次数进行计数并显

示,计满 5次结束,显示器显示 Good。

图 7-1

三、实验线路连接

(1)8259模块上的 INT连 8088的 INTR(在主板键盘矩阵下面)。

(2)8259模块上的 INTA连 8088的 INTA(在主板键盘矩阵下面)。

(3)MP区 SP插孔和 8259的 3号中断 IR3插孔相连,SP端初始为低

电平。

(4)8259模块上的 D0~D7连到 BUS2区的 XD0~XD7。

(5)8259模块上的 CS端接 Y6。

(6)8259模块上的 A0连到 BUS区的 XA0上。

(7)8259模块上的 RD、WR信号线分别连到 BUS3区的 XRD、XWR上。

四、实验步骤

1、按图连好实验线路

2、运行实验程序

(1)联机时,输入实验程序,联机运行。

(2)单机时,实验程序起始地址为 F000:91A0。

在系统显示提示符 P时:

输入 F000按 F1键

输入 91A0按 EXEC键。在系统上显示 8259-1

3、按 AN按钮,按满 5次显示 GOOD。

五、实验报告及实验要求

1、预习 8259A工作原理及编程方法.

2、编制程序:主程序、中断程序、中断向量表。

3、 此实验为什么采用脉冲触发中断。

六、选做实验内容

根据实验原理图 7—2,8259A和 8088系统总线直接相连,8259A上连有一

系统地址线 A0,故 8259A有 2个端口地址,本系统中为 60H、61H。60H用来

写 ICW1,61H 用来写 ICW2、ICW3、ICW4,初始化命令字写好后,再写操作

命令字。OCW2、OCW3用口地址 60H,OCW1用口地址 61H。本实验原理图中

使用了 3号中断源,IR3插孔和 SP插孔相连接,中断方式为边缘触发方式,中

断前预先显示提示符“0”,按一次 AN按钮产生一次中断信号,向 8259A发出中

断请求信号。在中断服务程序中,将十六进制数 1-A 依次传送到以 2000H 为起

始地址的 10个内存单元中,然后返回。

D011

D110

D29

D38

D47

D56

D65

D74

A027

CS1

RD3

WR2

SP/EN16

INT17

INTA26

IR0 18

IR1 19

IR2 20

IR3 21

IR4 22

IR5 23

IR6 24

IR7 25

CAS0 12

CAS1 13

CAS2 15

8259A

CAS0CAS1CAS2

SP

INTAINTR

VCC XWRXRDY6XA0

D0

D7

XD0

XD7

12345678

161514131211109

RESPACK4 GND

图 7-2

七、实验线路连接

1、8259模块上的 INT连 8088的 INTR(在主板键盘矩阵下面)。

2、8259模块上的 INTA连 8088的 INTA(在主板键盘矩阵下面)。

3、P区 SP插孔和 8259的 3号中断 IR3插孔相连,SP端初始为低电平。

4、8259模块上的 D0-D7连到 BUS2区的 XD0-XD7。

5、8259模块上的 CS端接 Y6。

6、8259模块上的 A0连到 BUS区的 XA0上。

6、8259模块上的 RD、WR信号线分别连到 BUS3区的 XRD、XWR上。

八、实验程序

CODE SEGMENT

ASSUME CS:CODE

INTPORT1 EQU 0060H ;定义 8259控制口和数据口地址

INTPORT2 EQU 0061H

INTQ3 EQU INTREEUP3 ;定义中断向量

ORG 11A0H ;定义起始地址

START:CLD ;关中断

MOV DX,0FF22H ;显示初始提示符“0”

MOV AL,0C0H

OUT DX,AL

MOV DX,0FF21H

MOV AL,20H

OUT DX,AL

MOV CX,0FFH

DISP0:LOOP DISP0

MOV AX,0H ;写中断向量

MOV ES,AX

MOV DI,002CH ;写 3号中断矢量

LEA AX,INTQ3

STOSW

MOV AX,0H

STOSW

MOV AL,13H ;写主片 ICW1,多片,要写 ICW4

MOV DX,INTPORT1

OUT DX,AL

MOV AL,08H ; 主片 ICW2,中断号的高 5位

MOV DX,INTPORT2

OUT DX,AL

MOV AL,09H ; 主片 ICW3,IR3上有从片

OUT DX,AL

MOV AL,0F7H ; 主片允许 IR3中断源中断

OUT DX,AL

STI ; 开中断

WATING:JMP WATING ; 循环等待中断

INTREEUP3:CLI ; 3号中断服务程序

MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

MOV AX,0H

MOV DS,AX

MOV CX,0AH

MOV AL,01H

MOV BX,2000H

LP:MOV BYTE PTR DS:[BX],AL ; 送数

INC BX

INC AL

LOOP LP

STI

IRET

CODE ENDS

END START

实验八 存贮器读写实验

一、实验目的

1、熟悉静态 RAM的使用方法,掌握 8088微机系统扩展 RAM的方法。

2、熟悉静态 RAM读写数据编程方法。

二、实验内容

对指定地址区间 RAM(2000H-23FFH)先进行写数据 55AAH,然后将其内

容读出再写到 3000H-33FFH中。

三、硬件电路(系统中已连接好)

四、实验步骤

(1)联机时,输入实验程序,联机运行。

(2)单机时,实验程序起始地址为 F000:9700。

在系统显示监控提示符 P时:输入 F000按 F1键。输入 9700按 EXEC键。

稍后按 RESET键退出,用存贮器读写方法检查 2000H-3000H中的内容应都

是 55AA。

五、实验报告及实验要求

1、绘制程序框图,说明程序原理,编制实验程序。

2、绘制存储器的连接方法。

8255实验源程序 CODE SEGMENT ASSUME CS:CODE IOCONPT EQU 0FF2BH IOAPT EQU 0FF28H IOBPT EQU 0FF29H IOCPT EQU 0FF2AH ORG 10e0H START: MOV DX,IOCONPT MOV AL,80H OUT DX,AL MOV DX,IOBPT MOV AL,00H OUT DX,AL MOV DX,IOCPT MOV AL,0FH OUT DX,AL CALL DELAY1 IOLED0: MOV AL,01011010B MOV DX,IOCPT OUT DX,AL CALL DELAY1 CALL DELAY1 MOV AL,00001010B OUT DX,AL MOV CX,8H IOLED1: MOV DX,IOBPT MOV AL,50H OUT DX,AL CALL DELAY2

MOV AL,00H OUT DX,AL CALL DELAY2 LOOP IOLED1 MOV DX,IOCPT MOV AL,10100101B OUT DX,AL CALL DELAY1 CALL DELAY1 MOV AL,00000101B OUT DX,AL MOV CX,8H IOLED2: MOV DX,IOBPT MOV AL,0A0H OUT DX,AL CALL DELAY2 MOV AL,00H OUT DX,AL CALL DELAY2 LOOP IOLED2 MOV DX,IOCPT MOV AL,0FH OUT DX,AL CALL DELAY2 JMP IOLED0 DELAY1: PUSH AX PUSH CX MOV CX,0030H DELY2: CALL DELAY2 LOOP DELY2 POP CX POP AX RET DELAY2: PUSH CX MOV CX,8000H DELA1: LOOP DELA1 POP CX RET CODE ENDS END START

8253实验源程序

CODE SEGMENT ASSUME CS:CODE ORG 1180H START: JMP TCONT TCONTRO EQU 0043H TCON0 EQU 0040H TCONT: MOV DX,TCONTRO MOV AL,36H OUT DX,AL MOV DX,TCON0 MOV AL,00H OUT DX,AL MOV AL,04H OUT DX,AL JMP $ CODE ENDS END START

8259实验源程序 CODE SEGMENT ASSUME CS:CODE INTPORT1 EQU 0060H INTPORT2 EQU 0061H INTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7 ORG 11A0H START: CLD CALL WBUF1 CALL WRINTVER ;WRITE INTRRUPT MOV AL,13H MOV DX,INTPORT1 OUT DX,AL MOV AL,08H MOV DX,INTPORT2 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0F7H OUT DX,AL MOV BYTE PTR DS:[0701H],01H ;TIME=1 STI WATING: CALL DISP ;DISP 8259-1 JMP WATING

WRINTVER:MOV AX,0H MOV ES,AX MOV DI,002CH LEA AX,INTQ3 STOSW MOV AX,0000h STOSW MOV DI,003CH LEA AX,INTQ7 STOSW MOV AX,0000h STOSW RET INTREEUP3:CLI MOV AL,DS:[0701H] CALL CONVERS MOV BX,077BH MOV AL,10H MOV CX,05H INTRE0: MOV BYTE PTR DS:[BX],AL INC BX LOOP INTRE0 MOV AL,20H MOV DX,INTPORT1 OUT DX,AL ADD BYTE PTR DS:[0701H],01H CMP BYTE PTR DS:[0701H],06H JNA INTRE2 MOV DS:[077AH],191AH MOV DS:[077CH],1819H mov DS:[077Eh],1010H INTRE1: CALL DISP JMP INTRE1 CONVERS: AND AL,0FH MOV BX,077AH MOV DS:[BX],AL INC BX RET INTRE2: MOV AL,20H MOV DX,INTPORT1 OUT DX,AL STI IRET INTREEUP7: CLI

MOV AL,20H MOV DX,INTPORT1 OUT DX,AL MOV DS:[077AH],1C1CH MOV DS:[077CH],101BH mov DS:[077Eh],1010H INTRE3: CALL DISP JMP INTRE3 disp: mov dx,077Fh mov ah,20h disp0: mov cx,00ffh mov bx,dx mov bl,ds:[bx] mov bh,0h push dx mov dx,0ff22h mov al,cs:[bx+127bh] OUT DX,AL mov dx,0ff21h mov al,ah OUT DX,AL disp1: loop disp1 pop dx dec dx shr ah,01h jnz disp0 mov dx,0ff22h mov al,0FFH OUT DX,AL ret data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh db 0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh db 90h,0a3h,0a1h,86h,8fh WBUF1: MOV BX,0 MOV WORD PTR DS:[BX+077AH],1701H ADD BX,2 MOV WORD PTR DS:[BX+077AH],0509H ADD BX,2 MOV WORD PTR DS:[BX+077AH],0802H RET CODE ENDS END START