80868088汇编语言上机调试与实验指导

8086/8088汇编语言上机调试与实验指导

8086/8088汇编语言上机调试与实验指导

编辑源程序

汇编语言源程序:用汇编语句编写的解决应用问题的程序。

汇编程序:将汇编语言源程序翻译成机器语言程序的系统。

汇编:将汇编语言程序翻译成机器语言程序的过程。

在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。

1、编辑软件

行编辑软件:https://www.360docs.net/doc/0c15480060.html,

全屏编辑软件:WPS、https://www.360docs.net/doc/0c15480060.html,、https://www.360docs.net/doc/0c15480060.html,、WORD、PE等。

当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。

2、汇编程序

有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。

3、连接程序

用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。

4、辅助工具程序(.EXE)

进行汇编语言程序调试和文件格式转换的程序有:

https://www.360docs.net/doc/0c15480060.html, 动态调试程序

EXE2BIN.EXE 文件格式转换程序

CREF.EXE 交叉引用程序

编辑、汇编、连接、调试过程如图1-4所示。



图1-4 汇编程序上机过程

*TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。

汇编源程序

用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。为此,需键入:

C:>MASM <源文件名>

或 C:>MASM

按前一种格式键入,屏幕上显示:

Microsoft(R) Macro assemble Version 5.00

Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reserved

OBJ filename[.obj]:

Source listing[nul.lst]:

Cross-reference[nul.crf]:

以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。

汇编后生成以下几个文件:

1、OBJ文件

.OBJ文件是必须生成的一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个.OBJ文件,供下一步连接用。

若源程序有语法错误时,会出现错误信息提示:

源程序文件行 错误信息代码 错误说明信息

最后信息提示:

×× Warning errors (警告错误)

×× Severe errors (严重错误)

若严重错误总数不为0,则.OBJ文件没有生成,需回到编辑状态下修改源程序直到无错为止。

2、LST文件(列表文件)

.LST文件对调试程序有帮

助,它是将源程序中各语句及其对应的目标代码和符号表以清单方式列出,如果需要,在屏幕显示的第二个提问的冒号后输入文件名即可,如果不需要,直接按回车键。

3、CRF文件(交叉引用文件)

交叉引用.CRF文件给出了源程序中定义的符号引用情况,按字母顺序排列。.CRF文件不可显示,须用CREF.EXE系统程序将.CRF文件转换成为.REF文件后方可显示输出。

若按后一种格式输入,系统会依次出现四个提示信息,比第一种格式多了一项源程序文件名的输入。应答方式与第一种格式相同。

连接目标程序

汇编后生成的.OBJ文件,其所有目标代码的地址都是浮动的偏移地址,机器不能直接运行。必须用连接程序(LINK.EXE)对其进行连接装配定位,产生.EXE可执行文件,方可运行。

在系统提示符下键入:LINK <源程序文件名> 或 LINK

屏幕上出现以下提示信息:

Microsoft(R) Macro assemble Version 5.00

Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reserved

Run file [.EXE]:

List File [nul.map]:

Libraries [.lib]:

连接后,可生成两种文件:.EXE和.MAP

1、EXE文件(可执行文件)

若采用方括号中的默认值,直接按回车键,否则需重新输入一文件名。

若连接过程中无错误,则自动在当前工作盘生成.EXE文件。若有错误,则会给出错误信息提示,这时必须重新修改源程序,再汇编、连接。

2、MAP(连接映像文件)

3、LIB库文件

连接程序询问是否使用某种库文件,不需使用库文件直接按回车键。

4、若要连接多个模块目标程序,可用“+”把它们连接起来。

如:LINK files1+files2+files3

若直接键入:LINK会依次出现四个提示信息,应答方式应与LINK<源程序文件>相同,仅增加了一项输出,询问被连接的目标文件名字:Object Modeules[.OBJ]:

格式:LINK ;多了一个分号,表示结束后续询问。

运行程序

经过汇编、连接后生成的.EXE文件,可在DOS系统直接运行,只要键入相应的文件名即可。

如:C:\MASM><文件名>

DOS的https://www.360docs.net/doc/0c15480060.html,模块将该程序装配到内存,并设置和分配启动地址。也可在DEBUG调试程序下运行。如何用DEBUG程序来运行和调试程序将在DEBUG调试程序中详细讨论。

