8086实验指导书-2016(定稿20161009) - 图文

更新时间:2024-01-20 14:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

PROTEUS-8086实验指导书

PROTEUS-8086

实 验 指 导 书

编者 段绪红、李德智、李崇维

电气工程专业实验中心

2016年9月

PROTEUS-8086实验指导书

目 录

PROTEUS的操作 ............................................................................................................................... 1

PROTEUS简介 ........................................................................................................................ 1 实验原理 .................................................................................................................................. 1 新建工程 .................................................................................................................................. 2 编译工程 .................................................................................................................................. 4 原理图绘制 .............................................................................................................................. 6 仿真调试技巧 ........................................................................................................................ 13 8086软件部分实验 ....................................................................................................................... 18

实验一 系统认识实验 ........................................................................................................... 18 实验二 循环程序设计 ........................................................................................................... 20 实验三 分支程序设计 ........................................................................................................... 23 实验四 数码转换实验 ........................................................................................................... 26 实验五 子程序设计............................................................................................................... 30 8086硬件部分实验 ....................................................................................................................... 33

实验一 IO口读写实验 (245、373) ..................................................................................... 33 实验二 8255并行I/O扩展实验 .......................................................................................... 36 实验三 可编程定时/计数器8253实验 ................................................................................ 39 实验四 七段数码管显示实验 ............................................................................................... 42 附录:DEBUG调试程序的使用及其上机过程 .............................................................................. 45

PROTEUS-8086实验指导书

PROTEUS的操作

PROTEUS简介

PROTEUS是本实验箱进行8086实验的必备软件,是电路设计、电路仿真与调试、程序编译的环境。PROTEUS教学实验系统(8086/8051)主要由教学实验箱、实验指导书及其配套光盘组成。通过USB连接线把电脑与实验箱相连接,能完成针对8086的各种交互式仿真实验;通过WWISP下载器,可以对8051芯片进行ISP编程,进行单片机实验课程。

本教学实验箱摒弃以往的设计思想,采用模块化设计,总线器件都可以挂在总线上,只须要接上CS片选就可以实验,减少了实验过程中的接线问题,同时也可极大地提高学生的实验速度。结合PROTEUS的电路仿真功能,能够大大提高学生实验的动手设计能力。

实验原理

大部分实验的开展,我们都采用在PROTEUS平台下的交互式仿真,使用硬件平台与电脑软件仿真同时进行的方法,实验的开展流程如下:

PROTEUS软件实验 教学实验系统硬件实验 参考硬件连接表,选出实原 理 图 绘 制 验板,做好硬件连接

程序编写、编译 程序编写、编译

通过USB线把电脑和实验仿真调试 箱连接,仿真调试

得到正确软件仿真效果 得到正确硬件仿真效果

在进行硬件实验中,有几点需要注意:

1、尽量保持线束的整齐,对于控制线少交叉缠绕。

2、拔线时请逐根拔除,切忌强行硬拔整股连线(易造成整股损坏)。 3、液晶类实验涉及到液晶对比度的调节,请通过邻近电位器来调整。

第1页

PROTEUS-8086实验指导书

新建工程

首先,打开PROTEUS软件,打开菜单“File->New Project”。

可以在Name下修改工程名,在Path下修改工程保存的路径,建议在E盘或者F盘上先新建一个文件夹存放自己的工程及代码,名称可以是自己姓名拼音或学号。点击Next,选择原理图的样式大小。

点击Next,选择PCB模板,如不需要可选择默认选项。

第2页

PROTEUS-8086实验指导书

点击Next,选择固件工程,选择好需要的控制器Controller:纯软件仿真选8086,软硬件仿真选USB8086,选择编译器Compiler:本课实验全部选择汇编语言MASM32。

点击Next,然后点击Finish,汇编程序模板生成。

第3页

PROTEUS-8086实验指导书

编译工程

点击菜单栏System->Compilers Configurations,在对话框中,点击Check All 能找到如下图的编译器则安装正确,点击OK关闭对话框。

点击菜单栏Build->Build Project,如果编译成功,如下图:

接下来我们就可以添加自己的代码了,不过还有个需要注意的地方: 点击菜单栏Build->Project Settings,如果需要工程文件和源代码文件在同一路径,则需要取消Embed Files的复选勾,否则源代码及编译结果会自动放到PROTEUS安装路径。

第4页

PROTEUS-8086实验指导书

添加源代码,编译工程如下图,完成。

或者添加现成的汇编代码文件。

第5页

PROTEUS-8086实验指导书

