《微机实验报告三-简资料(共19页).doc》由会员分享,可在线阅读,更多相关《微机实验报告三-简资料(共19页).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上东南大学微机实验及课程设计实验报告实验四、五简单输入输出、中断姓 名: 学 号: 专 业: 实 验 室: 实验时间: 年月 日 报告时间:年月日评定成绩: 审阅教师: 实验四简单输入输出一、实验目的与内容(概述)实验目的:1)进一步掌握TPC实验装置的基本原理和组成结构;2)掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况;3)掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能和使用。实验内容:(1)按图3.4-1简单并行输出接口参考电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或
2、门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0D7,8个Q输出端接LED显示电路L0L7;(2)编程从键盘输入一个字符或数字,将其ASC码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性;(3)按图3.4-2简单并行输入接口参考电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0K7,8个数据输出端分别接数据总线D0D7;(4)用逻辑电平开关K0K7预置一字母的ASC码,编程输入这个ASC码,并将其对应字母在屏幕上显示出来。(标准ASCII码的范围为20HFFH);二.基本
3、实验原理(或基本原理)1.参考流程图:2.程序简述:(1)简单并行输出程序movah,2movdl,0dhint21h;-显示字符的软中断,显示回车符movah,1int21h;-输入字符并回显的软中断movdx,ls273movah,1int21h;-输入字符并回显的软中断movdx,ls273outdx,al;-从2A8H输出其ASCII码(2)简单并行输入程序movdx,ls244inal,dx;-从LS244指定端口输入一数据movah,06movdl,0ffhint21h;-是否有键按下,是直接控制台I/O的软中断三.方案实现与测试(或调试)实验步骤:(1)动态调试程序DEBUG/T
4、D的直接I/O操作方法(Input)。TD模式下,启动TD(全屏模式),将光标置于代码区右击后可得到代码区局部菜单,选中I/O选项出现菜单;选择inbyte,在编辑菜单中输入所要读入数据的地址,确认后即可得到该地址的数据内容,要读74ls244的当前输出端的数据,可在编辑菜单中输入:0B800-280+2A0H确认后即可得到74LS244输入端的数据;(2)实验电路中中并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要三条指令:MOVAL,数据字节MOVDX,0B428HB400H-280H+2A8HOUTDX,AL通过上述并行接口输入数据需要2条指令
5、:MOVDX,0B420HB400-280H+2A0HINAL,DX1、简单并行输出按图搭接电路查看TPC扩展卡I/O地址,设计程序。主要算法如下:start:movax,stacksmovss,axmovah,2回车符movdl,0dhint21hmovah,1等待键盘输入int21hcmpal,27判断是否为ESC键jeexit若是则退出movdx,ls273若不是,从2A8H输出其ASCII码outdx,aljmpstart转start观察硬件电路,查看LED指示灯亮灭观察发现,根据输入的字符不同,8位LED灯显示输入字符的ASCII码,实现电路以及代码符合设计要求,设计正确。2、简单并
6、行输入按图搭接电路查看TPC扩展卡I/O地址,设计程序。主要算法如下:start:movax,stacksmovss,axmovdx,ls244从2A0输入一数据inal,dxmovdl,al将所读数据保存在DL中movah,02int21hmovdl,0dh显示回车符int21hmovdl,0ah显示换行符int21hmovah,06是否有键按下movdl,0ffhint21hjnzexitjestart若无,则转start观察硬件电路,查看LED指示灯亮灭观察发现,根据开关量的不同,74LS244将不同的电平输入CPU,根据电平,屏幕上显示其转化为的不同ASCII码字符。屏幕的显示与开关相
7、对应,实现电路以及代码符合设计要求,设计正确。四分析与总结经过本次实验我们进一步掌握TPC实验装置的基本原理和组成结构,熟悉测试检查TPC-PCI总线转接卡地址、I/O地址译码电路的工作原理、动态调试程序直接I/O操作方法;掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况;掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能和使用,同时也熟悉了对于软件的编写以及配合硬件的使用。实验五 中断一. 实验目的1、掌握PC机中断处理系统的基本原理。2、学会编写中断服务子程序。3、掌握8255工作方式1时的使用及编程。4、学会编写中断服务子
8、程序。二. 实验内容必做:7-1、直接用手动产生单脉冲作为中断请求信号,要求每按一次开关产生中断一次,在屏幕上显示一次“TPC pci card interrupt:”,冒号后面添加已经中断的次数,中断10次后程序退出。选做:7-2、(输出)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:依次输出01H、02H、04H、08H、10H、20H、40H、80H使L0L7依次发光,中断8次结束。7-3、(输入)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:读取逻辑开关预制的ASCII码,在屏幕上显示其对应的字符,中断8次结束。三.实验原
9、理与接线原理:1、PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级等处理后向CPU发出可屏蔽中断请求。IBMPC/XT机中有一片8259中断控制器对外可以提供8个中断源:中断源 中断类型号 中断功能IRQ0 08H 时钟IRQ1 09H 键盘IRQ2 0AH 保留IRQ3 OBH 串行口2IRQ4 0CH 串行口1IRQ5 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并行打印机2、这8个中断源的中断请求信号线IRQ0IRQ7在主机的62线ISA总线插座中可以引出,系统已经设定为中断请求信号为边沿触发、普通结束方式(用户
10、不需对8259再进行初始化)。3、对于PC/AT及286以上的微机内有扩展了一片8259中断控制,IRQ2用于两片8259的级连,对外提供16个中断源:中断源 中断类型号 中断功能IRQ8 070H 实时时钟IRQ9 071H 用户中断IRQ10 072H 保留IRQ11 O73H 保留IRQ12 074H 保留IRQ13 075H 协处理器IRQ14 076H 硬盘IRQ15 077H 保留4、PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断相连才能进行中断申请。中断源 中断类型号 中断功能IRQ0 08H 时钟IRQ1 0
11、9H 键盘IRQ2 0AH 保留IRQ3 OBH 串行口2IRQ4 0CH 串行口1IRQ5 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并行打印机接线图: 四.实验源程序(主要部分)和流程图源程序:7-1、直接用手动产生单脉冲作为中断请求信号,要求每按一次开关产生中断一次,在屏幕上显示一次“TPC pci card interrupt:”,冒号后面添加已经中断的次数,中断10次后程序退出。;386 以上微机适用;纯dos 下才能使用;tasm4.1 或以上编译data segmentioportequ 0b800h-0280h ;tpc卡中设备的io地址int_vect EQU 0b
12、H ;中断0-7 的向量为:08h-0fh,中断8-15 的向量为:70h-77hirq_mask_2_7 equ b ;中断掩码,中断0-7 时从低至高相应位为零,中断8-15 时第2 位为零irq_mask_9_15 equ b;中断0-7 时全一,中断8-15 时从低至高相应位为零ioport_cent equ 0bc00h ;tpc 卡中9054 芯片的io 地址csreg dw ?ipreg dw ? ;旧中断向量保存空间irq_times dw ? ;中断计数num dw ?msg1 db 0dh,0ah,TPC pci card Interrupt,0dh,0ah,$msg2 d
13、b 0dh,0ah,Press any key to exit!,0dh,0ah,$msg3 db 0dh,0ah,Press DMC to interrupt 10 times and exit!,0dh,0ah,$data endsstacks segmentdb 100 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacks,es:datamain proc far;Enable Local Interrupt Inputstart:climov ax,datamov ds,axmov es,axmov ax,stac
14、ksmov ss,axmov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,使能中断in ax,dxor ax,0900hout dx,axmov al,int_vect ;保存原中断向量mov ah,35hint 21hmov ax,esmov csreg,axmov ipreg,bxmov ax,cs ;设置新中断向量mov ds,axmov dx,offset int_procmov al,int_vectmov ah,25hint 21hin al, 21h ;设置中断掩码and al, irq_mask_2_7out 21h, alin al, 0
15、a1hand al, irq_mask_9_15out 0a1h, almov ax,datamov ds,axmov dx,offset msg2mov ah,09hint 21hmov dx,offset msg3mov ah,09hint 21hmov irq_times,8mov num,8stiloop1: cmp irq_times,0 ;等待中断并判断中断8 次后退出jz exitmov ah,1int 16hjnz exit ;按任意键退出call dispjmp loop1exit: climov bl, irq_mask_2_7 ;恢复中断掩码not blin al, 21
16、hor al, blout 21h, almov bl, irq_mask_9_15not blin al, 0a1hor al, blout 0a1h, almov dx,ipreg ;恢复原中断向量mov ax,csregmov ds,axmov ah,25hmov al,int_vectint 21hmov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,关闭中断in ax,dxand ax,0f7ffhout dx,axmov ax,4c00hint 21hmain endpdisp proc nearpush dspush dxpush cxpush
17、 axmov cx,irq_timesmov ax,cxmov bx,numcmp ax,bx jz disp1mov ax,data ;显示提示信息mov ds,axmov dx,offset msg1mov ah,09hint 21hmov num,cxdisp1:pop axpop cxpop dxpop dsretdisp endpint_proc proc far ;中断处理程序dec irq_timesmov al,20h ;Send EOIout 0a0h,alout 20h,almov cx,0ffffh loop2: nop loop loop2iretint_proc en
18、dpcode endsend start-7-2、(输出)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:依次输出01H、02H、04H、08H、10H、20H、40H、80H使L0L7依次发光,中断8次结束。;386 以上微机适用;纯dos 下才能使用;tasm4.1 或以上编译data segmentioportequ 0b800h-0280h ;tpc卡中设备的io地址io8255a equ ioport+288hio8255d equ ioport+28bhint_vect EQU 0bH ;中断0-7 的向量为:08h-0fh,中断8-15 的向量为:7
19、0h-77hirq_mask_2_7 equ b ;中断掩码,中断0-7 时从低至高相应位为零,中断8-15 时第2 位为零irq_mask_9_15 equ b;中断0-7 时全一,中断8-15 时从低至高相应位为零ioport_cent equ 0bc00h ;tpc 卡中9054 芯片的io 地址csreg dw ?ipreg dw ? ;旧中断向量保存空间irq_times dw ? ;中断计数num dw ?led db 80h,40h,20h,10h,08h,04h,02h,01hmsg1 db 0dh,0ah,TPC pci card Interrupt,0dh,0ah,$msg
20、2 db 0dh,0ah,Press any key to exit!,0dh,0ah,$msg3 db 0dh,0ah,Press DMC to interrupt 10 times and exit!,0dh,0ah,$data endsstacks segmentdb 100 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacks,es:datamain proc far;Enable Local Interrupt Inputstart:climov ax,datamov ds,axmov es,axmov ax,s
21、tacksmov ss,axmov dx,io8255dmov al,80hout dx,almov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,使能中断in ax,dxor ax,0900hout dx,axmov al,int_vect ;保存原中断向量mov ah,35hint 21hmov ax,esmov csreg,axmov ipreg,bxmov ax,cs ;设置新中断向量mov ds,axmov dx,offset int_procmov al,int_vectmov ah,25hint 21hin al, 21h ;设置中断掩码and
22、 al, irq_mask_2_7out 21h, alin al, 0a1hand al, irq_mask_9_15out 0a1h, almov ax,datamov ds,axmov dx,offset msg2mov ah,09hint 21hmov dx,offset msg3mov ah,09hint 21hmov irq_times,8mov num,8stiloop1: cmp irq_times,0 ;等待中断并判断中断8 次后退出jz exitmov ah,1int 16hjnz exit ;按任意键退出call dispjmp loop1exit: climov bl,
23、 irq_mask_2_7 ;恢复中断掩码not blin al, 21hor al, blout 21h, almov bl, irq_mask_9_15not blin al, 0a1hor al, blout 0a1h, almov dx,ipreg ;恢复原中断向量mov ax,csregmov ds,axmov ah,25hmov al,int_vectint 21hmov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,关闭中断in ax,dxand ax,0f7ffhout dx,axmov ax,4c00hint 21hmain endpdis
24、p proc nearpush dspush dxpush cxpush axmov cx,irq_timesmov ax,cxmov bx,numcmp ax,bx jz disp1mov si,offset ledadd si,cxmov al,simov dx,io8255aout dx,almov num,cxdisp1:pop axpop cxpop dxpop dsretdisp endpint_proc proc far ;中断处理程序dec irq_timesmov al,20h ;Send EOIout 0a0h,alout 20h,almov cx,0ffffh loop2
25、: nop loop loop2iretint_proc endpcode endsend start-7-3、(输入)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:读取逻辑开关预制的ASCII码,在屏幕上显示其对应的字符,中断8次结束。;386 以上微机适用;纯dos 下才能使用;tasm4.1 或以上编译data segmentioportequ 0b800h-0280h ;tpc卡中设备的io地址io8255a equ ioport+288hio8255d equ ioport+28bhint_vect EQU 0bH ;中断0-7 的向量为:08h-0f
26、h,中断8-15 的向量为:70h-77hirq_mask_2_7 equ b ;中断掩码,中断0-7 时从低至高相应位为零,中断8-15 时第2 位为零irq_mask_9_15 equ b;中断0-7 时全一,中断8-15 时从低至高相应位为零ioport_cent equ 0bc00h ;tpc 卡中9054 芯片的io 地址csreg dw ?ipreg dw ? ;旧中断向量保存空间irq_times dw ? ;中断计数num dw ?msg1 db 0dh,0ah,TPC pci card Interrupt,0dh,0ah,$msg2 db 0dh,0ah,Press any
27、key to exit!,0dh,0ah,$msg3 db 0dh,0ah,Press DMC to interrupt 10 times and exit!,0dh,0ah,$data endsstacks segmentdb 100 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacks,es:datamain proc far;Enable Local Interrupt Inputstart:climov ax,datamov ds,axmov es,axmov ax,stacksmov ss,axmov dx,io
28、8255dmov al,90hout dx,almov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,使能中断in ax,dxor ax,0900hout dx,axmov al,int_vect ;保存原中断向量mov ah,35hint 21hmov ax,esmov csreg,axmov ipreg,bxmov ax,cs ;设置新中断向量mov ds,axmov dx,offset int_procmov al,int_vectmov ah,25hint 21hin al, 21h ;设置中断掩码and al, irq_mask_2_7out 21
29、h, alin al, 0a1hand al, irq_mask_9_15out 0a1h, almov ax,datamov ds,axmov dx,offset msg2mov ah,09hint 21hmov dx,offset msg3mov ah,09hint 21hmov irq_times,8mov num,8stiloop1: cmp irq_times,0 ;等待中断并判断中断8 次后退出jz exitmov ah,1int 16hjnz exit ;按任意键退出call dispjmp loop1exit: climov bl, irq_mask_2_7 ;恢复中断掩码no
30、t blin al, 21hor al, blout 21h, almov bl, irq_mask_9_15not blin al, 0a1hor al, blout 0a1h, almov dx,ipreg ;恢复原中断向量mov ax,csregmov ds,axmov ah,25hmov al,int_vectint 21hmov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,关闭中断in ax,dxand ax,0f7ffhout dx,axmov ax,4c00hint 21hmain endpdisp proc nearpush dspush
31、dxpush cxpush axmov cx,irq_timesmov ax,cxmov bx,numcmp ax,bx jz disp1mov dx,io8255ain al,dxmov dl,almov ah,02hint 21hmov num,cxdisp1:pop axpop cxpop dxpop dsretdisp endpint_proc proc far ;中断处理程序dec irq_timesmov al,20h ;Send EOIout 0a0h,alout 20h,almov cx,0ffffh loop2: nop loop loop2iretint_proc endpcode endsend start-流程图: 五. 实验总结 通过本次实验,掌握了对中断程序的调试,掌握了PC中断处理系统的基本原理,学习了中断服务程序的编写。专心-专注-专业