DEBUG调试程序

DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。

1

、DEBUG程序使用

在DOS提示符下键入命令:

C>DEBUG [盘符:][路径][文件名.EXE][参数1][参数2]

这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG进行程序调试。若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG程序调入内存后,再由DEBUG将指定的文件名装入内存。

2、DEBUG的常用命令

1)显示、修改寄存器命令 R

格式:R[寄存器名]

功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。

AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000

DI=0000 DS=3000 ES=23A0 CS=138E IP=0000

NV UP DI PL NZ NA PO NC

138E:0000 MOV AX,1234

-R AX ;输入命令

AX 0014 ;显示AX的内容

: ;供修改,不修改按回车。

若对标志寄存器进行修改,输入:-RF

屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。

NV UP DI PL NZ NA PO NC不修改按回车键。要修改需个别输入一个或多个此标志的相反值,再按回车键。R命令只能显示、修改16位寄存器。

2)显示存储单元命令 D

格式1:D[起始地址]

格式2:D[起始地址][结束地址|字节数]

功能:格式1从起始地址开始按十六进制显示80H个单元的内容,每行16个单元,共8行,每行右边显示16个单元的ASCII码,不可显示的ASCII码则显示“?”。格式2显示指定范围内存储单元的内容,其他显示方式与格式1一样。如果缺省起始地址或地址范围,则从当前的地址开始按格式1显示。

例如: -D 200 ;表示从DS:0200H开始显示128个单元内容

-D 100 120 ;表示显示DS:0100-DS:0120单元的内容

说明:在DEBUG中,地址表示方式有如下形式:

段寄存器名:相对地址,如:DS:100

段基值:偏移地址(相对地址),如:23A0:1500

3)修改存储单元命令 E

格式1:E[起始地址] [内容表]

格式2:E[地址]

功能:格式1按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容。

例如:—E DS:0100 'VAR' 12 34

表示从DS:0100 为起始单元的连续五个字节单元内容依次被修改为

'V'、'A'、'R'、12H、34H。

格式2是逐个修改指定地址单元的当前内容。

如:—E DS:0010

156F:0010 41.5F

其中156F:0010单元原来的值是41H,5FH为输入的修改值。若只修改一个

单元的内容,这时按回车键即可;若还想继续修改下一个单元内容,此时应按空格键,就显示下一个单元的内容,需修改就键入新的内容,不修改再按空格跳过,如此重复直到修改完毕,按回车键返回DEBUG“-”提示符。如果在修改过程中,将空格键换成按“-”键,则表示可以修改前一个单元的内容。

4)汇编命令 A

格式:A[起始地址]

功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。若缺省起始地址,则从当前CS:100地址开始存放。A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。

5)反汇编命令 U

格式1:U[起始地址]

格式2:U[起始地址][结束地址|字节数]

功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。

格式2将指定范围的内存单元中的目标代码转换成汇编指令。

6)跟踪命令 T

格式:T[起始地址][正整数]

功能:从指定地址开始执行‘正整数’条指令,若缺省‘正整数’,表示执行一条指令,若两项都缺省,表示从当前CS:IP指示地址开始执行一条指令。

7)运行命令 G

格式:G[=起始地址][第一断点地址[第二断点地址……]]

功能:CPU从指定起始地址开始执行,依次在第一、第二等断点处中断。若缺省起始地址,则从当前CS:IP指示地址开始执行一条指令。最多可设置10个断点。

8)指定文件命令 N

格式:N<文件名或扩展名>

功能:指定即将调入内存或从内存写入磁盘的文件名。该命令应该用在L命令和W命令之前。

9)装入命令 L

格式1:L[起始地址][盘符号][扇区号][扇区数]

格式2:L[起始地址]

功能:格式1根据盘符号,将指定扇区的内容装入到指定起始地址的存储区中。

格式2将N命令指出的文件装入到指定起始地址的存储区中,若省略起始地址,则装入到CS:100处或按原来文件定位约定装入到相应位置。

10)退出命令 Q

格式:Q

功能:退出DEBUG,返回到操作系统。

以上介绍的是DEBUG常用命令,其他命令请参考有关书籍。

汇编单机实验项目

实验一 DEBUG上机实验(2课时)

1、实验目的

1)熟悉DEBUG有关命令的使用方法。

