芯片8259的初始化程序怎么写

如题所述

中断控制器8259A的初始化尤为复杂,他的控制字、方式字相对于8253 8255要多。就给你一道例题吧。

某微机系统使用主、从两片8259A管理中断,从片中断请求INT与主片的IR2连接。设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为40H,端口地址为20H和21H。从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为70H,端口地址为80H和81H。试编写主片和从片的初始化程序。


根据题意,写出ICW1, ICW2, ICW3和ICW4的格式,按图6.21的顺序写入。编写初始化程序如下:

;主片8259A的初始化程序如下:

  MOV   AL, 00010001B ; 级联, 边沿触发, 需要写ICW4
  OUT   20H, AL    ; 写ICW1
  MOV   AL, 01000000B ; 中断类型号40H
  OUT   21H, AL    ; 写ICW2
  MOV   AL, 00000100B ; 主片的IR2引脚接从片
  OUT   21H, AL    ; 写ICW3
  MOV   AL, 00010001B ; 特殊完全嵌套、非缓冲、自动结束
  OUT   21H, AL    ; 写ICW4
  
;从片8259A初始化程序如下:

  MOV   AL, 00010001B ; 级联, 边沿触发, 需要写ICW4
  OUT   80H, AL    ; 写ICW1
  MOV   AL, 01110000B ; 中断类型号70H
  OUT   81H, AL    ; 写ICW2
  MOV   AL, 00000010B ; 接主片的IR2引脚
  OUT   81H, AL    ; 写ICW3
  MOV   AL, 00000001B  ; 完全嵌套、非缓冲、非自动结束
  OUT   81H, AL     ; 写ICW4

建议楼主多看看课本,理解里面控制字方式字的格式,多看看例题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-23
你说的是中断控制器8259A吧?这代码量太大了就不贴了
你去下载linux早期的内核源码,很小,地址放下面了
0.11-0.95之类的随你选,其中的system_call.s就是详细的中断初始化代码
不要下最新的内核源码,因为其中包含很多为了支援新式APIC的代码,现代APIC对8259A做了极大的扩展,因此差别很大的
书籍方面,赵炯的《Linux内核完全注释》和于渊的《自己动手写操作系统》都有相关说明,可以找找电子版

参考资料:

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网