计算机组成原理实验 · 2021年12月26日 0

计算机组成原理——8259A中断控制器实验

一、实验目的与要求

了解8259A的内部结构、工作原理;了解8259A与8086的接口逻辑;掌握对8259A的初始化编程方法,了解8086是如何响应中断、退出中断的。

复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验设备

SUN系列实验仪一套、PC机一台

三、实验内容

1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断,8086计数中断次数,显示于F5区的数码管上

四、实验原理图

五、实验步骤

1、连线说明:

B3区:CS、A0——A3区:CS3、A0
B3区:INT、INTA——A3区:INTR、INTA
B3区:IR0——B2区:单脉冲
D3区:CS、A0、A1——A3区:CS1、A0、A1
D3区:PC0、PC1——F5区:KL1、KL2
D3区:JP20、B、C——F5区:A、B、C

2、运行程序

3、上下拨动单脉冲开关,拨动二次,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。

六、演示程序      

 .MODELTINY 
EXTRNInitKeyDisplay:NEAR, Display8:NEAR
IO8259_0EQU0250H 
IO8259_1   EQU0251H 
 .STACK100 
 .DATA  
BUFFERDB8 DUP(?) 
CounterDB ? 
ReDisplayFlagDB0 
 .CODE  
START:MOVAX,@DATA 
 MOVDS,AX 
 MOVES,AX 
 NOP  
 CALLInitKeyDisplay;对键盘、数码管控制器8255初始化
 CALLInit8259 
 CALL   WriIntver 
 MOVCounter,0;中断次数
 MOVReDisplayFlag,1;需要显示
 STI;开中断 
START1:LEASI,Buffer 
 CALLDisplay8 
 CMPReDisplayFlag,0 
 JZSTART1 
 CALLLedDisplay 
 MOVReDisplayFlag,0 
 JMPSTART1 
Init8259PROC   NEAR 
 MOVDX,IO8259_0 
 MOVAL,13H 
 OUTDX,AL 
 MOVDX,IO8259_1 
 MOVAL,08H 
 OUTDX,AL 
 MOVAL,09H 
 OUTDX,AL 
 MOVAL,0FEH 
 OUTDX,AL 
 RET  
Init8259   ENDP  
WriIntverPROC   NEAR 
 PUSH   ES 
 MOVAX,0 
 MOVES,AX 
 MOVDI,20H 
 LEAAX,INT_0 
 STOSW  
 MOVAX,CS 
 STOSW  
 POPES 
 RET  
WriIntverENDP  
LedDisplayPROCNEAR 
 MOVAL,Counter 
 MOVAH,AL 
 ANDAL,0FH 
 MOVBuffer,AL 
 ANDAH,0F0H 
 RORAH,4 
 MOVBuffer + 1,AH 
 MOVBuffer + 2,10H;高六位不需要显示
 MOVBuffer + 3,10H 
 MOVBuffer + 4,10H 
 MOVBuffer + 5,10H 
 MOVBuffer + 6,10H 
 MOVBuffer + 7,10H 
 RET  
LedDisplayENDP  
INT_0: PUSHDX 
 PUSH   AX 
 MOVAL,Counter 
 ADDAL,1 
 DAA  
 MOVCounter,AL 
 MOVReDisplayFlag,1 
 MOVDX,IO8259_0 
 MOVAL,20H 
 OUTDX,AL 
 POPAX 
 POPDX 
 IRET  
    
 ENDSTART