2)利用DEBUG掌握有关指令的功能。

3)利用DEBUG运行简单的程序段。

2、实验内容

1)进入和退出DEBUG程序。

2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下。

3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、

带借位减、堆栈操作指令、串操作指令的功能。

3、实验准备

1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。

2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。

3)阅读将AX左移9位的程序段。

4、实验步骤

1)在DOS提示符下,进入DEBUG程序。

2)在DOS目录下启动DEBUG。

3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。

5、实验报告要求

1)如何启动和退出DEBUG程序。

2)整理每个DEBUG命令使用的方法,实际示例及执行结果(如用Debug验证PUSH、POP、MOV等指令)

3)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?



实验二 汇编语言上机调试实验(2课时)

1、实验目的

1)掌握利用DEBUG修改参数、检查结果的方法。

2)掌握汇编语言源程序的编辑、汇编、连接及调试过程。

2、实验内容

1)编写一个程序,显示AL寄存器中的两位十六进制数

2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

3、实验准备

1)编写实验内容要求的两个程序。

2)写出调试以上程序,即修改程序参数,检查结果的操作方法。

3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。

4、实验步骤

1)用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。

2)对其进行汇编及连接,产生.EXE文件。

3)对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改AL内容的方法。

(2)对DSPKEY.EXE键入不同的字符,分别进行调试。

(3)在MS-DOS下运行这两个.EXE文件。

5、实验报告要求

1)画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

2)说明本实验是如何利用DEBUG进行调试的。

6、参考程序清单

1)显示AL中两位十六进制数程序:

;DISPHEX.ASM

CODE SEGMENT

ASSUME CS:CODE

START: MOV AL,3EH

MOV BL,AL

MOV DL,AL

MOV CL,4

SHR DL,CL

CMP DL,9

JBE NEXT1

ADD DL,7

NEXT1: ADD DL,30H

MOV AH,2

INT 21H ;显示高位ASCII码

MOV DL,BL

AND DL,0FH

CMP DL,9

JBE NEXT2

ADD DL,7

NEXT2: ADD DL,30H

MOV AH,2

INT 21H ;显示低位ASCII码

MOV AH,4CH

INT 21H

CODE ENDS ;返回DOS

END START

2)显示键入字符程序

;DISPKEY.ASM

CODE SEGEMENT

ASSU

ME CS:CODE

START: MOV AH,1

INT 21H ;等待键入字符,送AL

CMP AL,0DH ;是否是回车符?

JZ DONE ;是则转DONE退出程序

CMP AL,’0’

JB NEXT

CMP AL,’9’

JA CHARUP

MOV DL,AL

MOV AH,2

INT 21H

JMP START

CHARUP: CMP AL,41H

JB NEXT

CMP AL,5AH

JA CHRDN

DISPC: MOV DL,’C’

MOV AH,2

INT 21H

NEXT: JMP START

CHRDN: CMP AL,61H

JB NEXT

CMP AL,7AH

JA NEXT

JMP DISPC

DONE: MOV AH,4CH

INT 21H

CODE: ENDS

END START

实验三 数据处理程序实验(4课时)

1、实验目的

1)熟悉数据操作指令的功能与应用。

2)掌握数据操作指令的寻址方式及使用方法,编写常用的数据处理程序。

3)基本掌握汇编语言的汇编、连接、运行的全过程

2、实验内容

1)练习用汇编语言实现对数据块的求和、求最大值(或最小值)、排序等程序设计方法

2)将题中BCDBUF数据区的带符号数按从小到大顺序排序,并将排序后的数据输出

3、实验准备

1)熟悉数据处理的方法和数据处理程序的设计。

2)认真预习有关数据操作的指令极其寻址方式的特点,能够正确使用数据操作指令,并准备好数据。



联机软件使用简介

DVCC系列实验仪为启东计算机厂深入研究教学实验的需求,结合本厂多年单片机仿真器的强大技术实力,潜心开发研制生产的新一代实验仪系列产品。

DVCC实验系统为本厂的实验仪的最新版本配套软件,运行于中文Win9x/NT下的纯32位集成环境,集编辑/调试/实验指南于一体。

调试部分调试软件方便实用,各种系统寄存器、标志位、RAM区方便直观地的显示修改。实验指南部分包含实验目的、实验内容、实验原理图、实验位置图、以及实验中用到的部分芯片资料。

