基本IO的应用.docx

上传人:b****6 文档编号:4385812 上传时间:2022-12-01 格式:DOCX 页数:9 大小:374.40KB
下载 相关 举报
基本IO的应用.docx_第1页
第1页 / 共9页
基本IO的应用.docx_第2页
第2页 / 共9页
基本IO的应用.docx_第3页
第3页 / 共9页
基本IO的应用.docx_第4页
第4页 / 共9页
基本IO的应用.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

基本IO的应用.docx

《基本IO的应用.docx》由会员分享,可在线阅读,更多相关《基本IO的应用.docx(9页珍藏版)》请在冰豆网上搜索。

基本IO的应用.docx

基本IO的应用

学生

实验报告

 

学院:

软件与通信工程学院

课程名称:

微机原理

专业班级:

姓名:

学号:

学生实验报告

(1)

学生姓名

学号

同组人:

实验项目

实验四基本I/O口的应用

■必修□选修□演示性实验□验证性实验■操作性实验□综合性实验

实验地点

H123

实验仪器台号

指导教师

实验日期及节次

2016.05.11星期三第一二节

一、实验综述

1、实验目的及要求

实验目的:

(1)加深对锁存器和缓冲器的基本原理的了解;

(2)掌握I/O口编程的基本方法;

(3)掌握基本I/O口的扩展方法及编程方法。

实验要求:

(1)编写程序使开关Ki闭合时,对应LEDi灯亮;

(2)编写程序:

开关K8闭合时,实现八个LED灯从上到下循环点亮;K8断开停止循环;

(3)编写程序实现八个LED灯从两边到中间,从中间到两边循环点亮,按下K1停

止循环。

2、实验仪器、设备或软件

计算机、DEBUGMasmforwindow集成实验环境,proteus软件。

二、实验过程(实验步骤、记录、数据、分析)

1、实验原理

锁存器74LS373与发光二极管LED1~LED8;缓冲器74LS245与K1~K8开关相连,本实验为模拟灯亮暗实验,开关闭合对应LED亮。

2.利用MASM进行汇编程序

(1)编写程序:

使开关Ki闭合时,对应LEDi灯亮

程序代码如下:

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKSSTART:

MOVAX,DATAS

MOVDS,AX

MOVDX,600H;IO3#的地址为600H

L1:

INAL,DX;读输入口的开关状态

NOTAL;取反

OUTDX,AL;写输出口,使对应LED灯点亮

JMPL1

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

运行结果:

当K1闭合时,LED1灯亮

当K6闭合时,LED6灯亮

(2)编写程序:

开关K8闭合时,实现八个LED灯从上到下循环点亮;

K8断开停止循环。

程序代码如下:

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVAH,01H;灯循环显示初值

LP1:

MOVDX,600H

WAIT1:

INAL,DX;取端口数据

TESTAL,00000001B;对key8的判断

JNZWAIT1;JZ表示key8按下,若没有闭合则等待,直到key8按下

MOVDX,600H

MOVAL,AH

OUTDX,AL

MOVCX,2801H;延时

WAIT2:

NOP;表示空循环一个机器指令的时间

NOP

LOOPWAIT2;—个LOOP相当于两个NOP

ROLAH,1;由于要循环显示,则要找规律

JMPLP1

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

运行结果:

当K8闭合时,LED灯自下而上循环点亮

 

突然断开K8,则LED灯停止循环,一直停留在断开前的状态

TB

 

(3)编写程序实现八个LED灯从两边到中间,从中间到两边循环点亮,

按下K1停止循环。

程序代码如下:

DATASSEGMENT

;此处输入数据段代码

TABDB81H,42H,24H,18H,18H,24H,42H,81H

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

;此处输入代码段代码

MOVDX,600H

LEABX,TAB

LP2:

MOVAH,00H

LP1:

WAIT2:

INAL,DX;取端口数据

TESTAL,00000001B;对key8的判断

JNZWAIT2;JZ表示key8按下,若没有闭合则等待,直到key8按下

MOVAL,AH;把数据取出

XLAT;(换码指令,把数据段中偏移地址为BX+AL的内存单元的内容送到AL中)无规则的数据放到表格中可以有序输出

OUTDX,AL

MOVCX,2801H;延时

WAIT1:

NOP

NOP

LOOPWAIT1

INCAH;目的是在一次执行时,把TAB的指针下移

CMPAH,08H;比较是否把TAB的数据全读完。

JNZLP1

JMPLP2

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

运行结果:

 

(3)编写程序实现八个LED灯从两边到中间,从中间到两边循环点亮,

按下K1停止循环。

第三个实验也可以这样做,不用查表,用循环指令

ROL和ROF来实现

源代码程序如下:

DATASSEGMENT

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES

START:

MOVDX,600H

MOVBL,80H

MOVBH,01H

LOP2:

WAIT2:

INAL,DX;取端口数据

TESTAL,00000001B;对key8的判断

JNZWAIT2;JZ表示key8按下,若没有闭合则等待,直到key8按下INAL,DX

TESTAL,80H

MOVAL,0

JZJP1

ROLBL,1

RORBH,1

MOVAH,BL

ADDAH,BH

MOVAL,AH

JP1:

OUTDX,AL

MOVCX,2000H;延时

WAIT1:

NOP

NOP

LOOPWAIT1

LOOPLOP2

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

实验结果同上

三、结论

1分析讨论

(1)刚开始的时候不知道NOP的作用,自己查了资料

NOP指令即“空指令”,在x86的CPU中机器码为0x90(144)。

执行到NOP旨令时,CPU十么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。

所以NOP指令自然也会占用执行一个指令的CPU时间片。

常用于程序延时或精确计时,不过在较快的CPU上不明显。

(2)还有之前不明白一开始仿真时,为十么这些灯是全亮的?

可能是没有数据的

输入,悬空就是高电平吧(LED是高电平有效)

(3)在做实验时,学到了延时子程序和要把无序的数据输出时,可用查表方式

(4)在做从两边到中间亮时,自己做了一个程序,没有用查表方式,而是参仿了循环的程序,使用ROL和ROF指令

(5)—开始使用的是PROTUES8.做的实验,但是做不了,只能用比8.0版本低的来做,不知道老师如何使用8.0版本来做这个实验仿真,求解?

四、指导教师评语及成绩:

评语:

该同学实验报告详细认真,非常好完成了该次实验,并有所体会,有自己独立的思考,还做了一个自己的程序。

 

成绩:

93

指导教师签名:

批阅日期:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1