电气工程学院微机原理与接口技术课程组编写
目 录
第一部分 软件使用介绍 1
第二部分 实验内容 13
实验一 8086实验系统的使用 13
实验二 基本程序调试运行 16
实验三 存储器读写实验 22
实验四 8255A并口实验 25
实验五 8259A中断控制器实验 29
实验六 8253定时器/计数器接口实验 33
实验七 AD转换实验 36
实验八 I/O口扩展实验 38
实验九 8255显示器接口实验 41
实验十 电子时钟实验 44
实验十一 DMA实验 48
一、实验目标
微机原理与接口技术是电气工程及其自动化专业、自动化、测控技术与仪器等专业在微型计算机组成、工作原理及应用等方面的专业基础课程。通过课程学习,使学生建立有关微型计算机结构、工作原理、组成部分的认识,掌握汇编语言、接口技术等方面的知识。通过教学的配套实验,掌握微型计算机的基本工作原理、汇编语言程序设计的基本方法、微机与存储器、输入输出设备的应用,使学生具备微型计算机应用系统软、硬件开发的初步能力,为后续专业课程的学习奠定基础。
本课程以研究微机原理与接口技术的分析方法和设计方法为目标,通过实验教学,达到以下实验教学目标:(1)了解和掌握微型计算机的基础知识、硬件组成与工作原理、汇编语言程序设计和微型计算机接口技术等内容,培养学生掌握基本的实验方法与操作技能;(2)掌握基本软硬件分析设计方法,加深和巩固对所学理论知识的认识和理解,培养和提高学生解决实际问题的综合应用能力和创新能力。(3)具备微机原理与接口技术中器件选型设计的能力,能够根据复杂系统功能要求选择合适的器件,并设计硬件电路图和软件程序。
二、实验要求
本实验课程要求学生独立组装各种典型应用电路,掌握常用电子器件性能指标,掌握电路调试方法,研究不同代码的作用与影响,解决实验可能出现的各种问题。具体如下:
1、掌握基本实验仪器的使用;
2、基本实验方法、实验技能的训练和培养,牢固掌握基本软硬件设计方法;
3、综合实验能力的训练和培养;
4、试验结果的处理方法、实验工作作风及实验报告正确书写的培养。
三、实验设备与器件
1、计算机
2、DVCC-8086实验系统
3、双踪示波器
4、万用表
5、频率计
6、直流稳压电源
四、微机原理与接口技术实验课程的重点、难点及教学方法建议
本课程实验的重点是硬件电路的正确连接、软件程序的编写,试验结果的分析;课程实验的难点是电路的软硬件设计方法和综合测试与分析。
教学方面,本课程实验应提前预习,使学生能够利用原理指导实验,利用实验加深对微型计算机原理及应用的理解,掌握电路的软硬件设计方法。
五、操作规范和注意事项
1、实验人员要树立“安全第一”的思想,严格遵守安全操作规程;
2、实验前要做好实验预习、并写好预习报告,方可进行实验,接线前先熟悉开发板上各单元、元器件的功能及其接线位置,特别要熟知微机原理与接口技术引线及接线位置;
3 实验前认真检查电源、线路、设备是否正常,防止事故的发生;
4 实验时,严格按照实验步骤逐一进行操作,确认一切正常后,由老师检查正确后方可进行通电实验。实验始终,试验台上要保持整洁,不可随意防止杂物,特别是导电的工具和导线等,以免发生短路等故障,若出现异常现象,应立即断电,排除故障后方可继续实验。
5 本实验装置上的直流电源及各信号源仅供实验使用,一般不接负载或电路。
6 实验完毕后,及时关闭实验仪器的电源,将仪器设备整理好摆放在实验桌上,并填好学生实验登记表。
本实验指导书由高晓红主编,第二部分中实验一~实验七由高晓红编写,第一部分软件使用介绍和第二部分中实验八由彭世林编写,实验九、实验十由王彦璋编写。全书由高晓红负责统稿。
本实验指导书的编写参阅了大量微机原理与接口技术方面的实验指导书和其他文献,在此谨向作者致以衷心的谢意。
由于编者水平有限,书中的错误和疏漏之处在所难免,欢迎读者提出批评与建议。
编 者
2019年11月25日陇东学院
第一部分 软件使用介绍
8086集成开发环境是为INTEL8086系列程序开发的多窗口程序级开发调试软件,它的友好的WINDOWS的界面使用户的使用简单快捷,极大的提高了程序的开发效率。
一、软件的运行环境及安装启动
运行环境要求:
PC系列微机:486以上CPU
内存: 640K
显卡:VGA
硬盘:2M以上
系统安装:
将标有LGDS的光盘放入光驱,查找86WIN95的软件包,运行SETUP可执行文件,开始安装8086的WINDOWS版工具软件。
单击“下一步”,继续8086WINDOWS版软件的安装;
选择“YES”继续软件安装。
输入使用者的信息后,单击“下一步”,继续8086WINDOWS版软件的安装;
点击“浏览”,选择安装路径,或者使用默认路径,单击“下一步”,继续安装软件。
选择各种安装模式,默认“典型”,继续安装。
二、软件使用指南
1.软件启动
软件安装结束后,在“开始”菜单“程序”中打开“8086实验系统”,即可进入8086的WINDOWS版软件。
打开软件后,先选择通讯口为串口1或串口2,确认后即可联机调试,也可以选择“取消”,不联机,直接进入软件。
2. 编辑程序
打开软件后,主界面如下。可选择“打开”菜单,打开现有的程序或者选择“新建”,新编辑一个程序。
3. 编译调试
编辑程序结束后,选择“运行”菜单“连接装置”,选择通讯串口,确认后联机。然后可以进行编译,链接,在“运行”菜单中可选择多种调试手段进行调试运行。同时可在“窗口”菜单下选择打开多个观察窗口,如寄存器窗口,内存窗口,外存窗口,通过修改存储器地址可查看不同地址区的内容,也可以对其进行修改。
附:内部FLAG寄存器位定义
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
R | R | R | R | OF | DF | IF | TF | SF | ZF | R | AF | R | PF | R | CF |
R:未定义,暂保留。
CF:进位标志。
PF:奇偶标志。
AF:辅助进位标志。
ZF:零标志。
SF:符号标志。
TF:陷阱标志。
IF:中断标志。
DF:方向标志。
OF:溢出标志。
三、不与计算机连接情况下监控程序的使用
1. 键盘布局及键盘定义
8086教学实验系统键盘有6X4共24个键,外加两个第二功能键(SHIFT和CTRL),键盘布局图如下所示:
0 | 1 | 2 | 3 | MEM/SBRK | SC/CBRK |
4 | 5 | 6 | 7 | REG/BMOV | EXEC |
8 | 9 | A | B | LAST/BFIL | STEP |
C | D | E | F | EXT/BCPY | ENTER |
PULSE | RESET | CTRL | SHIFT |
24个键包括:
数字键16个:0~F
功能键8个:SBRK/MEM、BMOV/REG、BFIL/LAST、BCPY/NEXT、CBRK/ESC、EXEC、STEP、ENTER
以及CTRL键和SHIFT键各一个,CTRL键和SHIFT键可分别与数字键和功能键组合以实现其相应的功能,MEM /SBRK、REG/ BMOV、LAST/ BFIL、NEXT /BCPY、ESC/CBRK共五个键为双功能键,当按下SHIFT键的同时,再按下功能键,可完成第二键(上档键)功能,如果单独按下这些功能键,则完成第一键(下档键)的功能。
各键的定义如下:
SBRK/MEM键:上档功能SBRK:设置断点;下档功能MEM:存储器操作(包括内部和外部存储器的显示、修改)。
CBRK/ ESC键:上档功能CBRK:清除断点;下档功能ESC:完成ESCAPE功能,即退至上一次操作处,最终到达监控状态。
BFIL/LAST键:上档功能BFIL:外部存储器块填充;下档功能LAST:内部或外部寄存器显示、修改时,按下此键后,存储器地址减一,并显示其内容。
BCPY/NEXT键:上档功能BCPY:外部存储器块拷贝;下档功能NEXT:内部或外部寄存器显示、修改时,按下此键后,存储器地址增一,并显示其内容。
BMOV/REG键:上档功能BMOV:外部存储器块移动;下档功能REG:寄存器显示、修改。
EXEC键:全速运行键。
STEP键:单步运行键。
ENTER键:确认键,当输入完数据或地址后,应按下此键,监控程序才可接受输入的数据或地址。
RESET键:系统复位键:按下后系统复位,松开后系统开始执行程序(监控程序)。
PULSE键:单脉冲发生器按键,具体见上文单脉冲发生器电路。
2. 键盘功能号
8086教学实验系统在键盘监控方式下可执行如下九种功能,每种功能均对应一个功能代码:
(1)储器浏览修改功能
(2)存器浏览修改功能
(3)存储器块移动功能
(4)存储器块拷贝功能
(5)存储器块填充功能
(6)设置断点功能
(7)清除断点功能
(8)全速执行功能
(9)单步调试功能
当按下功能键后,LED数码管上显示诸如8或1等,其中8或1即为上述的功能代码,用户见到显示的功能代码后,就能知道目前正在执行的功能。
3. LED数码显示及键盘操作约定
3.1 状态提示符
(1)监控状态提示符
8086教学实验系统可以通过一个串行口与上位PC机通讯,由上位PC机发送操作命令,也可以利用教学实验系统主板上提供的键盘进行操作,这样就对应两种状态:
1)上位PC机监控状态,LED显示提示符为“C_”。
2)下位键盘监控状态,LED显示提示符为“P_”。
(2)初始化状态提示符
8086教学实验系统在上述两种状态下,按下复位键后,LED显示初始化状态提示符:“199502” 当LED显示初始化状态提示符时,表示教学实验系统正在初始化,请用户等待,初始化结束后,系统将显示监控状态提示符“C_”或“P_”,此时表明系统初始化已经成功完成,用户可以进行操作了。
(3)结果状态提示符
当输入结果或执行结果正确时,LED显示结果状态提示符“HELLO”,当输入结果或执行结果错误时,LED显示结果状态提示符“ERROR”(键盘监控状态)。
3.2 功能代码及参数输入
如“键盘功能号”中所述,当您按下某一功能键后,LED上将显示类似1–8等提示信息,其中的1–8为功能号,同时提示信息也指明了本次操作是否需要输入参数,以及输入参数的长度,若提示信息为“空N空空”,则表明本次功能操作不需要参数;若提示信息为“_N__”,则表明本次操作需要4位16进制参数,其中N为1~9之间的功能号。LED共有六位,通常前四位用来显示提示信息及地址,后两位用来显示某地址处的数据。当输入地址或数据时,键入4位或2位16进制数字后,按ENTER键确认,监控程序则接受本次操作输入的地址或数据,按ESC键取消接受本次操作所键入的地址或数据,并返回到监控初始状态,LED显示“P_”。只有一个例外,即在寄存器操作状态下,若修改某一寄存器的值,在键入两位16进制数后,按ESC键,监控程序将返回到寄存器操作状态,如不修改或浏览其它寄存器,则需再按一次ESC键,监控程序才返回到监控初始状态“P_”。
3.3 寄存器显示方式
在键盘监控方式下,用户可以浏览或修改下列寄存器:PSW、AX、BX、CX、DX、BP、SP、SI、DI、IP、CS、DS、SS、ES等14个寄存器。
4. 重要说明
当用户编写程序和做键盘显示实验时,请注意下述技术细节,这些技术细节包括:用户可用程序存储器和数据存储器区域,初始化时堆栈值(SP),键盘显示实验时的连线关系以及8279的工作模式。
4.1 程序存储器与数据存储器
8086教学实验系统在硬件电路设计上采用了程序存储器和数据存储器统一编址的方式。其中00000H—03FFFH为数据区,FC000H—FFFFFH单元为监控程序的程序区,系统初始化后,PC的起始地址为01100H,CS=0100H,IP=0100H。
4.2 键盘显示时的连接关系
8279的RL0~RL7分别与键盘的RL10~RL17相连;
8279的KA0~KA2分别与键盘的KA10~KA12相连;
8279的SHEFT与键盘的SHEFT1相连;
8279的CTRL与键盘的CTRL1相连;
4.3 8279的工作模式
为了保证监控程序的正确运行,监控程序对8279进行了初始化。8279的工作方式初始化为00H,即左入口、8字符显示、双键锁定、编码扫描键盘方式。在编写用户程序时,用户不必初始化8279,可在上述方式下直接使用。
5. 键盘操作详述
5.1 存储器浏览、修改
功能代号:1
功能名称:MEM
功能键名:MEM
操作说明:本操作的存储器包括内部存储器和外部存储器,按下MEM键后, LED显示提示符为“_1__”,此时监控在等待键入4位16进制的地址。为保持统一,所键入的地址若为内部存储器地址,则将内部存储器地址扩展成“00××”,“××”为内部存储器的地址。例如,当浏览内部存储器50H单元的内容时,键入“0050”即可,浏览外部存储器6000H单元的内容,键入“6000”即可,键入地址并确认无误后,按回车键ENTER,LED显示“0050 ××”或“6000 ××”,“××”为该地址单元的内容,此时若想浏览下一单元即0051H或6001H单元的内容,请按NEXT键或回车键,此时LED显示“0051 ××”或“6001 ××”,“××”为0051H或6001H单元的内容;若想浏览上一单元即0049H或5FFFH单元的内容,请按LAST键或回车键,此时LED显示“0049 ××”或“5FFF ××”;若想修改0050H或6000H单元的内容,如该为55H,则键入55,确认无误后按回车键,0050H单元或6000H单元的内容便修改为55H,同时LED将显示下一单元即0051H或6001H单元的地址和内容,即此时存储器地址自动增一。这时可以浏览或修改本单元的内容,操作方法如前所述。如果地址或数据键入有误,请按ESC键回到监控初始化状态,欲退出MEM操作,按ESC即可。
5.2 寄存器浏览、修改
功能代号:2
功能名称:REG
功能键名:REG
操作说明:本操作可浏览、修改PSW、AX、BX、CX、DX、BP、SP、SI、DI、IP、CS、DS、SS、ES等14个寄存器的内容,按下REG键后,LED显示提示2,为方便用户操作,对应每一个寄存器,系统提供一个相应的组合热键。在提示符2下,按下组合热键或在LED显示寄存器名+数据状态下按下组合热键,均能到达用户所需要浏览、修改的寄存器处,组合热键与寄存器的对应关系请看下表:
PSW:CTRL+0 SI: CTRL+7
AX: CTRL+1 DI: CTRL+8
BX: CTRL+2 IP: CTRL+9
CX: CTRL+3 CS: CTRL+A
DX: CTRL+4 DS: CTRL+B
BP: CTRL+5 SS: CTRL+C
SP: CTRL+6 ES: CTRL+D
上述所有按键组合均为CTRL或SHIFT加上16进制数字键,操作时CTRL键或SHIFT键应与数字键同时按下。比如在“P_”提示符下若想改变AX的值为1234H,可按如下步骤进行:先按REG键,显示提示符2,再按CTRL+1,显示“01××××”,“××××”为AX的原值,此时键入1234,并按“ENTER”键确认,则AX的值即改变为1234H,提示符回到显示2,再按一下ESC键,可回到监控初始化状态。
执行结果:无。
5.3 块移动操作
功能代号:3
功能名称:BMOV
功能键名:SHIFT+BMOV
操作说明:同时按下SHIFT键和BMOV键,LED显示提示“_3__”,提示需要输入4位16进制地址,该地址为块移动的首地址,输入首地址无误后按回车键,LED显示提示“_L__”,提示用户输入4位16进制长度,输入无误后按回车键,LED提示“_D__”,提示用户输入4位16进制块移动的目标地址,输入无误后按回车键。。
简单地说,块移动操作步骤为:输入块首址,输入块长度,输入目标地址即可。
执行结果:LED显示“HELLO ”,表示操作成功,LED显示“Error”表示未完成操作。
5.4 块拷贝操作
功能代号:4
功能名称:BCPY
功能键名:SHIFT+BCPY
操作说明:块拷贝操作过程与块移动相同。
执行结果: LED显示“HELLO ”,表示操作成功,LED显示“Error”表示未完成操作。
5.5 块填充操作
功能代号:5
功能名称:BFIL
功能键名:SHIFT+BFIL
操作说明:块填充即将外部存储区用一固定字节填充,操作时先按下SHIFT+BFIL组合键,LED显示“_5__”,提示用户输入填充块首址,首址输入无误后,按回车键,LED显示“_L__”,提示用户输入填充块长度,长度输入无误后,按回车键,LED显示“_D__”,提示用户输入填充数据,输入填充数据后回车即可。总之,块填充操作过程为:输入块首址,输入块长度,输入填充数据。
执行结果:LED显示“HELLO ”,表示操作成功,LED显示“Error”表示未完成操作。
5.6 设置断点
功能代号:6
功能名称:SBRK
功能键名:SHIFT+SBRK
操作说明:本操作为用户程序设置断点。用户最多可为用户程序设置 5个断点,设置断点时,同时按下SHIFT键和SBRK键,LED显示“_6__”,提示用户输入断点处的IP值,键入IP值后按回车键即可。
执行结果:LED显示“HELLO ”,表示操作成功,LED显示“Error”表示未完成操作。
5.7 清除断点
功能代号:7
功能名称:CBRK
功能键名:SHIFT+CBRK
操作说明:本操作可为用户清除一个断点。当清除一个断点时,需输入该断点处的PC值,操作方法为:同时按下SHIFT键和CBRK键,LED显示“_7__”,提示用户输入清除断点处的IP值,输入正确后按回车即可。
执行结果:LED显示“HELLO ”,表示操作成功,LED显示“Error”表示未完成操作。
5.8 全速执行
功能代号:8
功能名称:EXEC
功能键名:EXEC
操作说明:本操作可使用户程序从指定 IP处全速执行。全速执行时,LED显示提示符为“_8__”,提示用户输入全速执行的起始PC值,确认输入正确,按回车即可。若不能达到预想的执行结果,可浏览一下IP、CS两个寄存器的值并将它们修改为相应用户程序执行的起始地址。比如,想让用户程序从1100H开始全速执行,此时将IP改为0100H,CS改为0100H,再重复以上全速执行的操作步骤即可。
执行结果:用户程序无法控制。按下复位按纽复位系统后,才可继续进行键盘操作。
5.9 单步调试
功能代号:9
功能名称:STEP
功能键名:STEP
操作说明:本单步调试功能可跟踪进入子程序内部。按下STEP键后,从当前IP处执行一条命令。
执行结果:执行结束后,LED显示下一条待执行指令第一字节的地址和内容,按ESC键可退出单步调试,按STEP键继续进行单步操作。
6. 键盘扫描码
第一种扫描码:SHIFT、CTRL均不按下,从左上角0到右下脚共24个键的扫描码依次为:C0H、C1H、…… DAH、D7H。
第二种扫描码:SHIFT和相应键同时按下,从左上角0到右下脚共24个键的扫描码依次为:40H、41H、…… 5AH、57H。
第三种扫描码:CTRL和相应键同时按下,从左上角0到右下脚共24个键的扫描码依次为:80H、81H、…… 9AH、97H。
7. 演示程序的运行
在初始化状态提示符“P_”下,按“Ctrl_F”即可进入LED显示的演示程序,在LED显示器上可看到数字“8”轮回显示,按任意键可退出该程序,返回监控状态。此演示程序可大致检查系统是否工作正常。
8. 单机程序的输入演示实验
(1)系统连线:8279的RL0~RL7分别与键盘的RL10~RL17相连;
8279的KA0~KA2分别与键盘的KA10~KA12相连;
8279的SHEFT与键盘的SHEFT1相连;
8279的CTRL与键盘的CTRL1相连;
(2)实验连线:根据实验指导说明书,按照相关的实验要求连线。
(3)程序机器码(hex)的输入:在单机状态下,数码管显示“P_”,按键“MEM/CBRK”,数码管显示“_1_ _”,此时从键盘输入“1100”(为绝对地址),数码管显示“1100 ”,数码管的右两位没有显示,再按“ENTER”键,数码管显示“1100XX”,其中的“XX”为存储器1100单元的数据值,此时可对此数值进行修改,修改时直接从键盘输入新数值,再按“ENTER”键或“NEXT”键即可完成修改。值得注意的是,当按完“NEXT”或“ENTER”后,系统自动顺序显示狭义存储单元的内容供修改。当完成程序的输入后,按键“ESC/CBRK”,数码管显示“P_”,则完成输入。
(4)内部寄存器的检查:在数码管显示“P_”状态下,按键“REG/BMOV”,数码管显示“_2_ _ ”按照5.2中寄存器与键盘的对应表,选择有关的寄存器进行修改,例如寄存器IP,从对应表中查到相应的按键为CTRL+9,表示第二功能键“CTRL”与数字键“9”同时按下,数码管显示“090100”,其中“09”表示寄存器的编号为9,“0100”表示此寄存器的数值为0100H,此时可进行修改。例如该为1000H,直接在键盘输入4位数1000,再按“ENTER”,数码管显示“_ 2_ _”表示修改成功。
经检查修改后要保证寄存器的内容与程序的地址相符:IP=0100 ;CS=0100
(5)按照5部分的介绍,全速运行或单步运行,验证结果是否正确。
第二部分 实验内容
实验一 8086实验系统的使用
一、实验目的
1、掌握8086实验系统的使用
2、熟悉常用汇编语言助记符的格式及用法
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验原理
将厂家提供的RS-232通信电缆的9芯D型插头一端插入实验系统9芯D型插座J2上,另一头9芯D型插头插入主机COM1-COM4的任一插座上。COM1、COM2、COM3 或COM4的选择原则是:该通信口必须能正常工作,且与通信电缆提供的插头匹配。
打开实验系统上的电源开关(在外侧面),系统加电;然后打开直流电源(在电路板上),电源指示灯亮,8个数码显示器显示 “DVCC-86H ”字样,指示实验系统正常工作。
调试部分:
单步执行(TaceInto) 单步执行一条程序行,遇子程序调用则步入子程序。
单步执行(TaceOut) 单步执行一条程序行,遇子程序调用则跳过子程序。
连续运行 连续运行程序
执行到光标处 执行到光标所在行
传送(.exe)文件 传送.exe文件到下位实验系统中
存储器成组显示 设置数据窗口的新地址
四、实验内容
1、调用子程序,把character单元的一个小写字母转换成大写。
2、编程计算f=(x+y)×z,x, y, z都是字节单元,f为字单元。
五、实验步骤
1、启动Windows操作系统
2、启动DVCC-8086实验系统
3、按要求格式创建文件,并输入常用汇编语言程序
4、汇编,连接,如发现错误,修改后重新汇编连接
5、单步运行,在寄存器窗口和内存窗口观察运行结果
六、参考程序及程序流程图
1、参考程序如下
code segment public
assume cs:code
org 1000h
start:
mov al, character
sub al, 32
mov character, al
jmp $
org 2000h
character db ‘c’
code ends
end start
程序流程图如图1-1所示。
图1-1
2、参考程序如下
code segment public
assume cs:code
org 1000h
start:
mov al, x
mov bl, y
mov cl, z
add al, bl
mul cl
mov f,ax
jmp $
org 2000h
x db 2
y db 3
z db 4
f dw ?
code ends
end start
程序流程图如图1-2所示。
图1-2
七、思考题
根据参考程序1和2,分析代码的偏移地址?存放数据的偏移地址?
一、实验目的
1、进一步掌握8086实验系统的使用
2、熟悉常用汇编语言助记符的格式及用法
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验原理
分支结构是根据不同的条件转移到不同的程序段执行的程序结构。主要由条件转移指令完成;循环结构完成需要多次重复执行的工作,循环结构包括循环初始化、循环体和循环控制三部分。在形式上分为当型和直到型两种。
四、实验内容
完成下列程序,并调试通过。
1、计算符号函数
2、计算sum=1+2+3+4+…+100的值
3、找出table字节单元的10个有符号数中的最大数存于max单元。
4、依据下式判断score 的值,在value单元填上对应的字符。
五、实验步骤
1、启动Windows操作系统,启动8086实验系统
2、按要求格式创建文件,并输入常用汇编语言程序
3、调试,如发现错误,修改后调试。
4、单步运行,在寄存器窗口和内存窗口观察运行结果
5、在实验报告上绘制程序程序流程图
六、实验说明
1、把编辑的文件保存在自己创建的文件夹中。
2、创建文件名,文件名也不得超过8个字符。默认的扩展名为.asm,不得改变。
3、也可使用emu8086软件编辑、汇编、连接并运行文件。
七、参考程序及程序流程图
图2-1
1、参考程序如下
code segment public
assume cs:code
org 1000h
start:
mov ax, -8
mov bx,0
cmp ax,0
jge gre_equ
mov bx,-1
jmp bottom
gre_equ:
je equal
mov bx,1
jmp bottom
equal:
mov bx,0
bottom:
jmp $
code ends
end start
程序流程图如图2-1所示。
2、参考程序如下
code segment public
assume cs:code
org 1000h
start:
mov ax,0
mov cx,100
up:
add ax,cx
loop up
mov sum, ax
jmp $
org 2000h
sum dw ?
code ends
end start
程序流程图如图2-2所示。
图2-2
3、参考程序如下
code segment public
assume cs:code
org 1000h
start:
mov bx,offset table
mov cx,10
mov al,[bx]
up:
cmp al,[bx]
jge next
mov al,[bx]
next:
inc bx
loop up
mov [max_dat],al
jmp $
org 2000h
max_dat db 0
table db 1,-3,2,4,5,-10,7,-6,8,7
code ends
end start
程序流程图如图2-3所示。
图2-3
4、参考程序如下
code segment public
assume cs:code
org 1000h
start:
mov ah,56
cmp ah,90
jb s80
mov al,’A’
jmp bottom
s80:
cmp ah,80
jb s70
mov al,’B’
jmp bottom
s70:
cmp ah,70
jb s60
mov al,’C’
jmp bottom
s60:
cmp ah,60
jb s50
mov al,’D’
jmp bottom
s50:
mov al,’E’
bottom:
mov score, al
jmp $
org 2000h
score db 0
code ends
end start
程序流程图如图2-4所示。
图2-4
七、思考题
1、根据参考程序1和4,针对有符号数和无符号数,条件转移指令有哪些?
2、根据参考程序3,分析table字节单元中10个数据的偏移地址分别是什么?分析它们在存储器中如何存放的,并绘制出存储数据结构图?
一、实验目的
1、掌握PC机外存扩展的方法。
2、熟悉6264芯片的接口方法。
3、掌握8086十六位数据存储的方法。
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验原理
本实验用到存储器电路。
1、RAM区的地址为02000H,编程时可段地址设为01000H,则偏移地址为1000H。
2、如果按字节进行存储,则AL为55H或AAH;如果按字进行存储,则AX应为55AAH。
3、6264、62256等是计算机系统扩展中经常用到的随机存储器芯片(RAM),主要用作数据存储器扩展。本实验所进行的内存置数在程序中经常用到。
四、实验内容
向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。
五、实验步骤
1、实验接线
本实验无需接线。
2、编写调试程序
3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。
六、思考题
1、绘出本实验的程序程序流程图。
2、画出2片6264连接在8088上的电路图,要求起始地址为00000H。
七、参考程序及程序流程图
参考程序如下:
code segment public
assume cs:code
org 1000h
start:
mov ax,200h
mov ds,ax
mov si,0
mov ax,55aah
mov cx,80h
fill:
mov [si],ax
inc si
inc si
loop fill
nop
code ends
end start
程序流程图如图3-1所示,硬件电路图如图3-2所示。
C | B | A | |||||||||||||||||
A19 | A18 | A17 | A16 | A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
图3-1
七、思考题
存储器地址译码方式有几种?
实验四 8255A并口实验
一、实验目的
1、掌握并行接口芯片8255A和微机接口的连接方法。
2、掌握并行接口芯片8255A的工作方式及其编程方法。
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验原理
可编程并行I/O接口芯片8255A是Intel公司生产的与Intel 8080/8085系列的MPU配套的可编程外围接口电路,简称PPI。芯片有三个8位端口寄存器(A口、B口、C口),通过24位端口线与外部设备相连,24位端口线全部为双向三态,三个端口可分两组使用,分别工作于三种不同的工作方式。
8255A可实现数据的快速传输,PA0~PA7、PB0~PB7均作为8位数据传输线,D0~D7作为数据总线,与CPU进行数据的传输。采用芯片A口作为输入,输入信号由8个逻辑电平开关提供,B口作为输出,其内容由发光二极管来显示,这是通过8个开关来控制8个发光二极管,全速运行程序,拨动开关,当开关置于H时,相应位置的发光二极管点亮。流水灯采用B口作为输出控制发光二极管,需采用延时程序。
四、实验内容
1、编程,用8个开关控制8个发光二极管。
2、编程,用8个发光二极管做成流水灯。
五、实验步骤
1、连线:8255A(IC37)的PA0~PA7分别与逻辑电平开关K1~K8相连;PB0~PB7分别与发光二极管L1~L8相连。从~中任选一个与8255A的片选(CS8255)端相连。其他线路已连好。
2、编辑程序,单步运行,调试程序。
3、调试通过后,全速运行,观察实验结果。
六、参考程序及程序流程图
1、发光二极管参考程序如下:
code segment public
assume cs:code
org 1000h
start:
mov dx,3
mov al, 82h
out dx, al
up:
mov dx,1
in al,dx
mov dx,0
out dx,al
jmp up
code ends
end start
程序流程图如图4-2所示。
图4-2
2、流水灯参考程序如下:
code segment public
assume cs:code
org 1000h
start:
mov dx,3
mov al, 82h
out dx, al
mov dx, 0
mov al, 1
up:
out dx, al
rol al, 1
call delay
jmp up
code ends
end start
延时程序:
delay:
push bx
push cx
mov bx, 255
del:
mov cx, 255
loop $
dec bx
jnz del
pop cx
pop bx
ret
程序流程图4-3所示。
图4-3
七、思考题
1、发光二极管实验中,A口与B口的工作方式及对应控制字?
2、流水灯实验中,延时程序BX, CX的作用?
实验五 8259A中断控制器实验
一、实验目的
1、掌握8259A的工作原理
2、掌编写中断服务程序的方法。
3、掌握初始化中断向量的方法。
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验原理
8259A是Intel公司专为控制优先级中断而设计的NMOS芯片,集中断源优先级排队、中断源识别、中断向量提供和中断屏蔽等功能电路于一体,无需附加任何电路,只需对8259A进行编程,可管理8级优先中断,且中断请求方式和优先级模式等中断结构可通过编程设定或变更。
8259A中断控制芯片可实现对中断的控制,对8259A进行初始化编程后即可处理中断请求,CPU通过操作命令实现8259A操作控制,用单脉冲发生器的输出脉冲作为中断源,向CPU发送中断请求,每按下一次按键产生一次中断申请,通过控制器使CPU执行中断服务程序,中断服务程序的结果是循环灯旋转方向发生改变。
四、实验内容
用单脉冲发生器输出的脉冲为中断源,每按一次产生一次中断申请,使循环灯旋转方向改变。
五、实验步骤
1、连线
8255:PA口接8个发光二极管,片选接Y0;
8259:IRQ0接SP(默认IRQ0优先级最高);
8259中断控制器接口:命令字寄存器:020H,状态寄存器:021H。
2、按要求格式创建文件,并输入常用汇编语言程序。
3、调试,如发现错误,修改后调试。
4、单步运行,在寄存器窗口和内存窗口观察运行结果
六、实验说明
1、8259的使用说明请详细阅读教材。
2、8086的中断系统是向量中断方式。内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量(中断入口地址)。不同中断类型的中断向量在表内有对应的偏移地址,其计算方法是:中断类型*4。
3、中断类型由8259通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序。请仔细研读8259的工作时序。
4、中断类型的高5位由8259寄存器ICW2决定,低3位由中断源IRx的编码自动填入。IR0~IR7的编码分别为000,001,010,011,100,101,110,111。
六、参考程序及程序流程图
参考程序如下:
code segment public
assume cs:code
org 1000h
start:
mov dx, 20h
mov al, 13h
out dx, al
mov dx,21h
mov al, 8
out dx, al
mov al, 9
out dx, al
sti
xor ax, ax
mov ds, ax
mov si, 20h
mov bx, offset sub8
mov [si], bx
inc si
inc si
mov bx, seg sub8
mov [si], bx
mov dx, 3
mov al, 80h
out dx, al
mov al, 1
mov di, 0
mov dx, 0
up:
out dx, al
cmp di ,0
je next
rol al, 1
jmp bottom
next:
ror al, 1
bottom:
mov cx, 30000
loop $
jmp up
sub8:
push ax
push dx
not di
mov dx, 20h
mov al, 20h
out dx, al
pop dx
pop ax
iret
code ends
end start
程序流程图如图5-2、5-3所示。
图5-2 主程序程序流程图
图5-3 中断程序程序流程图
七、思考题
1、在8086系统中,中断向量表处于内存的哪个区域?
2、参考程序中,8259A中断命令字怎么设置的?
一、实验目的
1、掌握8253定时器/计数器的工作方式及编程原理。
2、掌握8253定时器/计数器与8086CPU的接口方法。
3、采用示波器观察不同模式下的输出波形。
二、实验仪器与器材
微型计算机、DVCC-8086实验系统、示波器
三、实验原理
本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路。
四、实验内容
8253计数器0,1,2工作于方波方式,观察其输出波形。
五、实验步骤
1、实验连线:
CS0«CS8253 1MHz«8253CLK0 OUT0«8253CLK2
OUT2«LED 示波器«OUT2
2、编程调试程序
3、全速运行,观察实验结果
六、实验提示
8253是计算机系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2。8253有多种工作方式,其中方式3为方波方式。当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平。实验中,T0、T1的时钟均为1/8MHz,即频率为125KHz。程序中,T0的初值设为0f424H(62500十进制),则OUT0输出的方波周期为()。T2采用OUT0的输出为时钟,则在T2中设置初值为n时,则OUT2输出方波周期为n*0.05s。n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。
七、参考程序及程序流程图
程序全速运行后,LED闪烁(周期为1s),OUT2示波器观察为方波,频率为1Hz。
图6-1 1Hz方波程序程序流程图
参考程序如下:
code segment public
assume cs:code
org 1000h
start:
mov dx,04Bh
mov al,36h
out dx,al
mov dx,048h
mov ax,1000
out dx,al
mov al,ah
out dx,al
mov dx,04Bh
mov al,0B6h
out dx,al
mov dx,04Ah
mov ax, 1000
out dx,al
mov al,ah
out dx,al
jmp $
code ends
end start
程序流程图如图6-1所示。
八、思考题
根据参考程序,画出8253与8086系统总线连接图,并画出译码电路。
一、实验目的
1、掌握逐次逼近法模数转换器的特征和工作原理;
2、掌握ADC0809的接口方法;
3、掌握AD输入程序的设计和调试方法。
二、实验仪器与器材
微型计算机、DVCC-8086实验系统。
三、实验原理
本实验采用 ADC0809 做 A/D 转换实验。ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
启动本A/D转换只需如下三条命令:
MOV DX,ADPORT ;ADPORT为ADC0809端口地址。
MOV AL,DATA ;DATA为通道值。
OUT DX, AL ; 通道值送端口。
读取A/D转换结果用下面二条指令:
MOV DX,ADPORT
IN AL,DX
四、实验内容
1、实验线路的连接
(1)IN1插孔连WA51的输出 V1 插孔。
(2)CS-0809连译码输出 Y6 插孔。
(3)CLK-0809连脉冲输出1MHZ。
(4)CS8255连译码输出Y0
(5)PA0-PA7接LED中L1-L8
2、调节电位器W1,以改变模拟电压值,LED上会不断显示新的A/D转换结果。用ADC0809做A/D转换,其模拟量与数字量对应关系的典型值为+5V-FFH,2.5V-80H,0V-00H。
五、实验步骤
1、正确连接好实验线路
2、理解实验原理
3、仔细阅读,弄懂实验程序
4、运行实验程序
六、参考程序
code segment public
assume cs:code
org 1000h
start:
mov dx,3
mov al,80h
out dx,al
up:
mov dx,61h
mov al,0
out dx,al
mov cx,10000
loop $
in al,dx
mov dx,0
out dx,al
jmp up
code ends
end start
七、思考题
分析ADC0809工作过程?
一、实验目的
利用74LS244和74LS273扩展I/O口。
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验原理
用逻辑电平开关作为74LS244(IC25)的输入,用发光二极管作为74LS273(IC24)的输出,编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。逻辑电平开关拔上时为5V,拔下时为0V。发光二极管输入“1”为亮,为“0”为灭。从74LS244读入的数据后从输出口输出。
四、实验内容
1、熟悉74LS244、74LS273的应用接口方法。
2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。
3、用74LS244作为输入接口电路,输入八个开关的状态,74LS273作为输出接口电路,输出八个发光二极管。编程实现八个开关控制八个发光二极管的点亮与熄灭。
五、实验步骤
1、连线:将74LS244(IC25)的输入SI0~SI7分别与逻辑电平开关电路的K1-K8相连,从I/O地址片信号CS0~CS7中任选一个与74LS244的片选信号(CSU10)相连。将74LS273(IC24)的输出SO0~SO7分别与发光二极管L1~L8相连。从I/O地址片选信号CS0~CS7中任选一个与74LS273的片选信号(CSU8)相连。
2、编写程序并调试
3、全速运行实验程序,观察实验结果,编写实验报告。
六、思考题
1、设计一个红绿灯。
2、设计一个循环灯。
七、参考程序及程序流程图
1、红绿灯参考程序
code segment public
assume cs:code
org 1000h
start:
mov dx,04a0h
in al,dx
mov dx,04b0h
out dx,al
jmp start
code ends
end start
程序流程图如图8-1所示。
图8-1
2、循环灯参考程序
code segment public
assume cs:code
org 1000h
start:
mov al,1
mov dx,04b0h
up:
out dx,al
rol al,1
call delay
jmp up
delay:
push bx
push cx
mov bx,255
del:
mov cx,255
loop $
dec bx
jnz del
pop cx
pop bx
ret
code ends
end start
程序流程图如图8-2、8-3所示。
图8-2
图8-3
七、思考题
1、CPU与I/O接口进行数据传送时,采用的面向I/O端口的操作指令是什么?
2、观察并分析循环灯程序中的延时程序,为何将BX和CX入栈又出栈?
一、实验目的
1、进一步掌握8255的工作原理
2、学习LED显示器的使用方法
3、熟悉8255的接口方法
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验内容
在六位LED上显示预先给定的数。(如6、5、4、3、2、1)。
四、实验原理图
五、实验步骤
1、连线:8255A的PA口的PA0~PA7接a、b、c、d、e、f、g、dp,PB0~PB5接LED1~LED6。8255A的片选CS8255接CS0~CS7中任一个(如CS0)。
2、编写程序,单步运行,调试程序。利用设置断点全速运行或运行到光标处(F6)运行,每次执行显示一位数字。
3、调试通过后,全速运行,观察实验结果。
4、编写实验报告。
六、实验说明
LED是共阴极的,其七段选码为:
字符 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
编码 | 3FH | 06H | 5BH | 4FH | 66H | 6DH | 7DH | 07H | 7FH |
字符 | 9 | A | B | C | D | E | F | G | 灭 |
编码 | 6FH | 77H | 7CH | 39H | 5EH | 79H | 71H | 73H | 00H |
七、参考程序
code segment public
assume cs:code
org 1000h
start:
mov dx,04a6h
mov al,80h
out dx,al
up:
lea bx,table
lea si,number
mov ah,0feh
mov cx,6
disp:
mov al,[si]
xlat
mov dx,04a0h
out dx,al
inc si
mov al,ah
mov dx,04a2h
out dx,al
rol al,1
mov ah,al
call delay
mov al,0ffh
mov dx,04a2h
out dx,al
loop disp
jmp up
delay:
push cx
mov cx,200
loop $
pop cx
ret
table db 3fh,06h,5bh,4fh,66h,6dh,7dh,7h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
number db 1,2,3,4,5,6
code ends
end start
一、实验目的
1、进一步掌握8255、8253、8259的工作原理
2、学习LED显示器的使用方法
3、熟悉8255、8253、8259的接口方法
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验内容
设计一个电子时钟,在六个数码管上显示时间。
四、实验步骤
1、连线:8255A的PA口的PA0~PA7接a、b、c、d、e、f、g、dp,PB0~PB5接LED1~LED6。8255A的片选CS8255接CS0;8253的OUT0接8253CLK2,OUT2接8259的IR0,8253的片选CS8253接CS1;8259片选C59接CS3。
2、编写程序,单步运行,调试程序。利用设置断点全速运行或运行到光标处(F6)运行,每次执行显示一位数字。
3、调试通过后,全速运行,观察实验结果。
4、编写实验报告。
五、实验说明
LED是共阴极的,其七段选码为:
字符 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
编码 | 3FH | 06H | 5BH | 4FH | 66H | 6DH | 7DH | 07H | 7FH |
字符 | 9 | A | B | C | D | E | F | G | 灭 |
编码 | 6FH | 77H | 7CH | 39H | 5EH | 79H | 71H | 73H | 00H |
本实验仪的用户程序不能太长,为提高程序效率,在8259的中断服务程序中,选择非压缩的BCD码,加法完成后采用AAA指令调整。
六、参考程序
code segment public
assume cs:code
org 1000h
start:
mov dx,04c0h ;8259
mov al,13h
out dx,al
mov dx,04c2h
mov al,80h
out dx,al
mov al,3h
out dx,al
mov bx,0
mov ds,bx
mov si,200h
mov bx,offset int80
mov [si],bx
mov bx,100h
inc si
inc si
mov [si],bx
sti
mov dx,04b6h ;8253
mov al,36h ;00110110b
out dx,al
mov dx,04b0h
mov ax,5000
out dx,al
mov al,ah
out dx,al
mov dx,04b6h
mov al,0B6h ;10110110b
out dx,al
mov dx,04b4h
mov al,100
out dx,al
mov al,0
out dx,al
mov bx,100h
mov ds,bx
mov dx,04a6h ;8255
mov al,80h
out dx,al
up:
lea bx,table
lea si,time
mov ah,0feh
mov cx,6
disp:
mov al,[si]
and al,0fh
xlat
mov dx,04a0h
out dx,al
inc si
mov al,ah
mov dx,04a2h
out dx,al
rol al,1
mov ah,al
call delay
mov al,0ffh
mov dx,04a2h
out dx,al
loop disp
jmp up
delay:
push cx
mov cx,200
loop $
pop cx
ret
int80:
push di
push ax
lea di,time
mov ax,[di]
inc ax
aaa
mov [di],ax
cmp ax,600h
jne bottom
mov ax,0
mov [di],ax
inc di
inc di
mov ax,[di]
inc ax
aaa
mov [di],ax
cmp ax,600h
jne bottom
mov ax,0
mov [di],ax
inc di
inc di
mov ax,[di]
inc ax
aaa
mov [di],ax
cmp ax,204h
jne bottom
mov ax,0
mov [di],ax
bottom:
pop ax
pop di
iret
table db 3fh,06h,5bh,4fh,66h,6dh,7dh,7h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
time db 6,5,8,5,3,2
code ends
end start
一、实验目的
掌握DMA工作方式的原理和DMA控制器8237的编程使用方法。
二、实验仪器与器材
微型计算机、DVCC-8086实验系统
三、实验内容
用DMA方式将02000H到020FFH共100H个字节传送到02100H。
四、实验步骤
1、硬件连线:将DMA中断控制实验板插入实验箱右上角插槽中,将CS7或CS6与8237的C37相连。
2、编写程序,源地址单元内容初始化为00H~0FFH,传送结束后目的地址的内容也应是00H~0FFH 。
3、单步执行调试程序,观察实验结果。
4、编写实验报告。
五、实验说明
1、8237是按字节方式工作,而8086是按字方式工作。
2、8237的所有端口地址都应是偶地址。
3、设置断点,并打开数据窗口,查看目的地址,单元内容是否改变。
六、参考程序
code segment public
assume cs:code
org 1000h
start:
mov al,10h
mov cx,100h
mov si,1000h
fill:
mov [si],al
inc al
inc si
loop fill
mov cx,100h
mov al,0
mov si,1100h
clear:
mov [si],al
inc si
loop clear
mov al,0
mov dx,3fah
out dx,al ;clear main
mov al,0
mov dx,3e0h
out dx,al
mov al,20h
out dx,al ;channel 0 address
mov al,0
mov dx,3e4h
out dx,al
mov al,21h
out dx,al ;channel 1 address
mov al,0ffh
mov dx,3e6h
out dx,al
mov al,0
out dx,al ;channel 1 legth
mov dx,3f6h
mov al,88h
out dx,al ;channel 0 mode
mov al,85h
out dx,al ;channel 1 mode
mov dx,3feh
mov al,0fh
out dx,al ;mask regester
mov al,1h
mov dx,3f0h
out dx,al ;command regester
mov dx,3f2h
mov al,4
out dx,al ;request regester
code ends
end start