




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生实验报告学院:软件与通信工程学院课程名称:微机原理专业班级:姓 名:学 号:学生实验报告(1)学生姓名学号同组人:无实验项目实验四基本I/O 口的应用必修 选修演示性实验验证性实验 操作性实验 综合性实验实验地点H123实验仪器台号指导教师实验日期及节次2016.05.11星期三第一二节一、实验综述1、实验目的及要求实验目的:(1) 加深对锁存器和缓冲器的基本原理的了解;(2) 掌握I/O 口编程的基本方法;(3) 掌握基本I/O 口的扩展方法及编程方法。实验要求:(1) 编写程序使开关Ki闭合时,对应LEDi灯亮;(2) 编写程序:开关K8闭合时,实现八个LED灯从上到下循环点亮;K8断
2、开停止 循环;(3) 编写程序实现八个LED灯从两边到中间,从中间到两边循环点亮,按下K1停止循环。2、实验仪器、设备或软件计算机、DEBUG Masm for window集成实验环境,proteus软件。二、实验过程(实验步骤、记录、数据、分析)1、实验原理锁存器74LS373与发光二极管LED1LED8;缓冲器74LS245与K1K8开关相连,本 实验为模拟灯亮暗实验,开关闭合对应LED亮。2.利用MASM进行汇编程序(1)编写程序:使开关Ki闭合时,对应LEDi灯亮程序代码如下:DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈
3、段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV DX,600H;IO3#的地址为 600HL1: IN AL,DX ;读输入口的开关状态NOT AL ;取反OUT DX,AL ;写输出口,使对应LED灯点亮JMP L1MOV AH,4CHINT 21HCODES ENDSEND START运行结果:当K1闭合时,LED1灯亮户申71当K6闭合时,LED6灯亮(2)编写程序:开关K8闭合时,实现八个LED灯从上到下循环点亮;K8断开停止循环。程序代码如下:DA
4、TAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AH,01H ;灯循环显示初值LP1: MOV DX,600HWAIT1: IN AL,DX ;取端口数据TEST AL,00000001B;对 key8 的判断JNZ WAIT1 ;JZ表示key8按下,若没有闭合则等待,直到 key8按下MOV DX,600HMOV AL,AHOUT DX,ALMOV CX
5、,2801H;延时WAIT2: NOP;表示空循环一个机器指令的时间NOPLOOP WAIT2;个LOOP相当于两个 NOPROL AH,1 ;由于要循环显示,则要找规律JMP LP1MOV AH,4CHINT 21HCODES ENDSEND START运行结果:当K8闭合时,LED灯自下而上循环点亮突然断开K8,则LED灯停止循环,一直停留在断开前的状态TB(3)编写程序实现八个LED灯从两边到中间,从中间到两边循环点亮,按下 K1 停止循环。程序代码如下:DATAS SEGMENT;此处输入数据段代码TAB DB 81H,42H,24H,18H,18H,24H,42H,81HDATAS
6、ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV DX,600HLEA BX,TABLP2:MOV AH,00HLP1:WAIT2:IN AL,DX ;取端口数据TEST AL,00000001B;对 key8 的判断JNZ WAIT2;JZ表示key8按下,若没有闭合则等待,直到 key8按下MOV AL,AH ;把数据取出XLAT ;(换码指令,把数据段中偏移地址为 BX+AL 的内存单元
7、的内容送到 AL 中)无规则的数据放到表格中可以有序输出OUT DX,ALMOV CX,2801H;延时WAIT1:NOPNOPLOOP WAIT1INC AH;目的是在一次执行时,把TAB的指针下移CMP AH,08H ;比较是否把TAB的数据全读完。JNZ LP1JMP LP2MOV AH,4CHINT 21HCODES ENDSEND START运行结果:(3)编写程序实现八个LED灯从两边到中间,从中间到两边循环点亮,按下K1停止循环。第三个实验也可以这样做,不用查表,用循环指令ROL和ROF来实现源代码程序如下:DATAS SEGMENTDATAS ENDSSTACKS SEGMEN
8、TSTACKS ENDSCODES SEGMENTASSUME CS:CODESSTART:MOV DX,600HMOV BL,80HMOV BH,01HLOP2: WAIT2:IN AL,DX ;取端口数据TEST AL,00000001B ;对 key8 的判断JNZ WAIT2;JZ表示key8按下,若没有闭合则等待,直到 key8按下 IN AL,DXTEST AL,80HMOV AL,0JZ JP1ROL BL,1ROR BH,1MOV AH,BLADD AH,BHMOV AL,AHJP1:OUT DX,ALMOV CX,2000H;延时WAIT1:NOPNOPLOOP WAIT1L
9、OOP LOP2MOV AH,4CHINT 21HCODES ENDSEND START实验结果同上三、结论1 分析讨论(1)刚开始的时候不知道NOP的作用,自己查了资料NOP指令即“空指令”,在x86的CPU中机器码为0x90(144)。执行到NOP旨令 时,CPU十么也不做,仅仅当做一个指令执行过去并继续执行 NOP后面的一条指令。 所以NOP指令自然也会占用执行一个指令的 CPU时间片。常用于程序延时或精确计 时,不过在较快的CPU上不明显。( 2)还有之前不明白一开始仿真时,为十么这些灯是全亮的?可能是没有数据的输入,悬空就是高电平吧(LED是高电平有效)( 3)在做实验时,学到了延时子程序和要把无序的数据输出时,可用查表方式(4) 在做从两边到中间亮时,自己做了一个程序,没有用查表方式,而是参仿了 循环的程序,使用ROL和 ROF指令(5) 开始使用的是PR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 从医之路活动方案
- 仙人酒吧开业活动方案
- 代理加盟活动方案
- 代驾公司三周年活动方案
- 仪式之礼活动方案
- 价格服务活动方案
- 企业参访推广活动方案
- 仿写作文竞赛活动方案
- 企业乔迁活动方案
- 企业元宵佳节活动方案
- 新媒体环境下的品牌策划学习通超星期末考试答案章节答案2024年
- 2024年重庆高考化学试题卷(含答案解析)
- 股东之间股权转让合同协议书(2篇)
- 人体器官讲解课件
- 惠州市惠城区2024-2025学年数学四年级第一学期期末调研模拟试题含解析
- 2024中考满分作文9篇
- 04S519小型排水构筑物(含隔油池)图集
- 2024至2030年中国无机陶瓷膜行业市场运营格局及投资前景预测报告
- 运用PDCA循环提高全麻患者体温检测率
- 人教版高中数学A版 必修第2册《第十章 概率》大单元整体教学设计
- 敦煌的艺术智慧树知到期末考试答案章节答案2024年北京大学
评论
0/150
提交评论