原理图绘制

以8255并行接口扩展实验电路为例。

电路元器件清单:

8086 RESPACK-8 74LS373 DIPSW_8 74HC138 LED 8255 RES

(1)从库中选取元器件

如图所示,按下对象选择器左上方的“P”按钮,你也可以通过快捷键来启动元件 库浏览器对话框(默 认的快捷键是 P)。

第6页

PROTEUS-8086实验指导书

在“设备选择”窗口,“关键字(d)”中输入所需要的元器件名。可以试着将“8255”输入到元件库浏览器的关键字栏中,浏览器将会根据您输入的关键字提供元件列表供您选择,在元件列表中的“8255”元件上双击鼠标左键将把需要的元件放到对象 选择器中,如下图所示:

以此类推,将所需元器件全部选好。

(2)电路图布局

◎ 从对象选取器中选中 74LS373。

第7页

PROTEUS-8086实验指导书

◎ 在编辑窗口中单击鼠标左键进入放置模式,将出现 74LS373 元件的虚影。

◎ 移动鼠标到放置位置,在编辑窗口再次点击左键,器件将放置到编辑窗口的对应位置上。

通常我们需要在放置元件后移动元件或一整块电路。先选择要移动的对象(元件或电路块),在选择的对象上按住左键,移动鼠标到新的位置,然后释放鼠标左键,将对象放置到新位置。 ◎ 在放置好存储芯片之后,下一步就是放置其他外围部件并调整好方向。如图所示:

第8页

PROTEUS-8086实验指导书

(3)电路图布线

连线过程中,光标样式会随不同动作而变化。起始点是绿色铅笔,过程是白色铅笔,结束点是绿色铅笔。

◎ 将鼠标放置在存储芯片的 SCK 引脚上时,光标会自动变成绿色。

◎ 点击鼠标左键然后向左移动鼠标到 100 欧姆电阻的管脚处,导线将会跟随移动,在移动的过程中光标 /画线笔将变成白色。

◎ 再次点击鼠标左键以完成画线。

在导线上进行连线的方法基本是相同的,但仍然有几个地方需要注意:

第9页

PROTEUS-8086实验指导书

您不可以从导线的任意位置开始连线,而只能从芯片的管脚开始连线,连接到另一根导线。 当您连接到其它已存在导线时,系统会自动放置结点,然后结束连线操作。

在连线过程中,如果您需要连接两根导线,操作步骤如下:首先需要在其中一根导线上放置 结点, 再从这个结点上连线到另一根导线。

(4)元器件标签和标号 我们知道,所有的放置到原理图中的元器件都有一个唯一的参考标号和元件值。元件的参考标号是把元件放置到原理图上时系统自动分配的,如果需要,也可以手动修改。对于其它的标签,如元件值标签,你可以更改元件值,更改摆放的位置,选择显示或隐藏等操作,下面演示操作的过程:

当我们绘制一系列走向相同的连线时,Proteus提供了一种非常有用的连续放置导线的方法,可以在绘制新的连线 时自动重复上一次的操作,我们称之为“双击复制”技巧。 首先通过旋转和放置一些默认类型的终端在原理图右侧,如下图所示:

注意:这种方法画出的导线与前一次画出的必须是一模一样的,也即是方向相同,长度相等,而且必须连续操作。

(5)属性赋值工具的使用

第10页

PROTEUS-8086实验指导书

属性赋值工具可以用来快速的设置元器件值,引脚标号等。如下图,需要给74LS373的Q0-Q7脚添加标号AB0-AB7。

具体操作如下:

◎ 打开属性赋值工具,快捷键是A。

◎ 属性赋值工具界面如下。在字符串窗口输入NET=AB#。点击确定。

第11页

PROTEUS-8086实验指导书

依次在74LS373的Q0-Q7脚,单击鼠标左键,添加标号AB0-AB7。

(6)完成原理图布线

第12页

PROTEUS-8086实验指导书

仿真调试技巧

仿真前原理图的设置:右击原理图中的8086(纯软件仿真,若是要硬件仿真就是USB8086)仿真器,选择Edit Properties如下图设置。

注意时钟频率设置在200kHz以内,内存大小不能为0且足够用于代码和数据存储。

Proteus中提供了很多调试工具和手段,这些工具的菜单都放在Proteus的Debug(调试)菜单下,如下图所示:

第13页

PROTEUS-8086实验指导书

第一栏的菜单是仿真开始、暂停与停止的控制菜单,与Proteus ISIS左下角的仿真控制按钮的功能是一样的。

