微机原理与接口技术综合实验电子钟实验报告
- 格式:docx
- 大小:19.72 KB
- 文档页数:7
《微机原理与接口技术》实验报告姓名:学号:班级:专业:电气工程及其自动化学院:电气与信息工程学院目录实验一数据传送 (2)实验二算术运算 (4)实验三代码转换 (6)实验四程序的基本结构 (9)1、分支程序 (9)2、循环程序 (13)3、子程序 (16)实验五中断实验(8259) (19)实验六并行接口实验(8255) (25)实验七定时器/计数器实验(8235) (31)实验八D/A接口实验 (36)实验九A/D接口实验 (40)实验十串行通信实验 (43)实验一数据传送一、实验目的1. 掌握与数据有关的不同寻址方式。
2. 继续熟悉实验操作软件的环境及使用方法。
二、实验设备PC微机一台、TD-PIT + 或TD-PIT ++ 实验系统一套。
三、实验内容本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
四、实验步骤(1) 运行Tdpit 集成操作软件,编写实验程序。
(2) 编译连接无误后,进入调试环境,进行程序的调试。
按F8 键单步运行程序,执行完MOV DS,AX 语句后,观察DS 寄存器中出现的段地址。
如图1-1所示可以看出DS数据段中MSR源数据串"HELLO,WORLD!$"。
图1-1 进入调试环境(3)继续单步运行程序,执行MOV ES,AX 语句后,可以看数据段出现的段地址,用同样的方法可以查看ES:0000 的数据。
数据传输还没开始进行,此时ES 段的数据为空,如图1-1所示。
继续单步运行程序如图1-2可以看出数据正在逐渐的进入ES段中。
图1-2 DS源数据段数据(4)直到数据传输完毕,可以看到ES 数据段中目的数据串MSD 已经被写入了数据串"HELLO,WORLD!$"。
如图1-3所示。
图1-3 根据ES值查看附加段的数据实验二算术运算一、实验目的1. 掌握运算类指令编程及调试方法。
2. 掌握运算类指令对各状态标志位的影响及测试方法。
微机原理与接口技术实验报告(一)实验内容一:1、实验目的: 考察对内存寻址方式、8086指令的理解内存中的数据排列如上表所示,各寄存器内容如下DS=2100H ES=2111H SS=2000H BX=106H CX=3H SI=106H DI=12H BP=1100H SP=1100HFR=3402H (FR 标志寄存器,FR 中的DF -字符串操作方向位为1)在执行下列指令后,写出寄存器AX中的内容 0) pop ax; AX= 1) mov ax,bx; AX= 2) mov ax,[bx];AX= 3) mov ax,102H;AX= 4) mov ax,[102H];AX= 5) mov ax,6[SI];AX= 6) lea ax,6[BX][DI];AX= 7) mov ax,[BP+DI];AX= 8) rep lodsw;AX= , 还需写出SI=2、实验内容: (1)开始菜单下选择运行,输入cmd 回车,在开启的窗口中输入debug 后回车,进入程序输入环境(2)利用r 指令显示当前各寄存器储值并按照上文中的寄存器值进行修改 结果如下:物理地址 内容(字节) 物理地址 内容(字节)21100H BEH 21110H 99H 21101H 02H 21111H 00H 21102H 01H 21112H E8H 21103H 8BH 21113H 7EH 21104H 44H 21114H E0H 21105H 02H 21115H 74H 21106H 29H 21116H 06H 21107H 44H 21117H E8H 21108H 04H 21118H 17H 21109H 9CH 21119H 01H 2110AH 50H 2111AH ACH 2110BH E6H 2111BH EBH 2110CH 99H 2111CH 34H 2110DH C6H 2111DH 00H 2110EH 06H 2111EH 30H 2110FHE8H2111FH0BH(3)d指令查看21100H——2111FH内存单元的内容(4)e指令对该段内存单元进行赋值(5)a指令按顺序输入要求中列出的指令(6)u指令进行反汇编(7)t指令(跟踪命令)逐条运行指令,观察记录指令运行结果3、实验结果0) pop ax; AX=02be1) mov ax,bx; AX=01062) mov ax,[bx];AX=44293) mov ax,102H;AX=01024) mov ax,[102H];AX=8b015) mov ax,6[SI];AX=c6996) lea ax,6[BX][DI];AX=011e7) mov ax,[BP+DI];AX=7ee88) rep lodsw;AX=4429, SI=0108实验内容二:1、实验目的:熟悉masm for windows 软件的应用,体会汇编程序的编写、编译、执行及调试等各个环节。
微机原理与接口技术实验报告
本次实验是关于微机原理与接口技术的实验报告,通过本次实验,我们将深入
了解微机原理与接口技术的相关知识,并通过实际操作来加深对这些知识的理解和掌握。
实验一,微机原理。
在本次实验中,我们首先学习了微机的基本原理,包括微机的组成结构、工作
原理和基本功能。
通过实际操作,我们了解了微机的主要组成部分,如中央处理器(CPU)、内存、输入输出设备等,并学习了它们之间的工作原理和相互配合关系。
同时,我们还学习了微机的基本指令系统和数据传输方式,加深了对微机工作原理的理解。
实验二,接口技术。
在接口技术的实验中,我们学习了微机与外部设备之间的接口技术,包括并行
接口、串行接口和通用接口等。
我们通过实际操作,了解了这些接口技术的工作原理和应用场景,学会了如何通过接口技术实现微机与外部设备的数据交换和通信。
实验三,实验综合。
在本次实验的最后,我们进行了一个综合实验,通过实际操作来综合运用微机
原理和接口技术的知识,实现一个具体的功能。
通过这个实验,我们加深了对微机原理与接口技术的理解,掌握了如何将理论知识应用到实际操作中。
总结。
通过本次实验,我们深入学习了微机原理与接口技术的相关知识,并通过实际
操作加深了对这些知识的理解和掌握。
微机原理与接口技术作为计算机科学与技术的基础知识,对我们今后的学习和工作都具有重要意义。
希望通过这次实验,能够对大家的学习和工作有所帮助,并为今后的学习打下坚实的基础。
以上就是本次实验的实验报告,希望对大家有所帮助。
感谢大家的阅读!。
电⼦时钟实验报告综合实验报告(电⼦钟)⼀、实验⽬的主要⽬的是回顾《微机原理与应⽤》以及其他课程所学知识,并能灵活运⽤到实验当中。
掌握8253A、7段数码管,8259A、8255A的应⽤。
⼆、实验设备STAR 系列实验仪⼀套、PC 机⼀台。
三、实验内容利⽤STAR ES598PCI实验仪设计⼀个具有时、分、秒显⽰功能的电⼦时钟,并定义⼀个启动键,当按下该键时时钟从当前设定值开始⾛时,时间数据可⽤数码管显⽰。
(1) 利⽤8253计数器对标准时钟信号计数,分别实现时、分、秒计时(2) 键盘设定⼀个按键,当按键按下则从已设定的时间开始计时(已设定的时间值可在显⽰缓冲区中预置)(3) 时、分、秒的数值均显⽰在数码管上四、实验步骤1、主机连线说明:E5 区:CLK —— B2 区:2ME5 区:CS、A0 —— A3 区:CS5、A0E5 区:A、B、C、D —— G5 区:A、B、C、DB3 区:CS、A0 —— A3 区:CS1、A0B3 区:INT、INTA —— ES8088:INTR、INTAB3 区:IR0 —— C5 区:OUT0C5 区:CS(8253)、A0、A1 —— A3 区:CS2、A0、A1C5 区:GATE0 —— C1 区:VCCC5 区:CLK0 —— B2 区:62.5K2、运⾏程序,按G5 区的F 键,设置时钟初值;3、观察G5 区数码管上显⽰的时间是否正确。
五、实验流程图设置时间⼦程序:8253⼦程序:六、实验程序.MODEL TINYEXTRN Display8:NEAR, GetKeyA:NEAR, GetKeyB:NEAR IO8259_0 EQU 0F000HIO8259_1 EQU 0F001HCon_8253 EQU 0E003HT0_8253 EQU 0E000H.STACK 200.DATAhalfsec DB 0 ;0.5秒计数Sec DB 0 ;秒Min DB 0 ;分hour DB 0 ;时buffer DB 8 DUP(0) ;显⽰缓冲区,8个字节buffer1 DB 8 DUP(0) ;显⽰缓冲区,8个字节bNeedDisplay DB 0 ;需要刷新显⽰number DB 0 ;设置哪⼀位时间bFlash DB 0 ;设置时是否需要刷新.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPmov sec,0 ;时分秒赋为00:00:00mov min,0mov hour,0MOV bNeedDisplay,1 ;显⽰初始值CALL Init8253CALL Init8259CALL WriIntverSTIMAIN: CALL GetKeyA ;按键扫描JNB Main1CMP AL,0FH ;设置时间JNZ Main1CALL SetTimeMain1: CMP bNeedDisplay,0JZ MAINCALL Display_LED ;显⽰时分秒MOV bNeedDisplay,0 ;1s定时到刷新转速Main2: JMP MAIN ;循环进⾏实验内容介绍与测速功能测试SetTime PROC NEAR LEA SI,buffer1CALL TimeToBufferMOV Number,0Key: CMP bFlash,0JZ Key2LEA SI,buffer1LEA DI,bufferMOV CX,8REP MOVSBCMP halfsec,0JNZ FLASHMOV BL,numberNOT BLAND BX,07HLEA SI,bufferMOV BYTE PTR [SI+BX],10H ;当前设置位置产⽣闪烁效果FLASH: LEA SI,buffer CALL Display8MOV bFlash,0Key2: CALL GetKeyAJNB KeyCMP AL,0EH ;放弃设置JNZ Key1JMP ExitKey1: CMP AL,0FHJZ SetTime8SetTime1: CMP AL,10JNB Key ;⽆效按键CMP number,0JNZ SetTime2CMP AL,3 ;调整时的⼗位数JNB KeyMOV buffer1 + 7,ALJMP SetTime7SetTime2: CMP number,1JNZ SetTime3CMP buffer1 + 7,2JB SetTime2_1 ;修改后可以在设置时间时,设置时钟为04到09之间的数值 CMP AL,4 JNB KeySetTime2_1: MOV buffer1 + 6,ALINC numberJMP SetTime7SetTime3: CMP number,3JNZ SetTime4CMP AL,6 ;调整分的⼗位数JNB KeyMOV buffer1 + 4,ALJMP SetTime7SetTime4: CMP number,4JNZ SetTime5MOV buffer1 + 3,AL ;调整分的个位数INC numberJMP SetTime7SetTime5: CMP number,6JNZ SetTime6CMP AL,6 ;调整秒的⼗位数JB SetTime5_1JMP KeySetTime5_1: MOV buffer1 + 1,ALJMP SetTime7SetTime6: MOV buffer1,AL ;调整秒的个位数SetTime7: INC numberCMP number,8JNB SetTime8MOV bFlash,1 ;需要刷新JMP KeySetTime8: MOV AL,buffer1 + 1 ;确认MOV BL,10MUL BLADD AL,buffer1MOV sec,AL ;秒MOV AL,buffer1 + 4MUL BLADD AL,buffer1 + 3MOV min,AL ;分MOV AL,buffer1 + 7MUL BLADD AL,buffer1 + 6CMP al,18h ;修改后可以解决时间设置时,时钟设置为24以上的数值 JNB exit MOV hour,AL ;时JMP ExitExit: RETSetTime ENDP;hour min sec转化成可显⽰格式TimeToBuffer PROC NEARMOV AL,secXOR AH,AHMOV BL,10DIV BLMOV [SI],AHMOV [SI + 1],AL ;秒MOV BYTE PTR [SI + 2],10H ;这位不显⽰MOV AL,minXOR AH,AHDIV BLMOV [SI + 3],AHMOV [SI + 4],AL ;分MOV BYTE PTR [SI + 5],10H ;这位不显⽰MOV AL,hourXOR AH,AHDIV BLMOV [SI + 6],AHMOV [SI + 7],AL ;时RETTimeToBuffer ENDP;显⽰时分秒Display_LED PROC NEAR LEA SI,bufferCALL TimeToBufferLEA SI,bufferCALL Display8 ;显⽰RETDisplay_LED ENDP;0.5s产⽣⼀次中断Timer0Int: PUSH AXPUSH DXMOV bFlash,1INC halfsecCMP halfsec,2JNZ Timer0Int1MOV bNeedDisplay,1MOV halfsec,0INC secCMP sec,60JNZ Timer0Int1MOV sec,0INC minCMP min,60JNZ Timer0Int1MOV min,0INC hourCMP hour,24JNZ Timer0Int1MOV hour,0Timer0Int1: MOV DX,IO8259_0 MOV AL,20HOUT DX,ALPOP DXPOP AXIRETInit8253 PROC NEARMOV DX,Con_8253MOV AL,34HOUT DX,AL ;计数器T0设置在模式2状态,HEX计数 MOV DX,T0_8253 MOV AL,12HOUT DX,ALMOV AL,7AHOUT DX,AL ;CLK0=62.5kHz,0.5s定时RETInit8253 ENDPInit8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,Timer0IntSTOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPEND START七、实验结果⼋、实验⼼得通过这两天的实习使我对微机原理有了更深⼊的了解,原来只是停留在想象中的,就像⼀些编写的程序也只是通过⾃我检查来看程序是否错误,有些问题很难发现,但是通过这两天的实习,使原本空洞的知识进⼊了实际的操作中,特别是对对电⼦钟的实验发现微机原理可以实验很多东西,我们现实中的很多东西都是通过微机原理的编程实现的,⽐如⼗字路⼝的红绿灯、数字式温度计、语⾳模块、光照强度的测试……,切实体验到了微机原理的功能强⼤以及它的重要性。
微机原理与接口技术实验报告实验目的:本次实验旨在通过实际操作,加深对微机原理与接口技术的理解,掌握接口技术的基本原理和应用方法,提高学生的动手能力和实际应用能力。
实验内容:1. 学习并掌握微机原理与接口技术的基本知识;2. 了解并熟悉常见的接口技术及其应用;3. 进行实际操作,设计并完成一个简单的接口电路。
实验仪器与设备:1. 个人电脑;2. 电子元件,电阻、电容、集成电路等;3. 实验板、示波器、示教电脑等。
实验步骤:1. 阅读相关的微机原理与接口技术的教材,了解基本原理;2. 学习常见的接口技术,例如并行接口、串行接口等;3. 进行实际操作,设计一个简单的接口电路,包括硬件设计和软件编程;4. 调试电路,确保接口电路能够正常工作;5. 编写实验报告,总结实验过程和实验结果。
实验结果与分析:经过实际操作,我们成功设计并完成了一个简单的接口电路。
在实验过程中,我们深入理解了微机原理与接口技术的相关知识,掌握了接口技术的基本原理和应用方法。
通过调试电路,我们验证了接口电路的正常工作,加深了对接口技术的理解。
结论:本次实验使我们更加深入地了解了微机原理与接口技术,提高了我们的动手能力和实际应用能力。
通过设计和完成接口电路,我们对接口技术有了更加直观的认识,为今后的学习和工作打下了坚实的基础。
总结:微机原理与接口技术是计算机专业的重要课程,通过实验学习,我们不仅加深了对知识的理解,还提高了动手能力和实际应用能力。
希望同学们能够认真对待每一次实验,不断提升自己的能力,为未来的发展打下坚实的基础。
至此,本次微机原理与接口技术实验报告完毕。
微机原理闹钟实验报告实验名称:微机原理闹钟实验报告实验目的:1. 了解单片机的基本工作原理和编程方法;2. 学习如何使用单片机设计并实现闹钟功能;3. 掌握数字时钟显示技术。
实验器材:1. 单片机实验箱;2. AT89C52单片机;3. LED数码管;4. 4位开关;5. 电源线;6. 连线线缆。
实验原理:本次实验使用单片机AT89C52来设计和实现闹钟功能。
单片机是一种微型电子计算机系统,具有高度集成、功能强大等特点。
数码管是一种常见的数字显示装置,适用于时钟、计时器等场合。
实验步骤:1. 将AT89C52单片机与LED数码管通过连接线连接起来,保证电源线的正负极连接正常。
2. 编写C程序,实现显示当前时间的功能。
通过编程可以将当前时间在数码管上显示出来。
3. 设定闹钟时间和闹铃的功能,通过编程实现。
当闹钟时间到达时,数码管上会显示闹钟时间,并通过蜂鸣器发出声音。
4. 调试程序,确保闹钟功能正常运行。
5. 完成闹钟的相关操作,包括设置闹钟时间、启动闹钟、关闭闹钟等功能。
实验结果:经过编程和调试,我们成功实现了微机原理闹钟的功能。
我们能够通过设置闹钟时间并启动闹钟来实现报时的功能。
当闹钟时间到达时,数码管上会显示相应的时间,并通过蜂鸣器发出声音,起到提醒作用。
实验总结:通过这次实验,我深入了解了单片机的基本工作原理和编程方法。
同时,我学会了使用单片机设计和实现闹钟功能,并掌握了数字时钟显示技术。
这次实验让我对单片机的应用有了更深刻的认识,并提高了我对数字电路设计和编程的能力。
同时,我还发现了实验过程中可能存在的问题和改进的空间。
例如,我可以进一步完善闹钟功能,加入更多的定时和报时功能,提高闹钟的多样化和实用性。
此外,我还可以优化程序的运行效率,提高系统的稳定性和响应速度。
总之,本次实验对我的学习和提高具有重要意义。
通过实践操作,我深入理解了微机原理闹钟的设计与实现,拓宽了我的知识面和实践能力。
我将继续深入学习和掌握微机原理和相关技术,为以后的学习和研究打下坚实的基础。
微机原理与接口技术实验报告题目8086电子时钟设计学生姓名戎君楠学号20131334045院系电子信息与工程学院专业通信工程指导教师乔杰二O一五年六月二十四日1、电子时钟功能介绍可调整运行的电子钟具有三种工作状态:"P.”状态、运行状态、调整状态。
(1)“P.”状态:依靠上电进入,在此状态下,按B, C, D键均无效,按A键有效,进入运行状态。
(2)运行状态:按奇数次A键进入,在此状态下,按B, C, D键均无效,只有按A键有效,按下A键后,退出运行状态,进入调整状态。
(3)调整状态:按偶数次A键进入,在此状态下,按A, B, C, D键均有效。
如按下A键,则退出调整状态,进入运行状态;按下B, C, D键,则分别对时、分、秒加1,调整结束后必须按A键,即可退出调整状态,进入运行状态口基本功能要求:“P.”稳定地显示在LED显示器的最左端数码管上,无A键按下(在“P.”状态下,按下B, C, D键无效),则不进入电子钟的运行状态,继续显示“P.”。
按下A键后,电子钟从当前的设定值开始走时。
再次按下A键后,电子钟退出运行状态,进入调整状态,利用B, C, D键把电子钟的显示时间修改为当前实时时间,时间修改正确后可再次按下A键,电子钟则退出调整状态,进入运行状态.2、电子时钟系统总体方案设计2.1方案比较方案一:利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时:AT89S52的PO口和P2口外接LED数码管构成显示器;P1口外接四个按键A, B, C, D构成键盘电路。
如图2-1所示。
图2-1 AT89S52单片机设计方案框图方案二:以8086微处理器作为CPU, 8253做定时计数器产生时钟脉冲,8255A做可编程并行接口,接LED显示时钟和扩展调整按键。
如图2-2所示。
图2-2以8086为CPU设计方案框图2.2方案选择就方案一用单片机来设计电子时钟,从主要芯片耗材上来说比方案二要少,但是用单片机来设计电子时钟,需要做的其他模块,如单片机最小系统,相对方案二要复杂很多,而且就程序上的编写来说,方案二也比方案一简单。
微机原理与接口技术实验报告实验目的:本次实验旨在熟悉并掌握微机原理与接口技术的相关知识,通过实例操作和分析实验数据,加深对微机原理与接口技术的理解。
一、实验器材与软件1. 硬件器材:计算机主机、外设设备2. 软件工具:操作系统、编程软件二、实验步骤及结果分析1. 实验1:计算机开机自检在实验中,通过开机启动计算机,观察计算机进行自检的过程。
根据显示屏上的自检信息,可以判断计算机硬件的工作状态。
2. 实验2:串口通信测试在本实验中,通过串口通信实现计算机与外设设备之间的数据传输。
首先,将串口接口连接到计算机主机,然后进行相应的设置,包括波特率、数据位、停止位和校验位等。
在实验中,通过编写相应的程序,实现计算机与外设设备之间的数据交互。
通过观察实验结果,判断串口通信是否正常。
3. 实验3:并口通信测试本实验旨在通过并行口通信实现计算机与外设设备之间的数据传输。
首先,将并行口接口连接到计算机主机。
然后,根据实验要求进行相应的设置,包括数据总线的宽度、传输模式等。
通过编写程序,实现计算机与外设设备之间的数据交互。
观察实验结果,判断并口通信是否正常。
4. 实验4:USB接口测试在本实验中,通过USB接口实现计算机与外设设备之间的数据传输。
首先,将USB接口连接到计算机主机。
然后,在计算机中安装相应的驱动程序。
通过编写程序,实现计算机与外设设备之间的数据交互。
观察实验结果,判断USB接口是否正常工作。
5. 实验5:网络接口测试本实验旨在通过网络接口实现计算机之间的数据传输。
首先,将计算机连接到局域网中的其他计算机。
然后,进行相应的设置,包括IP地址、子网掩码等。
通过编写程序,实现计算机之间的数据交互。
观察实验结果,判断网络接口是否正常工作。
三、实验总结通过本次实验,我对微机原理与接口技术有了更深入的了解,掌握了串口、并口、USB接口和网络接口等常用接口的使用方法。
通过实验的操作和分析,我对接口通信的原理和实现方式有了更详细的了解,对计算机与外设设备之间的数据传输有了更清楚的认识。
微机原理综合实验:电子钟实验要求8253每1s产生中断请求给8259,中断服务程序利用8255控制数码管,构建一个电子钟。
一、实验原理(相关芯片大致介绍)1.82548254 是Intel 公司生产的可编程间隔定时器,是8253 的改进型,比8253 具有更优良的性能。
8254 具有以下基本功能:(1)有3 个独立的16 位计数器。
(2)每个计数器可按二进制或十进制(BCD)计数。
(3)每个计数器可编程工作于6 种不同工作方式。
(4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。
(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为:n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
2.8259Intel公司专为控制优先级中断而设计开发的芯片,包括中断源优先级排队、辨别中断源以及提供中断矢量的电路,无需附加任何电路,用户只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式。
同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。
管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。
3.8255并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。
CPU 和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。
8255 可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
微机原理与接口技术实验报告专业____________________ 年级___________________ 完成时间________________小组成员_________________________________________________________________实验一汇编语言编译过程一、实验目的1、熟悉汇编语言源程序的基本格式。
2、掌握在DOS环境下汇编程序的编写、汇编和调试方法。
3、掌握在MF2KP(MIFID实验箱软件平台)环境下汇编程序的编写、汇编和调试方法。
二、实验内容软件实验1、编写汇编语言源程序2、使用MASM进行汇编,查找错误并修改3、使用LINK进行连接4、运行程序三、实验要求在DOS环境下利用文本编辑器编写汇编语言源程序,用汇编工具编译、调试、连接,生成可执行文件在DOS环境下正确运行,并记录相关数据。
四、实验仪器IBM-PC机,MFID实验箱五、实验步骤1、在DOS方式下键入edit new.asm<CR>2、输入源程序并保存3、键入masm new<CR>进行汇编,生成new.obj目标文件,并保存new.list列表文件4、如果提示有错误,参考列表文件并修改程序文件new.asm,重复第三步5、键入link new<CR>进行连接,生成new.exe可执行文件6、键入new<CR>运行程序六、实验程序stack segment stack ‘stack’dw 32 dup(?)stack endsdata segmentSB DB 9AHOBUF DB 9 DUP (?)data endscode segmentmain proc farassume ss:stack, cs:code, ds:datastart: push dssub ax, axmov ax, datamov ds, axMOV CX, 8MOV BX, 0MOV AL, SBAGAIN: MOV AH,0SHL AX, 1ADD AH, 30HMOV OBUF[BX], AHINC BXLOOP AGAINMOV OBUF[BX], ‘$’MOV DX, OFFSET OBUFMOV AH, 9INT 21Hretmain endpcode endsend start七、实验结果分析1、记录编译过程中错误并分析原因2、本程序中9号功能调用输出数据如何获得3、如将MOV CX, 8 语句中的8改为4,输出结果又是什么4、如果将语句MOV OBUF[BX], ‘$’去掉,输出结果是什么,试分析其原因微机原理与接口技术实验报告专业____________________ 年级___________________ 完成时间________________小组成员_________________________________________________________________实验二DEBUG调试一、实验目的1、熟悉使用DEBUG调试可执行文件的基本方法2、掌握在DEBUG中显示寄存器内容与显示存储器内容的命令3、掌握利用DEBUG中的反汇编命令对可执行文件进行反汇编与置断点的命令二、实验原理DEBUG是一个专门为汇编语言设计的交互式调试工具,它提供一个控制测试的环境,以便用户能够监视和控制被调试程序的执行;可以直接确定直接确定程序中出现的问题,然后立即修改程序以便判定这些问题是否已经解决,而不必重新去编写一个程序;可以直接设置寄存器和存储器的值,也可设置断点使程序暂停执行以便察看中间结果;总之,它为汇编语言程序员提供了非常有效的调试手段。
微机原理综合实验:电子钟实验要求8253每1s产生中断请求给8259,中断服务程序利用8255控制数码管,构建一个电子钟。
一、实验原理(相关芯片大致介绍)1.82548254 是Intel 公司生产的可编程间隔定时器,是8253 的改进型,比8253 具有更优良的性能。
8254 具有以下基本功能:(1)有3 个独立的16 位计数器。
(2)每个计数器可按二进制或十进制(BCD)计数。
(3)每个计数器可编程工作于6 种不同工作方式。
(4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。
(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为:n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
2.8259Intel公司专为控制优先级中断而设计开发的芯片,包括中断源优先级排队、辨别中断源以及提供中断矢量的电路,无需附加任何电路,用户只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式。
同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。
管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。
3.8255并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。
CPU 和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。
8255 可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
二、设计方案①:初始化各芯片,选定工作方式。
②:使用功能调用获取当前时间,作为初值装入。
③:8254芯片开始计数,每隔1s产生一个中断信号。
④:8259芯片接受到中断信号,并传给cpu,cpu响应中断。
⑤:返回到③循环执行。
⑥:添加子程序,判断当有按键按下时,终止计时。
三、接线设计8255 PA0~PA7,PB0~PB7……………………数码管显示8259IQ1……………………8253OUT18.432KHZ……………………853CLK+5V……………………8253GATE四、源代码CS0 EQU 3000H ;片选CS0对应的端口始地址CS2 EQU 3040H ;片选CS2对应的端口始地址MY8255_A EQU CS0+00H ;8255的A口地址MY8255_B EQU CS0+01H ;8255的B口地址MY8255_C EQU CS0+02H ;8255的C口地址MY8255_MODE EQU CS0+03H ;8255的控制寄存器地址MY8254_COUNT0 EQU CS2+00H ;8254计数器0端口地址MY8254_MODE EQU CS2+03H ;8254控制寄存器端口地址IRQ_IVADD EQU 01C8H ;IRQ10对应的中断矢量地址IRQ_OCW1 EQU 0A1H ;IRQ10对应PC机内部8259的OCW1地址IRQ_OCW2 EQU 0A0H ;IRQ10对应PC机内部8259的OCW2地址IRQ_IM EQU 0FBH ;IRQ10对应的中断屏蔽字STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTCS_CHUSHI DW ?;保存IRQ10原中断处理程序入口段地址的变量IP_CHUSHI DW ?;保存IRQ10原中断处理程序入口偏移地址的变量IM_CHUSHI DB ?;保存IRQ10原中断屏蔽字的变量HOUR DB 0MINUTE DB 0SECOND DB 0DTABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDS ;键值表,0~F对应的7段数码管的段位值CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCLI ;清除中断标志位MOV AX,0000H ;替换IRQ10的中断矢量MOV ES,AXMOV DI,IRQ_IVADDMOV AX,ES:[DI]MOV IP_CHUSHI,AX ;保存IRQ10原中断处理程序入口偏移地址MOV AX,OFFSET MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址ADD DI,2MOV AX,ES:[DI]MOV CS_CHUSHI,AX ;保存IRQ10原中断处理程序入口段地址MOV AX,SEG MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口段地址MOV DX,IRQ_OCW1 ;设置中断屏蔽寄存器,打开IRQ10的屏蔽位IN AL,DXMOV IM_CHUSHI,AL ;保存IRQ10原中断屏蔽字AND AL,IRQ_IMOUT DX,ALMOV AH,2CH ;获取现在的时间INT 21HMOV second,DHMOV MINUTE,CLMOV HOUR,CHSTIMOV SI,3000H ;建立缓冲区,存放要显示的键值MOV AL,00H ;先初始化键值为0MOV [SI],ALMOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALMOV [SI+4],ALMOV [SI+5],ALMOV DI,3005HMOV DX,MY8255_MODE ;初始化8255工作方式MOV AL,81H ;方式0,A口、B口输出,C口低4位输入OUT DX,ALMOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,34H ;计数器0,方式2OUT DX,ALMOV DX,MY8254_COUNT0 ;装入计数初值MOV AL,0FFHOUT DX,ALMOV AL,0FFH ;18432分频OUT DX,ALBEGIN: CALL DIS ;显示刷新CALL CLEAR ;清屏CALL GETTIME ;有键按下则跳置GETKEY1MOV AH,1 ;判断PC键盘是否有按键按下INT 16HJZ BEGIN ;无按键则跳回继续循环,有则退出QUIT: CLIMOV AX,0000H ;恢复IRQ10原中断矢量MOV ES,AXMOV DI,IRQ_IVADDMOV AX,IP_CHUSHI ;恢复IRQ10原中断处理程序入口偏移地址 MOV ES:[DI],AXADD DI,2MOV AX,CS_CHUSHI ;恢复IRQ10原中断处理程序入口段地址 MOV ES:[DI],AXMOV DX,IRQ_OCW1 ;恢复IRQ10原中断屏蔽寄存器的屏蔽字 MOV AL,IM_CHUSHIOUT DX,ALSTIMOV DX,MY8254_MODE ;退出时8254为方式2,OUT0置0MOV AL,10HOUT DX,ALMOV AX,4C00HINT 21HGETTIME PROC NEARCALL DIS ;显示刷新CALL DELAYCALL DELAYCALL CLEAR ;清屏MOV AL,HOURMOV AH,0MOV CL,10DIV CLMOV SI,3005HMOV [SI],ALDEC SIMOV [SI],AHMOV AL,MINUTEMOV AH,0MOV CL,10DIV CLDEC SIMOV [SI],ALDEC SIMOV [SI],AHMOV AL,SECONDMOV AH,0MOV CL,10DIV CLDEC SIMOV [SI],ALDEC SIMOV [SI],AHRETGETTIME ENDPMYISR PROC NEAR ;中断处理程序MYISRPUSH AXPUSH DXMOV AX,DATAMOV DS,AXINC SECOND ;秒加1MOV AL,SECONDCMP AL,60 ;秒数与60比较JNE OVERMOV SECOND,0 ;秒清零INC MINUTE ;分加1MOV AL,MINUTECMP AL,60 ;分数与60比较JNE OVERMOV MINUTE,0 ;分清零INC HOUR ;时加1MOV AL,HOURCMP AL,60 ;时数与24比较JNE OVERMOV HOUR,0 ;时清零OVER: MOV DX,IRQ_OCW2 ;向PC机内部8259发送中断结束命令MOV AL,20HOUT DX,ALMOV AL,20HOUT 20H,ALPOP DXPOP AXIRETMYISR ENDPCLEAR PROC NEAR ;清除数码管显示子程序MOV DX,MY8255_B ;段位置0即可清除数码管显示MOV AL,00HOUT DX,ALRETCLEAR ENDPDIS PROC NEAR ;显示子程序PUSH AX ;以缓冲区存放的值为键值表偏移找到值并显示MOV SI,3000HMOV DL,0DFHMOV AL,DLAGAIN: PUSH DXMOV DX,MY8255_AOUT DX,AL ;设置X1~X6,选通一个数码管MOV AL,[SI] ;取出缓冲区中存放的值MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,[BX] ;将键值作为偏移和键值基地址相加得到相应的键值MOV DX,MY8255_BOUT DX,AL ;写入数码管A~DpCALL DELAYINC SI ;取下一个值POP DXMOV AL,DLTEST AL,01H ;判断是否显示完?JZ OUT1 ;显示完,返回ROR AL,1MOV DL,ALJMP AGAIN ;未显示完,跳回继续OUT1: POP AXRETDIS ENDPPUTBUF PROC NEAR ;保存键值子程序MOV SI,DIMOV [SI],ALDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3005HGOBACK: RETPUTBUF ENDPDELAY PROC NEAR ;软件延时子程序PUSH CXMOV CX,0FFHD1: MOV AX,0FFFHD2: DEC AXJNZ D2LOOP D1POP CXRETDELAY ENDPCODE ENDSEND START五、实验结果电子钟能正确获取当前时间并运行下去,6位数码管分别对应时、分、秒,精准度大致与普通时钟一致,但仍有待改善。