《北邮—微机原理与接口技术(1)(12页).doc》由会员分享,可在线阅读,更多相关《北邮—微机原理与接口技术(1)(12页).doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-微机原理与接口技术硬件实验报告目录1.实验一 微机实验平台介绍及IO的使用31.1.实验目的31.2.实验内容及要求31.3.实验环境及背景31.4.实验步骤41.4.1.使用debug的I、O命令读写端口41.4.2.使用文本编辑器edit和编译器masm51.5.思考题111.6.心得体会11参考资料12声明与致谢121. 实验一 微机实验平台介绍及IO的使用1.1. 实验目的1.1.1通过实验了解和熟悉实验台的结构,功能及使用方法;1.1.2通过实验掌握直接使用debug的I、O命令来读写IO端口;1.1.3学会debug的使用及编写汇编程序。1.2. 实验内容及要求1.2.1学习使用
2、debug命令,并用I、O命令直接对端口进行读写操作,1.2.2用汇编语言编写跑马灯程序。(可以使用EDIT编辑工具。)要求实现以下两个功能:A通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等);B通过输出端口控制灯的工作状态(低电平灯亮)。1.2.3使用时要注意,电源打开时不得插拔电缆及各种器件,一定要在断电的情况下连接电路,否则可能会烧坏整个实验系统。1.3. 实验环境及背景我们使用PCI_IDE50扁平电缆将PC机与实验扩展模块连接起来。在扩展实验平台上,有八个发光二极管、八个拨码开关。读取拨码开关和写发光二极管的端口地址已经被做成了0E8E0h。连接的PC机上安装有
3、DOS操作系统,并有MASM5开发工具。图1扩展实验模块1.4. 实验步骤1.4.1. 使用debug的I、O命令读写端口进入DOS,在命令行模式下输入命令debug,用-a选项写入下列程序:CODE (debug mode)MOVDX, E8E0MOVAL, FEOUTDX, ALMOVAH, 0BINT21ORAL, ALJZ0100INT20输入结束后,直接输入回车即可推出-a。然后,用-g选项运行程序,查看结果。发现最右边的LED亮,其他不亮。修改输出内容,再运行查看结果,可以发现:当输出位对应为1时,灯灭;输出为0时,灯亮。下面,我们来分析一下以下这段程序的作用。CODE (debu
4、g mode)MOVAH, 0BINT21 ORAL, ALJZ0100 INT20第一句是设置功能调用号,第二句是进行DOS功能调用,检测是否有键盘输入。如果有键盘输入,则AL为00h,将由JZ 0100H跳转;如果有键盘输入,则AL为0FFh,程序继续执行。程序执行到20H中断时,结束程序。值得一提的是,在有些语句中,16进制数并不需要以h结尾。这个是因为在debug模式下,语句的读写本来就是按照16进制的,没必要像写汇编源代码(*.asm文件)一样用h将16进制数与10进制数区别开来。1.4.2. 使用文本编辑器edit和编译器masm首先让我们来分析和设计一下这个程序。这个程序“走马灯
5、”需要速度可调、灯的移位方向可调、灯型可调,具有暂停功能,可以在用户需要的情况下结束程序(返回DOS)。我们将这些控制端口设置在端口为0E8E0的拨码开关上。具体开关的用途如下表:表1拨码开关用途表开关号端口的第几位向上拨(1)的意义向下拨(0)的意义S00退出程序,返回DOS程序正常进行S11走马灯向右循环移位走马灯向左循环移位S22走马灯暂停走马灯正在运动S33走马灯慢速运动走马灯快速运动S44三个灯同时亮只有一个灯亮程序流程图:图2走马灯流程图程序代码:CODE (marquee.asm); FILENAME : marquee.asm; AUTHOR : XIAO, Zhiqing (
6、 No. 13 , Cl. 07105 ); DATE : 20091209; DESCRIPTION : revolving scenic lamps which shift in either direction; USAGE : switchers - ( SW0 is the most left one );SW0 ( play ) : UP exitDOWN play;SW1 ( direction ): UP rightDOWN left;SW2 ( pause ) :UP pauseDOWN play;SW3 ( speed ) :UP slowDOWN fast;SW4 ( m
7、ode ) :UP three lightsDOWN one lightDataSEGMENTSwStateDB 0LdStateDB 0FEHBufferDB 0DataENDSStackSEGMENT STACK STACKDB 100H DUP (0)StackENDSCodeSEGMENTASSUME DS : Data , SS : Stack ,CS : CodeMainPROCPUSHDSXORAX , AXPUSHAXMOVAX, DataMOVDS, AXMOVldState , 0FEh ; initializeCALLEndlessRepeatRET ; unreacha
8、ble instructionMainENDP; procedure EndlessRepeat is a procedure that do procedure; ProcToRepeat endless times.EndlessRepeatPROCEndlessLoop :CALLProcToRepeatJMPEndlessLoopRET ; unreachable instructionEndlessRepeatENDPProcToRepeatPROCCALLreadSwCALLexcuteDirectionCALLexcuteModeCALLexcutePause ; during
9、this procedure, sws are read.CALLexcuteReturnToDosCALLexcuteSpeedRETProcToRepeatENDP; procedure DivFreq provide clock whose frequency is divided; by 1000H * 8000H = 134.2M timesDivFreq PROCPUSHCXMOV CX , 1000HMyLoop :PUSHCX MOV CX , 8000HMyNestedLoop :DEC CXJNZMyNestedLoopPOP CXDEC CXJNZMyLoopPOP CX
10、RETDivFreq ENDP; read the states of switchers from Input PortReadSw PROCPUSHAXPUSHDXMOVDX , 0E8E0HINAL , DXMOVSwState , ALPOPDXPOPAXRETReadSw ENDP; turn on and off the leds by Output PortWriteLd PROCPUSHDXPUSHAXMOVAL , LdStateMOVDX , 0E8E0HOUTDX , ALPOPAXPOPDXRETWriteLd ENDP; if first switcher is up
11、, quit the program and return to dos.excuteReturnToDosPROCTESTSWSTATE , 01HJZexitexcuteReturnToDosCALLreturnToDosexitexcuteReturnToDos :RETexcuteReturnToDosENDPReturnToDOSPROCMOVAX , 4C00HINT21HReturnToDOSENDPexcuteDirectionPROCTESTSWSTATE , 02HJZshiftLeftRORLDSTATE , 01HRORLDState , 01HshiftLeft :R
12、OLLDSTATE , 01HexitexcuteDirection :RETexcuteDirectionENDP; wait until S2 is downexcutePausePROCbeginexcutePause :CALL readSwTESTswState , 04HJNZbeginexcutePauseRETexcutePauseENDP; slow mode delays about three times as that of fast modeexcuteSpeedPROCCALLdivFreqTESTswState , 08HJZexitexcuteSpeedCALL
13、divFreqCALLdivFreqexitexcuteSpeed :RETexcuteSpeedENDPexcuteModePROCPUSHWORD PTR ldStateTESTswState , 10HJZsimpleMode; continuous 3 led lights onPUSHAXPUSHBXPUSHCXMOVAL , ldStateMOVBL , ALROLBL , 1ANDBL , ALMOVCL , BLROLCL , 1ANDAL , CLMOVldState , ALPOPCXPOPBXPOPAXsimpleMode :CALLwriteLDexitexcuteMo
14、de :POPWORD PTR ldStateRETexcuteModeENDPCodeENDSENDMain运行结果:编译、连接并运行后,程序运转正常。所有选项都可以按照预期方式控制,且可以正确返回DOS。例如,当S4往下拨后,同一时刻有且只有一个灯亮;图3单灯模式当S4往上拨时,同一时刻有且只有三个灯亮。图4三灯模式本实验达到要求,通过了验收。1.5. 思考题通过实验说明用debug中的a命令录入实验中给出的小程序中,有些语句可以不写出“h”字符的原因。在debug模式下,语句的读写本来就是按照16进制的,没必要像写汇编源代码(*.asm文件)一样用h将16进制数与10进制数区别开来。1.
15、6. 心得体会这次试验是我第一次微机原理试验。在这次试验中,令我印象最深的是文本编辑器edit的使用。在以前的学习生活中,在Windows下我一般用Notepad+,在Linux下我一般用vim,编程时还会用到一些IDE配套的文本编辑器。这次,我第一次使用了文本编辑器edit。这个文本编辑器和绝大多数图形用户界面的文本编辑器不是很相同。例如,Windows下的Ctrl+C和Ctrl+V不能使用。熟悉一个文本编辑器确实是不易的。图5文本编辑器edit第二个印象最深的地方是当程序进入死循环时,没有找到办法退出了。这个特性对我的开发造成了一定的负面影响。当我们用图形界面IDE进行开发时,当程序进入死循环时,可以强制关闭程序。Linux下可以把这个进程kill掉。而DOS下尚未发现解决办法。这使得返回DOS的功能更加重要。其实,能正确的终止,也反映了一个程序的有穷性。参考资料1 徐惠民. 微机原理与接口技术. 北京:高等教育出版社,2007.2 田辉,甘勇. 微型计算机技术系统、接口与通信. 北京:北京航空航天大学出版社,2001.3 王玉良. 微机原理与接口技术. 北京:北京邮电大学出版社,2006.4 . 访问时间:2009年12月.声明与致谢本报告涉及所有源代码均属原创作品。感谢电信工程学院实验中心和 纪辉 老师及其助教们的大力支持。-第 12 页-
限制150内