logo资料库

东南大学微机原理纯dos界面下的中断实验报告.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
《微机实验及课程设计》
实验报告
三.实验原理与接线
原理:
1、PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断
中断源 中断类型号 中断功能
IRQ0 08H 时钟
IRQ1 09H 键盘
IRQ2 0AH 保留
IRQ3 OBH 串行口2
IRQ4 0CH 串行口1
IRQ5 0DH 硬盘
IRQ6 0EH 软盘
IRQ7 0FH 并行打印机
2、这8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已经设
3、对于PC/AT及286以上的微机内有扩展了一片8259中断控制,IRQ2用于两片8259的级连,
中断源 中断类型号 中断功能
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 09H 键盘
IRQ2 0AH 保留
IRQ3 OBH 串行口2
IRQ4 0CH 串行口1
IRQ5 0DH 硬盘
IRQ6 0EH 软盘
IRQ7 0FH 并行打印机
接线图:
四.实验源程序(主要部分)和流程图
源程序:
流程图:
五. 实验结果以及遇到的问题和解决办法
这次实验要求在纯dos的环境下进行,我们是第一次尝试,遇到了许多问题,无法找到文件无法运行。后来老师
《微机实验及课程设计》实验报告 学号 22010203 东南大学 《微机实验及课程设计》 实验报告 实验七 中断(8255 方式 1) 姓 名: 孟广婵 学 号: 22010203 专 业: 测控技术与仪器 实 验 室: 计算机硬件技术 实验时间: 2012 年 05 月 24 日 报告时间: 2012 年 05 月 24 日 评定成绩: 审阅教师: 0
《微机实验及课程设计》实验报告 学号 22010203 一. 实验目的 1、掌握PC机中断处理系统的基本原理。 2、学会编写中断服务子程序。 3、掌握8255工作方式1时的使用及编程。 4、学会编写中断服务子程序。 二. 实验内容 card interrupt:”,冒号后面添加已经中断的次数,中断10次后程序退出。 必做: 7-1、直接用手动产生单脉冲作为中断请求信号,要求每按一次开关产生中断一次,在屏幕上显示一次“TPC pci 选做: 7-2、(输出)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:依次输出 01H、02H、04H、08H、10H、20H、40H、80H使L0~L7依次发光,中断8次结束。 7-3、(输入)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:读取逻辑 开关预制的ASCII码,在屏幕上显示其对应的字符,中断8次结束。 三.实验原理与接线 原理: 1、PC 机用户可使用的硬件中断只有可屏蔽中断,由 8259 中断控制器管理。中断控制器用于接收外部的中 断请求信号,经过优先级等处理后向 CPU 发出可屏蔽中断请求。IBMPC/XT 机中有一片 8259 中断控制器对 外可以提供 8 个中断源: 中断源 中断类型号 中断功能 IRQ0 08H 时钟 IRQ1 09H 键盘 IRQ2 0AH 保留 IRQ3 OBH 串行口 2 IRQ4 0CH 串行口 1 IRQ5 0DH 硬盘 IRQ6 0EH 软盘 IRQ7 0FH 并行打印机 2、这 8 个中断源的中断请求信号线 IRQ0~IRQ7 在主机的 62 线 ISA 总线插座中可以引出,系统已经设定为 中断请求信号为边沿触发、普通结束方式(用户不需对 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 保留 1
《微机实验及课程设计》实验报告 学号 22010203 4、PCI 总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过 P&P 的设置来和某一根中 断相连才能进行中断申请。 中断源 中断类型号 中断功能 IRQ0 08H 时钟 IRQ1 09H 键盘 IRQ2 0AH 保留 IRQ3 OBH 串行口 2 IRQ4 0CH 串行口 1 IRQ5 0DH 硬盘 IRQ6 0EH 软盘 IRQ7 0FH 并行打印机 接线图: 2
《微机实验及课程设计》实验报告 学号 22010203 四.实验源程序(主要部分)和流程图 源程序: 7-1、直接用手动产生单脉冲作为中断请求信号,要求每按一次开关产生中断一次,在屏幕上显示一次“TPC pci interrupt:”,冒号后面添加已经中断的次数,中断10次后程序退出。 card equ 0b800h-0280h ;tpc卡中设备的io地址 ;386 以上微机适用 ;纯dos 下才能使用 ;tasm4.1 或以上编译 data segment ioport int_vect EQU 0bH ;中断0-7 的向量为:08h-0fh,中断8-15 的向量为:70h-77h irq_mask_2_7 equ 11110111b ;中断掩码,中断0-7 时从低至高相应位为零,中断8-15 时第2 位为零 irq_mask_9_15 equ 11111111b;中断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 key to exit!',0dh,0ah,'$' msg3 db 0dh,0ah,'Press DMC to interrupt 10 times and exit!',0dh,0ah,'$' data ends stacks segment db 100 dup (?) stacks ends code segment assume cs:code,ds:data,ss:stacks,es:data main proc far 3
《微机实验及课程设计》实验报告 学号 22010203 ;Enable Local Interrupt Input start:cli mov ax,data mov ds,ax mov es,ax mov ax,stacks mov ss,ax mov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,使能中断 in ax,dx or ax,0900h out dx,ax mov al,int_vect ;保存原中断向量 mov ah,35h int 21h mov ax,es mov csreg,ax mov ipreg,bx mov ax,cs ;设置新中断向量 mov ds,ax mov dx,offset int_proc mov al,int_vect mov ah,25h int 21h in al, 21h ;设置中断掩码 and al, irq_mask_2_7 out 21h, al in al, 0a1h and al, irq_mask_9_15 out 0a1h, al mov ax,data mov ds,ax mov dx,offset msg2 mov ah,09h int 21h mov dx,offset msg3 mov ah,09h int 21h mov irq_times,8 mov num,8 sti loop1: cmp irq_times,0 ;等待中断并判断中断8 次后退出 jz exit mov ah,1 int 16h 4
《微机实验及课程设计》实验报告 学号 22010203 ;按任意键退出 jnz exit call disp jmp loop1 exit: cli mov bl, irq_mask_2_7 ;恢复中断掩码 not bl in al, 21h or al, bl out 21h, al mov bl, irq_mask_9_15 not bl in al, 0a1h or al, bl out 0a1h, al mov dx,ipreg ;恢复原中断向量 mov ax,csreg mov ds,ax mov ah,25h mov al,int_vect int 21h mov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,关闭中断 in ax,dx and ax,0f7ffh out dx,ax mov ax,4c00h int 21h main endp disp proc near push ds push dx push cx push ax mov cx,irq_times mov ax,cx mov bx,num cmp ax,bx jz disp1 mov ax,data mov ds,ax mov dx,offset msg1 mov ah,09h int 21h mov num,cx disp1: ;显示提示信息 5
《微机实验及课程设计》实验报告 学号 22010203 pop ax pop cx pop dx pop ds ret disp endp int_proc proc far ;中断处理程序 dec irq_times mov al,20h ;Send EOI out 0a0h,al out 20h,al mov cx,0ffffh loop2: nop loop loop2 iret int_proc endp code ends end start ------------------------------------------------------------------------------------------- 7-2、(输出)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:依次输出 01H、02H、04H、08H、10H、20H、40H、80H使L0~L7依次发光,中断8次结束。 equ 0b800h-0280h ;tpc卡中设备的io地址 ;386 以上微机适用 ;纯dos 下才能使用 ;tasm4.1 或以上编译 data segment ioport io8255a equ ioport+288h io8255d equ ioport+28bh int_vect EQU 0bH ;中断0-7 的向量为:08h-0fh,中断8-15 的向量为:70h-77h irq_mask_2_7 equ 11110111b ;中断掩码,中断0-7 时从低至高相应位为零,中断8-15 时第2 位为零 irq_mask_9_15 equ 11111111b;中断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,01h msg1 db 0dh,0ah,'TPC pci card Interrupt',0dh,0ah,'$' msg2 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 ends 6
《微机实验及课程设计》实验报告 学号 22010203 stacks segment db 100 dup (?) stacks ends code segment assume cs:code,ds:data,ss:stacks,es:data main proc far ;Enable Local Interrupt Input start:cli mov ax,data mov ds,ax mov es,ax mov ax,stacks mov ss,ax mov dx,io8255d mov al,80h out dx,al mov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,使能中断 in ax,dx or ax,0900h out dx,ax mov al,int_vect ;保存原中断向量 mov ah,35h int 21h mov ax,es mov csreg,ax mov ipreg,bx mov ax,cs ;设置新中断向量 mov ds,ax mov dx,offset int_proc mov al,int_vect mov ah,25h int 21h in al, 21h ;设置中断掩码 and al, irq_mask_2_7 out 21h, al in al, 0a1h and al, irq_mask_9_15 out 0a1h, al mov ax,data mov ds,ax mov dx,offset msg2 mov ah,09h int 21h mov dx,offset msg3 7
分享到:
收藏