第二栏是执行菜单,可以执行一定的时间后暂停,也可以加断点执行和不加断点执行。 第三栏是代码调试菜单,有单步、连续单步,跳进/跳出函数,跳到光标处等功能。

第四栏是诊断和远程调试监控,但8086没有远程监控功能。诊断可以设置对总线读写,指令执行,中断事件和时序等进行跟踪。有四个级别,分别是取消、警告、跟踪和调试。级别的不同,决定事件记录的不同。例如,如果要对中断的整个过程进行详细的分析,则可以选择跟踪或者调试级别,ISIS将会对中断产生的过程,响应的过程进行完整的记录,有助于学生加深中断过程的理解。

第14页

PROTEUS-8086实验指导书

设置诊断选项

最后一栏是8086的各种调试窗口,包括观察窗口,存储器窗口,寄存器窗口,源代码窗口和变量窗口。其中观察窗口可以添加变量进行观察,并且可以设置条件断点。这在调试程序的时候非常有用。

观察窗口

第15页

PROTEUS-8086实验指导书

设置条件断点

变量窗口会自动把全局变量添加进来,并实时显示变量值,但不能设置条件断点。

变量窗口

寄存器窗口实时显示8086各个寄存器的值。

寄存器窗口

存储器窗口实时显示存储器的内容。

第16页

PROTEUS-8086实验指导书

存储器窗口

源代码调试窗口是最主要的调试窗口,在这里可以设置断点,控制程序的运行,如果是C程序,还可以进行反汇编。

以上几个工具配合起来,比起任何的IDE都要实用的多,可以大大提高学生的学习效率。

第17页

PROTEUS-8086实验指导书

8086软件部分实验

实验一 系统认识实验

一、 实验要求

利用PROTEUS平台,建立8086 的多位十六进制加法运算的例子。

二、 实验目的

1、熟悉实验系统的编程和使用。

2、掌握使用加法类运算指令编程及调试方法。 3、掌握加法类指令对状态标志位的影响。

三、 实验说明

由于本实验是三个十六位二制数相加运算,N4为存放结果,其中N1为1111H、N2为2222H、N3 为3333H 所以结果应该为6666H。

四、 实验程序流程图

结束 N1+N2+N3 N1+N2 开始 五、 实验步骤

1、Proteus仿真

a.在Proteus中新建工程“多位十六进制加法运算.pdsprj”,添加自己编写的汇

编代码,编译直至成功;

b.单步运行,打开调试窗口进行调试。

参考代码:

; N4=N1+N2+N3 =1111H+2222H+3333H=6666H

第18页

PROTEUS-8086实验指导书

CODE SEGMENT

ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX MOV SI,OFFSET NUM1 MOV AX,0 ADD AX,[SI+0] ADD AX,[SI+2] ADD AX,[SI+4] MOV [SI+6],AX JMP $

CODE ENDS DATA SEGMENT NUM1 DW 1111H ;N1 NUM2 DW 2222H ;N2 NUM3 DW 3333H ;N3 NUM4 DW 0000H ;N4 DATA ENDS

END BEG

2、调试、验证

a.设置断点、单步运行程序,一步一步调试;

b.观察每一步运行时,8086内部寄存器的数值变化; c.检查验证结果。

六、 实验结果和体会

七、 建议

第19页

PROTEUS-8086实验指导书

实验二 循环程序设计

一、 实验要求

利用PROTEUS平台,建立8086 的循环程序的例子。

二、 实验目的

1、熟悉实验系统的编程和使用。

2、掌握使用LOOP判断转移指令实验循环的方法。

三、 实验说明

1、编制程序,使S=l+2×3+3×4+4×5+...+N(N+1),直到N(N+1)项大于200为止。

2、求某数据区内负数的个数。设数据区的第一单元存放区内数据的个数,从第二单元开始存 放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内 的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包 含负数的个数。

四、 实验程序流程图

N BL ?AL BL+1?BL 1?DX 2?BL AL*BL?AX DX+AX?DX Y AX>200 Y 结束 图2-1 实验1流程图

第20页

PROTEUS-8086实验指导书

开始 数据区首址?DI 数据个数?CX CH、BL置0 DI增1 N

N 数据首位=1? Y BL+1?BL DI增1 CX=0? Y 存结果 结束 图2-2 实验2流程图

五、 实验步骤

1、Proteus仿真

a.在Proteus中新建两个工程“循环程序.pdsprj”,分别添加自己编写的汇编

代码,编译直至成功;

