微机原理与接口技术硬件实验报告

  • 格式:doc
  • 大小:803.00 KB
  • 文档页数:30

下载文档原格式

  / 30
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微原硬件实验报告

班级:07118 班

学号:070547

班内序号:26

姓名:杨帆

实验一熟悉实验环境及IO的使用

一,实验目的

1. 通过实验了解和熟悉实验台的结构,功能及使用方法。

2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。

3. 学会Debug 的使用及编写汇编程序

二,实验内容

1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作,

2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能

A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度

等)。

B.通过输出端口控制灯的工作状态(低电平灯亮)

三,实验步骤

1.实验板的IO 端口地址为EEE0H

在Debug 下,

I 是读命令。(即读输入端口的状态---拨码开关的状态)

O 是写命令。(即向端口输出数据---通过发光管来查看)

进入Debug 后,

读端口拨动实验台上八位拨码开关

输入I 端口地址回车

屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口

输入O 端口地址xx (xx 表示要向端口输出的内容)回车

查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。

2. 在Debug 环境下,用a 命令录入程序,用g 命令运行

C>Debug -a

mov dx, 端口地址

mov al,输出内容

out dx, al

mov ah, 0bh

int 21h

or al, al

jz 0100

int 20h

-g

运行查看结果,修改输出内容

再运行查看结果

分析

mov ah, 0bh

int 21h

or al, al

jz 0100

int 20h

该段程序的作用

3.利用EDIT 工具编写汇编写跑马灯程序程序

实现功能

A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。

B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm

录入程序

按Alt 键打开菜单进行存盘或退出

编译文件

C>MASM 文件名.asm

连接文件

C>LINK 文件名.obj

运行文件或用Debug 进行调试。

四,程序流程图

图表1:实验1的程序流程图

五,源程序代码

DATA SEGMENT ;数据段

BB DB 0FFH ;

DATA ENDS

STACK SEGMENT PARA STACK 'STACK' ;堆栈段DB 100 DUP(?)

STACK ENDS

CODE SEGMENT ;代码段ASSUME CS:CODE, SS:STACK ,DS:DATA BEGIN:MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV BL,7FH

BEG:MOV DX,0EEE0H

MOV AL,BL

OUT DX,AL ;点亮第8盏灯

CALL COUNT ;延时

MOV BL,AL

IN AL,DX

TEST AL,01H ;最低位拨码被按下?方向选择MOV AL,BL

JZ RL

RR: ROR AL,1 ;未按键,则向右点亮

JMP R1

RL:ROL AL,1 ;按下则向左点亮

R1:MOV BL,AL

MOV AH,0BH

INT 21H ;检查键盘缓冲区

OR AL,AL

JZ BEG

MOV AX,4C00H

INT 21H

COUNT PROC NEAR ;延时子程序

PUSH AX

MOV DX,0EEE0H

IN AL,DX ;检测拨码状态

MOV AH,0

MOV BX,0

ADD BX,AX

POP AX

COU1: MOV CX,0FFFFH

COU2: LOOP COU2

COU3: DEC BX ;调速

JNZ COU1

RET

COUNT ENDP

CODE ENDS

END BEGIN

六,思考题

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

通过观察可以发现,编码时,凡是十六进制数据都是要加H的,而地址则不用。这是因为编译时所能识别的数据有多种,为了保证编译正常进行,必须要告诉编译器数据的类型。而地址只有默认的16进制形式,所以不需指定类型就能完成正确的编译,所以无须加H。而在DEBUG环境下,它的默认数据格式就是十六进制的,所以就不需要写出“H”字符;否则通不过编译。

七,实验收获和体会

在这次实验中,我们初步熟悉了在Debug环境下使用I/O命令,实现了对拨码开关状态的读取以及对发光二极管亮灭的控制,即初步尝试了对于微机接口的控制。通过控制发光二极管的亮与灭,结合相关程序的设计,我们实现了一个简单的跑马灯程序。结合查询拨码开关的状态,能够实现点亮发光二极管的方向、模式和速度的调整。这个跑马灯实验的程序使用的是简单的分支结构。

这次实验的要点是对I/O接口译码电路的理解以及使用,通过在Debug环境下的I/O命令,我们测试了外设功能,这使我们了解了地址与端口的对应情况,从而明确了跑马灯程序编写的流程和注意事项。通过该译码电路实验,我掌握了地址译码电路的设计方法和实现原理,对硬件的I/O接口技术有了进一步的认识。这次实验也为以后的实验打下了基础,特别是,应先理解了译码电路的工作原理,然后才能进行编程。