首先双击“dv86h”图标,进入实验系统对话界面,下面分层次介绍该软件的功能和使用方法。





§1.4.1 文件编辑部分

1、文件菜单

新建 创建一个新的文件。

打开 打开一个已存在的文件文件。

关闭 关闭一个打开的文件。

保存 将一个已打开的文件用原文件名存 盘。

另存为 以指定的文件名存盘一个已打开的文件。

打印 打印一个文件。

打印设置 选择打印机及器配置。

历史文件 在历史文件中可保留4个最近打开过的文 件用于再次打开。

退出 退出DVCC实验系统



2、编辑菜单




撤消 使用该命令恢复文档中最后一 次所做的修改。

重做 使用该命令重复文档中最后一 次所做的修改。

剪切 删除选定的文字并放置在剪贴 板上。只有在选定文字后,这一 命令才是有效的。

复制 将选定的文字复制到剪贴板上,只有在选定文字后,这一命令才是有效的。

粘贴 使用该命令可以在插入点位置插入剪贴板内容,或者用剪贴板上的内容替换选 定内容(如果已经选定)。

全选 选择当前文件的所有内容。

3、查找菜单

查找 使用该命令可以在当前活动的文档中查 找文字和字符。

查找下一个 使用该命令可以继续查找并选定在“查找 字串”框中指定的文本。

替换 使用该命令可以将指定的字符串换成另 一串字符串替

定位 使用该命令来将插入点移动到文档中指定行位置。

4、显示菜单

编辑工具栏 显示或关闭编辑工具栏

调试工具栏 显示或关闭调试工具栏

实验指南工具栏 显示或关闭实验指南工具栏

显示工具栏文字 显示不显示工具栏文字

状态栏 显示或关闭状态栏



5、编译菜单

编译文件 编译当前文件

编译连接文件 编译连接当前文件,生成exe文件

编译连接传送 编译连接当前文件,并传送exe文件 到下位实验系统中,并且开始调试

注意:本系统使用 MASM/Link 生成的最终EXE文件。



6、实验指南菜单

实验项目选择 选择所要查询的实验项目

实验目的 对应实验的目的

实验内容 对应实验的内容

实验原理图 对应实验的原理图

实验位置图 对应实验的位置图

实验源程序 对应实验的源程序

芯片查询 实验用到的部分芯片查询

另外参考:实验指南工具栏



7、编辑窗口的快捷菜单使用鼠标右键来激活

关闭 关闭当前窗口

剪切 删除选定的文字并放置在剪贴板上。只有在选定文字 后,这一命令才是有效的。

复制 将选定的文字复制到剪贴板上,只有在选定文字后,这 一命令才是有效的。

粘贴 使用该命令可以在插入点位置插入剪贴板内容,或 者用剪贴板上的内容替换选定内容(如果已经选定)。 全选 选择当前文件的所有内容。

清除

剪贴板 清除剪贴板的内容



§1.4.2 调试部分

1、动态调试菜单

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

单步执行(TaceOut) 单步执行一条程序行,遇子程 序调用则跳过子程序。

连续运行 连续运行程序

执行到光标处 执行到光标所在行

I/O端口操作 进行I/O端口操作

联接DVCC系统同下位实验系统握手

传送(.exe)文件 传送.exe文件到下位实验系 统中

数据块移动 在内存区域中进行数据块移动

数据块放置 在内存区域中进行放置数据块

设置新反汇编地址 设置反汇编窗口的新地址

存储器成组显示 设置数据窗口的新地址

相关调试参见 反汇编窗口 数据窗口



§1.4.3 窗口部分

1、编辑窗口

2、反汇编窗口

3、数据窗口

4、寄存器窗口 标志位可用鼠标双击对应的值来改变值



§1.4.4 工具栏

1、编辑工具栏



新建一个文件

打开一个文件

保存当前文件

剪切选定的文字到剪贴板(在选定文字后,按钮才有效)

复制选定的文字到剪贴板(在选定文字后,按钮才有效)

粘贴剪贴板文字到插入点,或者替换选定内容(如果已经选定)



2、调试工具栏



联接 联接系统

编译 编译当前文件(当前激活窗口为编辑窗口)

连接 连接当前文件(当前激活窗口为编辑窗口)