b.单步运行,打开调试窗口进行调试。 2、调试、验证

第21页

PROTEUS-8086实验指导书

a.设置断点、单步运行程序,一步一步调试;

b.观察每一步运行时,8086内部寄存器和变量的数值变化; c.检查验证结果。

六、实验结果和体会

七、 思考题

修改程序,使其能分别求出数据区中正数、零和负数的个数。

第22页

PROTEUS-8086实验指导书

实验三 分支程序设计

一、 实验要求

利用PROTEUS平台,建立8086 的分支程序的例子,实现数据块搬移。

二、 实验目的

1、熟悉实验系统的编程和使用。

2、掌握使用转移类指令编程及调试方法。 3、掌握各种标志位的影响。

三、 实验说明

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

FFFFH 00H 00H 00H 源数据块 (目的数据块) 源 数 据 块 目 的 数据 目的数据块 (或源数据块) FFFFH 目 的 数据 块 源 数 据 块 FFFFH

(a) (b) (c)

图3-1源与目的数据块的三种结构

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

可以得出如下结论。当源数据块首址>目的块首址时,从数据块首地址开始传送数据。当源数据块首址<目的块首址时,从数据块末地址开始传送数据。

第23页

PROTEUS-8086实验指导书

四、 实验程序流程图

开始 SI?源数据块首址 DI?目的数据块首址 CX?搬家字节数

N CX=0? Y < SI?SI+CX-1 DI?DI+CX-1 SI>DI? > [DI]?[SI] [DI]?[SI] SI? SI-1 DI? DI-1 CX?CX-1 SI?SI+1 DI?DI+1 CX? CX-1 N CX=0? Y 结束 图3-2 分支程序流程图

五、 实验步骤

1、Proteus仿真

a.在Proteus中新建工程“分支程序.pdsprj”,添加自己编写的汇编代码,编

译直至成功;

b.单步运行,打开调试窗口进行调试。 2、调试、验证

a.设置断点、单步运行程序,一步一步调试;

b.观察每一步运行时,8086内部寄存器和变量的数值变化;

第24页

PROTEUS-8086实验指导书

c. 改变源地址中的内容、长度,试试移动的结果; d. 检查、验证结果。

六、 实验结果和体会

七、 思考题

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

第25页

PROTEUS-8086实验指导书

实验四 数码转换实验

一、 实验要求

利用PROTEUS平台,实现8086 的二进制、十进制和BCD码互相转换。

二、 实验目的

1、熟悉实验系统的编程和使用。

2、掌握简单的数值转换算法。 3、基本了解数值各种表达方法。

三、 实验说明

计算机与外设间的数码转换关系如图4-l所示,数码对应关系如表4-1所示。

ASCII码 ASCII码 键 盘 CRT显示 ASCII码 主 ASCII码 光电机 打印机 BCD码 段 码 拔码开关 多段显示 机 二进制 二进制

数据开关 位显示 图4-1数码转换关系

表4-l数码对应关系

十六进制数 0 1 2 3 4 5 6

BCD码 0000 0001 0010 0011 0100 0101 0110 二进制机器码 0000 0001 0010 0011 0100 0101 0110 ASCII码 30H 31H 32H 33H 34H 35H 36H 第26页

七段码 共阳 共阴 40H 3FH 79H 06H 24H 5BH 30H 4FH 19H 66H 12H 6DH 02H 7DH PROTEUS-8086实验指导书

7 8 9 A B C D E F 0111 1000 1001 0111 1000 1001 1010 1011 1100 1101 1110 1111 37H 38H 39H 41H 42H 43H 44H 45H 46H 78H 00H 18H 08H 03H 46H 21H 06H 0EH 07H 7FH 67H 77H 7CH 39H 5EH 79H 71H 四、 实验程序流程图

加下一位ASCII码减30H

N 转换完否? Y 存入结果单元并停机 乘10 取第一位ASCII码 减去30H n-1?cx 定义源、目标地址定义转换位数n

图4-2 十进制数转换为二进制数流程图

第27页

PROTEUS-8086实验指导书

N CX?循环计数初值 DI?3500H BL?错误标志“FF” AL?ASCII码 Y AL≥3AH? N AL<30H? N 取入ASCII码低四位 BL?AL Y AL?BL 存入结果,修改地址 CX-1=0 Y 结果 图4-3 十进制数转换为非压缩型的BCD码流程图

五、 实验步骤

1、Proteus仿真

a.在Proteus中新建两个工程“XX进制转XX码.pdsprj”,分别添加自己编写

的汇编代码,编译直至成功;

b.设置断点、运行程序,打开调试窗口进行调试。 2、调试、验证

a.设置断点、单步运行程序;

b.观察程序运行到断点时,8086内部寄存器和变量的数值变化; c.验证实验结果。

第28页

PROTEUS-8086实验指导书

六、 实验结果和体会

七、 建议

第29页

PROTEUS-8086实验指导书

实验五 子程序设计

一、实验目的

1.学习子程序的定义和调用方法。

2.掌握子程序、子程序的嵌套、递归子程序的结构。 3.掌握子程序的程序设计、编制及调试方法。

二、实验内容

1.求无符号字节序列中的最大值最小值

设有一字节型序列,其存贮首址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值与最小值。程序流程图如图5-l所示。

开始 数据首址?SI

调用求最大最小值子程序 结 束

图5-1 主程序流程图

序列的字节个数

第30页

PROTEUS-8086实验指导书

Y (CX)=0? N SI,CX,BX入栈 (SI)?BH;BH?BL (SI)+1?SI;(SI)?AL (AL)<(BH) Y (AL)>(BL) Y (CX)-1?CX N AL?BH N AL?BL N (CX)=0? Y RET 图5-2 子程序流程图

2.求N!

利用子程序的嵌套和子程序的递归调用,实现N!的运算。 根据阶乘运算,我们有:

N!=N*(N-1)!=N*(N一l )*(n-2)!=?? 0!=1

由此我们可以想到,欲求N的阶乘,可以用一递归子程序来实现,每次递归调用时应将调用参数减1,即求(N-1)的阶乘,并且当调用参数为0时应停止递归调用,且有0!=1的中间结果。最后将每次调用的参数相乘得到最后结果;因每次递归调用时参数都送入栈中,当N减为0而程序开始返回时,应按嵌套的方式逐层返回,并逐层取出相应的调用参数。

第31页

PROTEUS-8086实验指导书

假定,N放在3000H~3001H单元中,N!的结果放在3010H起始的单元中,N在00H~0FH间取数,且(3000H)中放低位。

三、实验步骤

1、Proteus仿真

a.在Proteus中新建两个工程“子程序设计X.pdsprj”,添加自己编写的汇编代 码,编译直至成功;

b.设置断点、运行程序,打开调试窗口进行调试。 2、调试、验证

a.设置断点、单步运行程序;

b.观察程序运行到断点时,8086内存相应地址单元和寄存器的数值变化; c.验证实验结果。

四、实验结果和体会

五、思考题

1.若求有符号字节型序列中的最大值与最小值,如何修改程序?

2.子程序执行完毕后要返回调用程序,它返回调用程序的什么地方,是靠什么指令、什么方法返回的?

3.若N=3。请画出求N!程序运行时的堆栈变化情况,并加以解释。

第32页

PROTEUS-8086实验指导书

8086硬件部分实验

实验一 IO口读写实验 (245、373)

一、 实验要求

利用板上集成电路上的资源,扩展一片74HC245,用来读入开关状态;扩展一片74HC373,用来作来输出口,控制8个LED灯。

二、 实验目的

1、了解CPU常用的端口连接总线的方法。 2、掌握74HC245、74HC373进行数据读入与输出。

三、 实验电路及连线

1、Proteus实验电路

2、硬件验证实验

第33页

PROTEUS-8086实验指导书

硬件连接表(必须关闭电源再连线)

接线孔1 245 CS 373 CS B0--B7 Q0--Q7 接线孔2 D000H-DFFFH 8000H-8FFFH SW1--SW8 D1--D8 四、 实验说明

一般情况下,CPU的总线会挂有很多器件,如何使这些器件不造成冲突,这就要使用

一些总线隔离器件,例如 74HC245、74HC373。74HC245是三态总线收发器,本实验用它做输入,片选地址为D0000H-DFFFFH。就是用于读入开关值。74HC373是数据锁存芯片,通过它作数据的锁住输出。

五、 实验程序流程图

转移

结束 否 是 通过373输出 通过245读入 开始 六、 实验步骤

1、Proteus仿真

a.在Proteus中新建工程“245输入373输出SH.pdsprj”注意控制器选择 “USB8086”,绘制实验电路图;

b.添加自己编写的汇编代码,编译直至成功; c.如不能正常工作,打开调试窗口进行调试。 2、实验板验证

a.通过USB线连接实验箱;

第34页

PROTEUS-8086实验指导书

b.按连接表连接电路;

