资源描述:
《北京邮电大学.微机原理硬件实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、可编辑版微机原理与接口技术硬件实验报告学院:信息与通信工程学院班级:201******学生姓名:************学号:201*******201*******班内序号:****Word完美格式可编辑版实验一熟悉实验环境及IO的使用一、实验目的:1.通过实验了解和熟悉实验台的结构,功能及使用方法。2.通过实验掌握直接使用Debug的I、O命令来读写IO端口。3.学会Debug的使用及编写汇编程序二、实验内容:1.学习使用Debug命令,并用I、O命令直接对端口进行读写操作,2.用汇编语言编写跑马灯程序。(使用EDIT编辑工具)实
2、现功能A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。B.通过输出端口控制灯的工作状态(低电平灯亮)三、实验步骤:1.实验板的IO端口地址为0E8E0H在Debug下,I是读命令。(即读输入端口的状态---拨码开关的状态)O是写命令。(即向端口输出数据---通过发光管来查看)进入Debug后,读端口拨动实验台上八位拨码开关输入I端口地址回车屏幕显示xx表示从端口读出的内容,即八位开关的状态ON是0,OFF是1写端口输入O端口地址xx(xx表示要向端口输出的内容)回车查看实验台上的发光二极管状态,0是灯亮,1
3、是灯灭。2.在Debug环境下,用a命令录入程序,用g命令运行C>Debug-amovdx,端口地址Word完美格式可编辑版moval,输出内容outdx,almovah,0bhint21horal,aljz0100int20h-g运行查看结果,修改输出内容再运行查看结果分析movah,0bhint21horal,aljz0100int20h该段程序的作用:检测键盘有没有按键,有则返回DOS。没有继续执行3.利用EDIT工具编写汇编写跑马灯程序程序实现功能A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。B.
4、通过输出端口控制灯的工作状态(低电平灯亮)C>EDIT文件名.asm录入程序按Alt键打开菜单进行存盘或退出编译文件C>MASM文件名.asm连接文件C>LINK文件名.obj运行文件或用Debug进行调试。四、程序流程图Word完美格式可编辑版软件程序流程图:开始检测拨码开关最低位=1?中间位=1?最高位=1?按照速度设定向右运动按照速度设定向左运动结束YNYNNY硬件连线图:Word完美格式可编辑版五、源程序代码:DATSEGMENTNUMDB0EFHDATENDS;定义数据段STASEGMENTSTACK'STACK'DB100
5、DUP(?)STAENDS;定义堆栈段CODSEGMENTASSUMECS:COD,DS:DAT,SS:STASTARTPROCFARPUSHDSMOVAX,0PUSHAX;使用第一种返回DOS的方式MOVAX,DATMOVDS,AXMOVDX,0E8E0H;输出端口设置LOOP0:INAL,DXMOVAH,ALTESTAL,01HJZGG;最低位为1则程序结束Word完美格式可编辑版TESTAL,02H;检测中间位JZLOOP0;若输入端为0则继续等待TESTAL,04H;JZRR;跑马灯向右运动ROLNUM,1;跑马灯向左运动JM
6、PLOOP2RR:RORNUM,1;原数据循环右移,使得跑马灯向右跳转LOOP2:ANDAH,1FHMOVCL,AH;设置子程序调用的次数,间接控制延迟时间MOVCH,0;MOVAL,NUMOUTDX,ALINCCXLOOP1:CALLDELAY;调用延时子程序LOOPLOOP1JMPLOOP0;返回等待输入过程GG:RETFSTARTENDP;延时子程序DELAYPROCPUSHCXMOVCX,008FFH;外循环过程D1:PUSHCXMOVCX,004FFH;内循环过程D2:LOOPD2POPCXLOOPD1POPCXRETDEL
7、AYENDP;CODENDSENDSTART六、思考题:通过实验说明用debug中的a命令录入实验中给出的小程序中,有些语句可以不写出“h”字符的原因。答:在DEBUG环境下,地址都是默认以16进制显示的,所以当语句中的数据是地址时,可以不加H,如果输入的不是地址而是数据时,就要加上H以表示为十六进制数。七、实验收获和体会:Word完美格式可编辑版本次试验涉及到了计算机对于外部设备的控制的基本过程,我们主要学会如何在debug环境下编写I/O命令对于外部设备进行输入和输出。具体而言,利用命令点亮了LED灯,以及读取了拨码开关的状态。通
8、过上述读写的操作,以及编写子程序等过程完成了跑马灯的实现。由于电路板的时钟信号周期很小,在完成一层循环时,形成的跑马灯无法被人眼识别捕捉,呈现出了八个LED灯都亮的状态,不符合要求。于是我们将循环延迟的子程序改成了两层,