运行 连续运行程序(已经成功联接系统)

单步 单步运行(子程序追踪)(已经成功联接系统)

单步 单步运行(子程序不追踪)(已经成功联接系统)

端口 端口操作(已经成功联接系统)

3、实验指南工具栏



目的 实验指南目的

内容 实验指南内容

原理 实验指南原理

位置 实验指南位置图

程序 实验源程序

"0809 A/D 转换实验" 是实验项目选择



§1.4.5 系统热键定义

1、主窗口的右上角的∧(Roll Up)∨(Roll Down)可将窗口缩成一个窗口条/复员正常,⊙为铆钉可将窗口铆在桌面最前面。

2、菜单可用ALT/ALT+字母来激活,用热键或字母来选择所有输入地址数据值为16进制



DVCC-8086输入/输出接口地址的分配情况如表1所示。

表1输入/输出接口地址分配表

电路名称

口地址



提供给用户的扩展口



000H~01FH

060H~07FH

080H~08FH



8253A定时/计数器接口

通道0计数器048H

通道1计数器049H

通道2计数器04AH

通道3计数器04BH

8259A中断控制器

接口

命令寄存器 020H

状态寄存器 021H



8279A键盘显示口



数据口 0DEH

命令状态口 0DFH

8251A串行接口

数据口 050H

命令口 051H





实验四 8253A定时/计数器实验

一、实验目的

1、学习8253A可编程定时/计数器与8088CPU的接口方法。

2、了解8253A的工作方式; 掌握8253A在各种方式下的编程方法。

二、预备知识

1、8253A内部结构

8253A定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的16 位减法计数器,分别称为计数器0、计数器1、计数器2。每个计数器计数频率为0~2MHZ, 其内部结构如图1所示。由于其内部数据总线缓冲器为双向三态,故可直接接在系统数据总线上,通过CPU写入计数初值,也可由CPU读出计数当前值;其工作方式通过控制字确定;图中的读写控制逻辑,当选中该芯片时, 根据读写命令及送来的地址信息控制整个芯片工作;图中的控制字寄存器用于接收数据总线缓冲器的信息:当写入控制字时,控制计数器的工作方式,当写入数据时则装入计数初值,控制寄存器为8位, 只写不能读。



图1 8253A 内部结构图 图2 计数器内部结构图

2、计数器内部结构

如图2所示,每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进行重复计数。图中每个计数器有一个时钟输入端CLK作为计数脉冲源, 计数方式可以是二进制,计数范围1~10000H,也可以是十进制,计数范围1~65536。门控端GATE用于控制计数开始和停止。输出OUT端当计数器计数值减到零时,该端输出标志信号 。

3、8253A端口地址选择见表2。















表2 端口地址表



4、8253A功能

8253 A 既可作定时器又可作计数器

1)计数:计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK 脉冲对计数值进行减1 计数,每来一个脉冲减1,当计数值减至0时,由OUT 端输出一个标志信号。

2)定时:计数器装入初值后,当GATE为高电平时,由CLK 脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。

除上述典型应用外,8253A还可作频率发生器、分频器、实时钟、单脉冲发生器等。

5、8253A控制字

8253A控制字如图3所示。



图2 8253A控制字

说明 :

1) 8253 A每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。

2) 8253 A编程时先写控制字,再写时间常数。

6、8253A工作方式

1) 方式0:计数结束产生中断方式

当写入控制字后,OUT变为低电平,当写入初值后立即开

始计数,当计数结束时,变成高电平。

2) 方式1:可编程单次脉冲方式

当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。

3) 方式2:频率发生器方式

当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强逼OUT变高,当GATE再变高时,便启动一次新的计数周期。

4) 方式3:方波发生器

当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。

5) 方式4:软件触发选通

当写入控制字后,OUT输出为高;装入初值且GATE为高时开始计数,当计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。

6) 方式5:硬件触发选通

在GATE上升沿启动计数器,OUT一直保持高电平;计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。

三、实验内容

本实验原理图如图4所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表2所示。8253A的片选地址为48H~ 4FH。 因此, 本实验仪中的