c.运行PROTEUS仿真,检查验证结果。

七、 实验结果和体会

八、 建议

第35页

PROTEUS-8086实验指导书

实验二 8255并行I/O扩展实验

一、 实验要求

利用8255可编程并行口芯片,实现输入、输出实验,实验中用8255PA口作读取开关状态输入,8255PB口作控制发光二极管输出。

二、 实验目的

1、了解8255芯片结构及编程方法。

2、了解8255输入、输出实验方法。

三、 实验电路及连线

1、Proteus实验电路

2、硬件验证实验

第36页

PROTEUS-8086实验指导书

硬件连接表(必须关闭电源再连线)

接线孔1 8255 CS PB0--PB7 PA0--PA7 接线孔2 8000H-8FFFH D1--D8 SW1--SW8 四、 实验说明

1、8255A芯片简介:8255A可编程外围接口芯片是INTEL公司生产的通用并行接口芯片,

它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:

方式0:基本输入/ 输出方式 方式l:选通输入/ 输出方式 方式2:双向选通工作方式

2、使8255A端口A工作在方式0并作为输入口,读取SWl-SW8的开关量,PB口工作在方式0作为输出口。

五、 实验程序流程图

置PB口 读PA口 设置工作方式 开始 六、 实验步骤

1、Proteus仿真

a.在Proteus中新建工程“8255_SH.pdsprj”,绘制实验电路图; b.添加自己编写的汇编代码,编译直至成功; c.如不能正常工作,打开调试窗口进行调试。 2、实验板验证

a.通过USB线连接实验箱; b.按连接表连接电路;

c.运行PROTEUS仿真,检查验证结果。

第37页

PROTEUS-8086实验指导书

七、 实验结果和体会

八、 建议

第38页

PROTEUS-8086实验指导书

实验三 可编程定时/计数器8253实验

一、 实验要求

利用8086外接8253可编程定时/计数器,可以实现方波的产生。

二、 实验目的

1、学习8086与8253的连接方法。

2、学习8253的控制方法。

3、掌握8253定时器/计数器的工作方式和编程原理。

三、 实验电路及连线

1、Proteus实验电路

2、硬件验证实验

硬件连接表(必须关闭电源再连线) 接线孔1 8253 CS CLOCK_OUT

接线孔2 A000H-AFFFH CLOUK_IN 第39页

PROTEUS-8086实验指导书 分频1/4 GATE0 OUT0 CLK0 +5V 示波器(电压表) 四、 实验说明

8253芯片介绍

8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz, 用+5V单电源供电。 8253的功能用途:

⑴ 延时中断 ⑸ 实时时钟 ⑵ 可编程频率发生器 ⑹ 数字单稳 ⑶ 事件计数器 ⑺ 复杂的电机控制器 ⑷ 二进制倍频器 8253的六种工作方式:

⑴ 方式0:计数结束中断 ⑷ 方式3:方波频率发生器

⑵ 方式l:可编程频率发生 ⑸ 方式4:软件触发的选通信号 ⑶ 方式2:频率发生器 ⑹ 方式5:硬件触发的选通信号

五、 实验程序流程图

开始

设置工作方式

启动8253

结束 六、 实验步骤

1、Proteus仿真

a.在Proteus中新建工程“8253_SH.pdsprj”,绘制实验电路图; b.添加自己编写的汇编代码,编译直至成功; c.如不能正常工作,打开调试窗口进行调试。 2、实验板验证

a.通过USB线连接实验箱; b.按连接表连接电路;

第40页

PROTEUS-8086实验指导书

c.运行PROTEUS仿真,检查验证结果。

七、 实验结果和体会

八、 建议

第41页

PROTEUS-8086实验指导书

实验四 七段数码管显示实验

一、 实验要求

利用8255的IO控制8位七段数码管显示实验,实现显示。

二、 实验目的

1.了解数码管显示原理。 2.掌握读表程序的编写。

三、 实验电路及连线

1. Proteus实验电路

2、 硬件验证实验

硬件连接表(必须关闭电源再连线) 接线孔1 8255_CS LED_A--LED_DP COM_1--COM_8

接线孔2 8000H-8FFFH PA0--PA7 PB0--PB7 第42页

PROTEUS-8086实验指导书

四、 实验说明

1.主要知识点概述:

1)LED数码显示原理

七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。

LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阳极的字形码。

“0” “1” “2” “3” “4” “5” “6” “7” 0C0H 0F9H 0A4H 0B0H 99H 92H 82H F8H “8” “9” “A” “b” “C” “d” “E” “F” 80H 90H 88H 80H 0B6H 0B0H 86HH 8EH 2) 段码表格

