北京邮电大学 微机原理硬件实验报告(2)

2019-03-23 15:12

PUSH DS MOV AX,0

PUSH AX;使用第一种返回DOS的方式 MOV AX,DAT MOV DS,AX

MOV DX,0E8E0H;输出端口设置 LOOP0:IN AL,DX MOV AH,AL TEST AL,01H

JZ GG;最低位为1则程序结束 TEST AL,02H;检测中间位

JZ LOOP0;若输入端为0则继续等待 TEST AL,04H; JZ RR;跑马灯向右运动 ROL NUM,1;跑马灯向左运动 JMP LOOP2

RR:ROR NUM,1;原数据循环右移,使得跑马灯向右跳转 LOOP2:AND AH,1FH

MOV CL,AH;设置子程序调用的次数,间接控制延迟时间 MOV CH,0; MOV AL,NUM OUT DX,AL

6

INC CX

LOOP1:CALL DELAY;调用延时子程序 LOOP LOOP1

JMP LOOP0;返回等待输入过程 GG:RETF START ENDP ;延时子程序 DELAY PROC PUSH CX

MOV CX,008FFH;外循环过程 D1:PUSH CX

MOV CX,004FFH;内循环过程 D2:LOOP D2 POP CX LOOP D1 POP CX RET

DELAY ENDP; COD ENDS END START

六、思考题:

通过实验说明用 debug 中的 a 命令录入实验中给出的小程序中,有些语句可以不写出“h”

7

字符的原因。

答:在DEBUG环境下,地址都是默认以16进制显示的,所以当语句中的数据是地址时,可以不加H,如果输入的不是地址而是数据时,就要加上H以表示为十六进制数。

七、实验收获和体会:

本次试验涉及到了计算机对于外部设备的控制的基本过程,我们主要学会如何在debug环境下编写I/O命令对于外部设备进行输入和输出。具体而言,利用命令点亮了LED灯,以及读取了拨码开关的状态。通过上述读写的操作,以及编写子程序等过程完成了跑马灯的实现。由于电路板的时钟信号周期很小,在完成一层循环时,形成的跑马灯无法被人眼识别捕捉,呈现出了八个LED灯都亮的状态,不符合要求。于是我们将循环延迟的子程序改成了两层,并且由于输入端的拨码开关一共有三个可以控制跑马灯的模式,其中一个控制开关,另一个控制方向(可左可右),另一个辅助控制跑马灯的速度。实际上我们在跑马灯开启状态下,读入三个拨码开关的状态并且将其转化为三位的二进制数,并且将这个二进制数作为控制延迟子程序的调用次数,从而实现了两种方向下七种速度的实现(本应该有八种,但是一种是关闭状态)。实现了功能的拓展和创新。我们通过本次实验,基本学会了汇编语言代码的编写,熟悉了DEBUG的工作环境和调试过程,并且对于计算机控制外部设备有了更客观清醒的认识,为今后汇编学习做了更充分的准备。

实验二 8255A并行接口应用

一、 实验目的:

1.掌握 8255A 的功能及方式 0、1 的实现

2.熟悉 8255A 与 CPU 的接口,以及传输数据的工作原理及编程方法。 3.了解七段数码管显示数字的原理。 4.掌握同时显示多位数字的技术。

二、实验内容:

在实验一的基础上学习 PIO 芯片(8255)编程应用,熟悉平台的主要内容。 CS 用 Y0 (E800H) (一) 简要说明:

在方式 0(输入/输出)下,以 A 口为输出口,B 口为输出口, A 口接六个共阴极数码 管的八位段码,高电平点亮数码管的某一段, B 口接数码管的位选(即要使哪个数码管亮), 高电平选中某一位数码管点亮。 8255A 中

8

A 端口地址 E800H B 端口地址 E801H C 端口地址 E802H

控制地址 E803H 八段数码管的显示规律及数码管的位选规律自己查找,可用实验一中,学过的 I、O 命令来做。

三、程序流程图: 软件程序流程图:

程序一:静态显示学号

开始 8255初始化 待显示字符地址给BX 点亮第一个字符 熄灭 N 依次点亮后面的字符 检测键盘 Y 返回DOS

程序二:动态显示hello

9

8255初始化 从端口读入数据,改变速度 显示所需字符 所需显示字符的地址加1或者N 键盘是否有输入 Y 程序结束,返回DOS

硬件连线图:

10


北京邮电大学 微机原理硬件实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:天脊小学音乐测评方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: