+ -
当前位置:首页 → 问答吧 → 跪求汇编实验-可编程中断控制器(8259A)实验 在线等,先谢谢高手了,帮帮小弟吧

跪求汇编实验-可编程中断控制器(8259A)实验 在线等,先谢谢高手了,帮帮小弟吧

时间:2008-11-13

来源:互联网

(1)编程序,用手动产生的正脉冲(上升沿)作为中断申请,引到IRQ7,使得每当按动产生单个正脉冲的按钮时,在CRT上显示字符“A”
(2)编程序,用手动产生的正脉冲(上升沿)作为中断申请,引到IRQ7,使得每当按动产生单个正脉冲的按钮时,在CRT上循环显示“This is 8086 interupt。”。
(3)编程序,用手动产生的正脉冲(上升沿)作为中断申请,引到IRQ7,使得每当按动产生单个正脉冲的按钮时,在CRT上显示“This is 8086 interupt。”。中断5次后结束

作者: dlmuliuyang   发布时间: 2008-11-13

可怜的孩子,快起来吧,
这些都在书上写了呀,求人不如求己,多看书找资料就能解决了。

作者: rzsheng   发布时间: 2009-03-20

IRQ7是25针串口中断是int 15

作者: jxc25   发布时间: 2009-03-20

1、8259A可编程中断控制器介绍及资源说明

8259A可以管理8级中断,可以将中断源优先级排队,辨别中断源,提供中断矢量。在级连使用时,可以构成64级中断系统。

8259A的编程,就是根据需求,向8259A芯片中写入初始化命令字ICW1-ICW4以及操作命令字OCW1-OCW3。

系统提供了两片8259A芯片,一片是与控制系统公用,(在实验板的左下方),级连时作为主片,口地址为20h,21h,另一片在实验板中上方,口地址为00h,01h。

中断源用实验板中的R-S触发器(在实验板的右侧)产生,四个引脚,kk1+,kk1-,kk2+,kk2-。

 

2、8259A编程说明

  a)、8259A初始化编程

   
  b)、系统的8259A初始化参数:

  ICW1:13h,ICW2:08h,ICW3:不用,ICW4:0Dh

  即单片、要ICW4、向量从8开始,缓冲方式、正常EOI。

c)、系统的8259A的0号,4号中断被系统使用,(时钟和串口使用),

  编程的时候,不要用它们,也不要屏蔽它们。其他中断都可以使用。

  d)、由于系统加载程序是从0000:2000开始,所以中断服务程序的地址

  偏移量要注意处理一下,偏移量加上2000 h。

 

3、 实验一:单片8259A的中断实验

  a)、实验线路图:

   
  b)、程序流程图

(由于用的是系统的8259A片,系统已经初始化过了,这个程序不

  用再次初始化了)

   
   

 

c)、参考程序8259A1.asm

STACK SEGMENT STACK

  DW 64 DUP(?)

STACK ENDS

 

CODE SEGMENT

  ASSUME CS:CODE

start:  

  PUSH DS

;设置irq7中断服务程序地址

;中断服务地址放在0000:003c-0000:003f

  MOV AX,0000H

  MOV DS,AX

  MOV AX,OFFSET IRQ7

  ADD AX,2000H

  MOV SI,003CH

  MOV [SI],AX

  MOV AX,0000H

  MOV SI,003EH

  MOV [SI],AX

  CLI

  POP DS

;读IMR,去掉对irq7的屏蔽,再写入 IMR  

  IN AL,21H

  AND AL,7FH

  OUT 21H,AL

;设置中断服务次数  

  MOV CX,000AH

A1: 

  CMP CX,0000H

  JNZ A2

;10次服务后,重设IMR,屏蔽Irq7 

  IN AL,21H

  OR AL,80H

  OUT 21H,AL

  STI ;开中断

  HLT ;处理器暂停,等待PC机操作

A2: 

  STI ;循环,等待中断

  JMP A1

 

;中断服务中,调用bios 显示功能,显示7和于一个空格,中断次数减一

IRQ7 proc near 

  MOV AX,0137H

  INT 10H

  MOV AX,0120H

  INT 10H

  DEC CX

;正常EOI,通知8259A此次服务结束  

  MOV AL,20H

  OUT 20H,AL

  CLI

  IRET 

IRQ7 endp  

CODE ENDS

  END START

  d)、实验步骤:

  1)、接好试验线路

  2)、编写修改程序,编译连接,加载到0000:2000

  3)、运行程序g=0000:2000

  4)、按动KK2开关,屏幕上将有“7 ”显示,直到10次,按“停止”结束程序,返回控制。

 给你参考哈,这是输出10次‘7’的程序哈!

作者: xineraimaomao   发布时间: 2010-12-09