由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所 需的要求了。这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

2.实验效果说明:

数码管循环显示0~9。

五、 实验程序流程图

显示样式3 显示样式2 显示样式1 开始 六、 实验步骤

第43页

PROTEUS-8086实验指导书

1、Proteus仿真

a.在Proteus中新建工程“8位数码管_SH.pdsprj”,绘制实验电路图; b.添加自己编写的汇编代码,编译直至成功; c.如不能正常工作,打开调试窗口进行调试。

汇编语言参考程序:

2、实验板验证

a.通过USB线连接实验箱; b.按连接表连接电路;

c.运行PROTEUS仿真,检查验证结果。

七、 实验结果和体会

八、 建议

第44页

PROTEUS-8086实验指导书

附录:DEBUG调试程序的使用及其上机过程

利用DEBUG调试程序,可以将一个可执行程序(如.EXE、.COM等)装入内存中,并接管对程序运行的控制权,通过采取如反汇编、断点运行、单步执行、寄存器内容修改等方法,对可执行程序进行跟踪、调试,以找出其中的设计错误,然后再对源程序进行相应修改,重新生成正确的可执行程序。

(1)准备被调试程序:

假定所有有关文件均在当前路径C:\\DUAN>下,按照实验一的步骤生成一个被调试的可执行程序(如TEST.EXE),参考程序如下:

DATA SEGMENT ;定义数据段

STR DB ‘HelloWorld’,’$’ ;定义提示信息 DATA ENDS ;定义代码段

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA ;装入数据段的首地址

MOV DS,AX

MOV DX,OFFSET STR ;取STR的偏转地址送入DX MOV AH,09H

INT 21H

MOV AH,4CH

;返回DOS

INT 21H CODE ENDS END START

(2)进入DEBUG环境:(其中斜体部分由键盘输入。)

C:\\ DUAN>DEBUG TEST.EXE↙ -

其中,短线‘-’作为DEBUG环境的操作提示符,在此提示符下,可以输入各种DEBUG

命令,对可执行程序TEST.EXE进行跟踪调试。

(3)主要调试命令: 1) 反汇编命令U

将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解。一般常用以下格式 a) -U↙:从当前IP处开始,对连续约32字节内容反汇编。如对TEST.EXE,刚装入

DEBUG时的IP=0000,则在输入U命令后有如下显示: -U↙

第45页

PROTEUS-8086实验指导书

12B7:0000 12B7:0003 12B7:0005 12B7:0008 12B7:000A 12B7:000C 12B7:000E 12B7:0010 12B7:0012 ?? 12B7:001F

-

B8B612 MOV 8ED8 MOV BA0000 MOV B409 MOV CD21 INT B44C MOV CD21 INT EB51 JMP 8B867AF MOV ?? 8B4604 MOV AX,12B6 DS,AX DX,0000 AH,09 21

AH,4C 21 0063

AX,[BP+FF7A] ??

AX,[BP+04]

在上例中,12B7:0000表示CS:IP的内容(其中CS的值是动态值);B8B612代表该处存放的二进制数据,亦即指令MOV AX,12B6的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。 特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中的JMP 0063以后的部分,显然不是TEST.EXE的内容。另外还需注意,DEBUG默认使用十六进制。

b) –U 0123↙:从指定的IP=0123处开始,对连续约32字节内容反汇编。

c) –U 0123 0143↙:从指定的IP=0123处开始反汇编,直至指定的0143处结束。 2)

显示寄存器命令

R:显示或修改寄存器的内容。一般常用以下形式:

TEST.EXE,在程序

a) -R↙

-R↙:显示所有寄存器当前的内容及当前将执行的指令。如对

运行之前,键入R命令:

AX=0000 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12A6 ES=12A6 SS=12B6 CS=12B7 IP=0000 NV UP EI PL NZ NA PO NC 12B7:0000 B8B612 MOV AX, 12B6 -

在显示寄存器内容时,标志寄存器F(或程序状态字寄存器PSW)表示成各个分离的标志位,其意义如下表所示: 0 1 溢出 NV OV b)

-R

方向 UP DN 中断 DI EI 符号 PL NG 零 NZ ZR 辅助进位 NA AC 奇偶 PO PE 进位 NC CY AX↙:显示指定的AX寄存器当前的内容,并等待键入新值;如果不作修改,可直接回车。如:

-R AX↙

第46页

PROTEUS-8086实验指导书

