微机原理与接口技术实验报告学院:计算机与通信工程学院专业:计算机科学与技术班级:学号:姓名:实验一8259中断控制器应用实验一、实验目的1.掌握PC机中断处理系统的基本原理。
2. 掌握可编程中断控制器8259的应用编程方法。
二、实验内容1.PC机内中断实验。
使用单次脉冲模拟中断产生。
验证中断处理程序,在显示器屏幕上显示一行预设定的字符串。
2.PC机内中断嵌套实验。
使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。
3.扩展多中断源查询方式应用实验。
利用实验平台上8259控制器作为中断扩展源,编写程序对8259控制器的中断请求进行处理。
三、实验步骤1.实验1-1:PC机内中断应用实验(1)按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,屏幕显示结果截图如下:(2)自设计实验。
改变接线方式,将单次脉冲连到USB核心板上的IRQ10插孔上,参考本实验代码,编程实现IRQ10中断。
(注意:考虑PC机内中断级联的方式,参看前面的原理说明),代码如下:DA TA SEGMENTMESS DB 'IRQ10 ',0DH,0AH, '$'DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART: MOV AX, CSMOV DS, AXMOV DX,OFFSET INT10MOV AX,2572H ;设置IRQ10对应的中断向量INT 21HIN AL,21H ;读取中断屏蔽寄存器AND AL,0F3H ;开放IRQ3中断和从片OUT 21H,ALIN AL,0A1H ;从片的中断屏蔽寄存器AND AL,0FBH ;开放IRQ10中断OUT 0A1H,ALMOV CX,10STIWAIT: JMP W AITINT10: MOV AX, DATA ;中断服务程序MOV DS, AXMOV DX, OFFSET MESSMOV AH, 09 ;在屏幕上显示每次中断的提示信息INT 21HMOV AL, 20H ; 发出EOI结束中断到PC内主片的地址20H OUT 20H, ALLOOP NEXTIN AL, 21H ;读中断屏蔽寄存器,获取中断屏蔽字OR AL, 08H ;关闭IRQ3中断OUT 21H, AL ;将中断屏蔽字送到中断屏蔽寄存器STI ;置中断标志位MOV AH, 4CH ;返回DOSINT 21HNEXT: IRET ;中断返回CODE ENDSEND START调用程序代码,观察实验现象,屏幕显示截图如下:2.实验1-2:PC机内中断嵌套实验实验要求:(1)按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,观察屏幕显示结果并分析产生该现象的原因:A.按下连接IRQ的单次脉冲按键,屏幕上会显示10个3,在屏幕上10次显示未结束之前,按下连接IRQ10的单次脉冲按键,观察现象;按下IRQ时屏幕上会显示10个3,此时按下IRQ10,会直接在屏幕上显示10个10,然后结束后再显示剩余的3B.按下连接IRQ10的单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3的单次脉冲按键,观察现象。
在屏幕上显示10个10的过程中按下IRQ无反应,等到10个10全部显示完毕后才再显示10个3出现这种现象的原因是IRQ10的中断优先级高于IRQ3屏幕截图:(2)程序所有代码及注释:DA TA SEGMENTDA TA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTART:.386CLIMOV AX,CSMOV DS,AXMOV DX,OFFSET INT10 ;采用间接修改法,设置中断向量MOV AX,2572H ;设置IRQ10对应的中断向量INT 21HMOV DX,OFFSET INT3 ;采用间接修改法,设置中断向量MOV AX,250BH ;设置IRQ3对应的中断向量INT 21HIN AL,21H ;读中断屏蔽寄存器,21H是该寄存器的端口号AND AL,0F3H ;开放中断,允许从片和IRQ3OUT 21H,ALIN AL,0A1H ;读中断屏蔽寄存器,0A1H是该寄存器的端口AND AL,0FBH ;开放中断IRQ10OUT 0A1H,ALMOV CX,10 ;记中断循环次数为10次STIWAIT: JMP W AITINT10: CLI ;中断服务程序PUSHADPUSHFDMOV CX,10 ;记中断循环次数为10次NEXT10_1:MOV DX,31HMOV AH,02H ;输出DLINT 21HMOV DX,30HMOV AH,02H ;输出DLINT 21HMOV DX,20H ;发出EOI结束中断到PC内主片的地址20HMOV AH,02H ;输出DL,3INT 21HCALL DELAY1 ;等待LOOP NEXT10_1MOV DX,0DHMOV AH,02H ;输出DL,‘ ’INT 21HMOV DX,0AH ;发出EOI结束中断到PC内从片占用的是0A0H端口MOV AH,02H ;输出DL,发生中断后输出10INT 21HMOV AL,20H ;将中断屏蔽字送到中断屏蔽寄存器OUT 0A0H,AL ;从片OUT 20H,AL ;主片POPFD ;关中断,出栈,返回POPADSTIIRETINT3: CLI ;中断服务程序PUSHADPUSHFDMOV CX,10 ;记中断循环次数为10次NEXT3_1:MOV DX,33HMOV AH,02H ;输出DLINT 21HMOV DX,20H ;发出EOI结束中断到PC内主片的地址20HMOV AH,02H ;输出DL,3INT 21HCALL DELAY1 ;等待LOOP NEXT3_1MOV DX,0DHMOV AH,02H ;输出DL,‘ ’INT 21HMOV DX,0AH ;发出EOI结束中断到PC内从片占用的是0A0H端口MOV AH,02H ;发生中断输出DL,10INT 21HMOV AL,20HOUT 20H,AL ;将中断屏蔽字送到中断屏蔽寄存器OUT 0A0H,ALPOPFD ;出栈,关中断,返回POPADSTIIRETDELAY1 PROC ;控制等待部分PUSHADPUSHFDMOV CX,0FHDELAY_LOOP1:MOV BX,0FFFFHDELAY_LOOP2:DEC BXNOPJNZ DELAY_LOOP2LOOP DELAY_LOOP1POPFDPOPADDELAY1 ENDPCODE ENDSEND START3.实验1-3:扩展多中断应用实验调用程序源码文件8259-3.asm,在程序源代码中划横线的位置,请按照所学8259工作原理填写并验证,然后将所填内容写在实验报告中,并分析所填数据的形成原理。
屏幕截图:程序代码及与案例说明:;*****************************************************************; 8259中断查询方式应用实验;请根据所学原理推断横线处需填写的源代码;*****************************************************************I8259_1 EQU 2B0H ; 8259的ICW1端口地址I8259_2 EQU 2B1H ; 8259的ICW2端口地址I8259_3 EQU 2B1H ; 8259的ICW3端口地址,ICW3,ICW4,OCW1都写入奇地址中I8259_4 EQU 2B1H ; 8259的ICW4端口地址O8259_1 EQU 2B1H ; 8259的OCW1端口地址O8259_2 EQU 2B0H ; 8259的OCW2端口地址,OCW2,OCW3写入偶地址O8259_3 EQU 2B0H ; 8259的OCW3端口地址MES1 DB 'YOU CAN PLAY A KEY ON THE KEYBOARD!',0DH, 0AH, 24HMES2 DD MES1MESS1 DB 'HELLO! THIS IS INTERRUPT * 0 *!',0DH,0AH,'$'MESS2 DB 'HELLO! THIS IS INTERRUPT * 1 *!',0DH,0AH,'$'MESS3 DB 'HELLO! THIS IS INTERRUPT * 2 *!',0DH,0AH,'$'MESS4 DB 'HELLO! THIS IS INTERRUPT * 3 *!',0DH,0AH,'$'MESS5 DB 'HELLO! THIS IS INTERRUPT * 4 *!',0DH,0AH,'$'MESS6 DB 'HELLO! THIS IS INTERRUPT * 5 *!',0DH,0AH,'$'MESS7 DB 'HELLO! THIS IS INTERRUPT * 6 *!',0DH,0AH,'$'MESS8 DB 'HELLO! THIS IS INTERRUPT * 7 *!',0DH,0AH,'$'DATA ENDSSTACKS SEGMENTDB 100 DUP(?)STACKS ENDSSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKS, ES:DATA.386START: MOV AX,DATAMOV DS, AXMOV ES, AXMOV AX, STACKSMOV SS, AXMOV DX, I8259_1 ;初始化8259的ICW1MOV AL, 13H ;边沿触发、单片8259、需要ICW4,查表得到控制字OUT DX,ALMOV DX,I8259_2 ;初始化8259的ICW2MOV AL,0B0HOUT DX,ALMOV AL,03HOUT DX,ALMOV DX, O8259_1 ;初始化8259的中断屏蔽操作命令字MOV AL, 000H ;打开屏蔽位,将全部屏蔽位打开OUT DX,ALQUERY: MOV AH,1 ;判断是否有按键按下INT 16HJNZ QUIT ;有按键则退出MOV DX,O8259_3 ;向8259发送查询命令MOV AL,6CH ;01101100OUT DX,ALIN AL,DX ;读出查询字TEST AL,80H ;判断中断是否已响应,响应后对应位置0JZ QUERY ;没有响应则继续查询AND AL,07HCMP AL,00HJE IR0ISR ;若为IR0请求,跳到IR0处理程序CMP AL,01HJE IR1ISR ;若为IR1请求,跳到IR1处理程序CMP AL,02HJE IR2ISR ;若为IR2请求,跳到IR2处理程序CMP AL,03HJE IR3ISR ;若为IR3请求,跳到IR3处理程序CMP AL,04HJE IR4ISR ;若为IR4请求,跳到IR4处理程序CMP AL,05HJE IR5ISR ;若为IR5请求,跳到IR5处理程序CMP AL,06HJE IR6ISR ;若为IR6请求,跳到IR6处理程序CMP AL,07HJE IR7ISR ;若为IR7请求,跳到IR7处理程序JMP QUERYIR0ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS1 ;显示提示信息MOV AH,09INT 21HJMP EOIIR1ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS2 ;显示提示信息MOV AH,09INT 21HJMP EOIIR2ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS3 ;显示提示信息MOV AH,09INT 21HJMP EOIIR3ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS4 ;显示提示信息MOV AH,09INT 21HJMP EOIIR4ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS5 ;显示提示信息MOV AH,09INT 21HJMP EOIIR5ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS6 ;显示提示信息MOV AH,09INT 21HJMP EOIIR6ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS7 ;显示提示信息MOV AH,09INT 21HJMP EOIIR7ISR: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS8 ;显示提示信息MOV AH,09INT 21HEOI:MOV DX,O8259_2 ;向8259发送中断结束命令MOV AL, 20H ;00100000OUT DX, ALJMP QUERYQUIT: MOV AX,4C00H ;结束程序退出INT 21HCODE ENDSEND START实验二8254定时/计数器应用实验一、实验目的1. 掌握8254 的工作方式及应用编程。