8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地(“0”电平)或甩空(“1”电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。

图4 实验原理图

四、实验线路连接

1、8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。

2、8253A的GATE0接+5V。

五、程序流程图

见图5。

六、实验参考程序

见附录一。

七、 实验步骤

1、按图4连好实验线路

2、 运行实验程序

在系统显示“DVCC- 86H”状态下,按任意键,系统显示命令提示符“-”。 图5 程序流程图

按GO键,系统显示“1000 XX”

输入F000 : B290

再按EXEC键,显示“8253-1”

用示波器测量8253A的OUT0输出插孔,应有频率为1KHZ的方波输出。幅值0~5V。

实验五 8255A可编程并行口实验(2课时)

一、实验目的

1、掌握并行接口芯片8255A和微机接口的连接方法。

2、掌握并行接口芯片8255A的工作方式及其编程方法。

二、预备知识

1、8255A结构

8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图6是8255A的逻辑框图,内部有3个8位I/O端口:A口、B口、C口;也可以分为各有12 位的两组:A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位;A 组控制和B组控制用于实现方式选择操作;读写控

制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A 数据总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。

2、8255A端口地址见表3。





图6 8255逻辑框图

3、8255A工作方式

8255A芯片有三种工作方式: 方式0、方式1、方式2。

它通过对控制寄存器写入不同的控制字来决定其三种不

同的工作方式。

方式0 : 基本输入/输出



图7(a) 方式0引脚功能



如图7(a)所示。 该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出, C 口分成高4 位(PC7~PC4)和低4位(PC3~PC0)两组,也有控制字决定其输入或输出。 需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。

方式1 : 选通输入/输出



图7(b)方式1输入 图7(c)方式1输出

如图7(b)、(c)所示。该方式又叫单向输入输出方式,它分为A、B两组,A组由数据口A和控制口C 的高4位组成,B组由数据口B和控制口C的低4位组成。数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。C口的相应位用于寄存数据传送中所需的状态信号和控制信息。

方式2 :双向输入输出

双向输入输出如图7(D)所示,本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3~PC7)作为A口的控制位。





图7(D) 方式2双向输入输出

4、8255A控制字

1) 方式选择控制字

方式选择控制字如图8所示。







图8 方式选择控制字

(2) PC口按位置/复位控制字

位置/复位控制字如图9所示。





图9 位置/复位控制字

三、实验内容

1、实验原理

如实验原理图10所示,PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1~K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。





图10 实验原理图



2、实验线路连接

8255A芯片PC0~PC7插孔依次接K1~ K8。

8255A芯片PB0~PB7插孔依次接L1 ~L8。

8255A的CS插孔接译码输出070H-07FH插孔。



四、程序流程图

见图11。



五、实验参考程序

见附录二。



六、实验步骤 图11 程序流程图

1、按图10连好线路。

2、运行实验程序。

在系统显示“DVCC-86H”状态下,按任意键,显示器显示“-”。

按GO键,显示 “1000 XX”

输入 F000 : B160

再按EXEC键,在DVCC-8086显示上显示器“8255-1”,同时拨动K1~K8,L1~L8会跟

着亮灭。



附录一

8253A定时/计数器实验程序

CODE SEGMENT

ASSUME CS:CODE

TCONTRO EQU 004BH

TCON2 EQU 004AH

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1 EQU 0500H

START: JMP TCONT

TCONT: CALL FORMAT

CALL LEDDISP

MOV DX,TCONTRO

MOV AL,0B6H

OUT DX,AL

MOV DX,TCON2

MOV AL,00

OUT DX,AL

MOV AL,10H

OUT DX,AL

HLT

LEDDISP:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+DATA1]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],4006H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D4FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7F5BH

RET

CODE ENDS

END START



附录二

8255A可编程并行口实验(一)程序

CODE SEGMENT

ASSUME CS:CODE

IOCONPT EQU 0073H

IOCPT EQU 0072H

IOBPT EQU 0071H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1 EQU 0500H

START: JMP IOLED

IOLED: CALL FORMAT

CALL LEDDISP

MOV AL,89H

MOV DX,IOCONPT

OUT DX,AL

NOP

NOP

NOP

IOLED1: MOV DX,IOCPT

IN AL,DX

MOV DX,IOBPT

OUT DX,AL

MOV CX,0FFFFH

DELAY: LOOP DELAY

JMP IOLED1



LEDDISP:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+DATA1]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],4006H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D6DH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7F5BH

RET

CODE ENDS

END START

相关文档
最新文档