AX 0000 :1234↙ - c)

-R

F↙:显示标志寄存器F各个标志位的内容,并等待键入新的标志位;如果不作修改,可直接回车。如:

-R F↙

NV UP EI PL NZ NA PO NC -ZR↙ (键入的ZR表示修改ZF标志值,可同时修改多个标志值。) -

3) 运行命令G:使程序在DEBUG控制下运行,一般有全程、断点运行两种方式。 a) -G↙:控制程序由当前IP处运行,直至程序结束。如果当前IP为初始值,其作用

则相当于直接在DOS下运行程序,一般用于快速观察程序的运行情况。 b) -G 0123↙:控制程序由当前IP处运行,直至指定的断点IP=0123H处,程序暂停,

显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。如对TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至000A处: -G 000A↙

AX=09B6 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12B6 ES=12A6 SS=12B6 CS=12B7 IP=000A NV UP EI PL NZ NA PO NC 12B7:000A CD21 INT 21 -

断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、缓冲区、标志等)来判断程序是否运行正确。

4) 单步命令T:控制程序运行一条指令后暂停,显示各个寄存器的当前值及断点处指令,

然后返回DEBUG提示符“-”下。如对TEST.EXE,若当前IP为初始值,则键入T命令后有如下显示: -T↙

AX=12B6 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=12A6 ES=12A6 SS=12B6 CS=12B7 IP=0003 NV UP EI PL NZ NA PO NC 12B7:0003 8ED8 MOV DS,AX -

单步命令一般用于需对程序运行作仔细分析的地方,如判断分支转移、观察运算结果等。若能综合运用断点及单步指令,则可大大提高DEBUG 调试的速度及效率。但应注意,当IP指针位于INT 21H一类指令处时,执行T命令将会使程序进入该功能调用子程序中,因此,这种情况下最好不用T命令,而用断点运行命令跳过该类功能调用指令。

5)

显示内存命令

D:以十六进制及ASCII两种方式显示内存区的二进制数据,通常用来

第47页

PROTEUS-8086实验指导书

观察数据段内的缓冲区内容。一般常用以下二种形式:

a) -D↙:从0000单元开始,连续显示128个内存单元的内容,如果继续键入D命令,

则继续显示后128个单元内容。如对TEST.EXE,若想观察字符串显示时的字符串内容是否正确,则可在程序断点运行至000A处,键入D命令: -D DS:0↙

12B6:0000 48 65 6C 6C 6F 2C 57 6F-72 6C 64 21 24 00 00 00 Hello,World!$... 12B6:0010 B8 B6 12 8E D8 BA 00 00-B4 09 CD 21 B4 4C CD 21 ...........!.L.! 12B6:0020 EB 51 8B 86 7A FF 2B C6-40 50 8A 46 08 98 50 8B .Q..z.+.@P.F..P. ?? ??

12B6:0070 83 C4 02 8B 5E 04 8A 07-2A E4 89 86 7A FF 3B C6 ....^...*...z.;. -

在上例中,128个单元分成8行,每行16个单元,每个单元的内容分别以十六进制形式和ASCII码形式显示。如果该单元的内容不是可显示字符,则在ASCII区内显示为“.”。

b) –D 0123 0143↙:从指定的0123单元开始显示,直至指定的0143单元结束。 6) 汇编命令A:用于在DEBUG环境下直接键入汇编语言语句、生成较简单的可执行代码

而不必经过完整的汇编语言编程步骤,或者用来在调试过程中临时修改某条指令。如:

-A↙

127D:0100 MOV 127D:0102 MOV 127D:0104 INT 127D:0106 ↙ -A 0102↙

127D:0102 MOV 127D:0104 ↙ -

AH,02↙ AL,6A↙ 21↙

DL,6A↙

当键入汇编命令A后,将从当前IP或指定地址处提示输入汇编语句,每输入一条语句,DEBUG将其汇编成机器码,并存入相应的存储单元中,然后地址自动增加,继续提示输入下一条语句;如果直接回车,则结束汇编命令。特别应注意的是,DEBUG默认使用十六进制,故在输入时不能使用H。

7) 装载命令L:用来将被调试程序重新装载进内存中,一般用于程序运行结束后需继续调

试程序时,或需从头开始调试程序时。如对TEST.EXE:

-G↙

Hello,World!

Program terminated normally -L↙- 8)

退出命令

Q:键入此命令,即退出DEBUG状态,返回DOS。

第48页

本文来源:https://www.bwwdw.com/article/spbo.html

Top