【微机原理 实验】中断控制器8259(硬件-含汇编代码)

实验四  中断控制器8259

 

更多微机实验:https://blog.csdn.net/yxp189/column/info/39992 

                         汇编语言-微机原理与接口技术-实验

注意未经允许,请勿转载!

           转载请标明出处~

适用课程:微机原理与接口技术(实验)

选用教材:微型计算机原理与接口技术-中国科学技术大学出版社

 

一、实验目的

    1、了解Windows下中断处理过程

    2、了解中断控制器工作原理及扩展中断控制器

 

二、实验内容

用查询和中断方式分别实现控制指示灯,要求直接用手动产生的单脉冲作为中断请求信号,每按一次单脉冲产生一次中断,PC机显示中断请求信息:

中断0(IN0): mess1 db 'Hello! This is interrupt    *  0  *!',0dh,0ah,'$'

中断1(IN1): mess2 db 'Hello! This is interrupt    *  1  *!',0dh,0ah,'$'

中断2(IN2): mess3 db 'Hello! This is interrupt    *  2  *!',0dh,0ah,'$'

中断3(IN3): mess4 db 'Hello! This is interrupt    *  3  *!',0dh,0ah,'$'

中断4(IN4): mess5 db 'Hello! This is interrupt    *  4  *!',0dh,0ah,'$'

中断5(IN5): mess6 db 'Hello! This is interrupt    *  5  *!',0dh,0ah,'$'

中断6(IN6):mess7 db 'Hello! This is interrupt    *  6  *!',0dh,0ah,'$'

中断7(IN7): mess8 db 'Hello! This is interrupt    *  7  *!',0dh,0ah,'$'

 

接线:8259片选接IO地址译码Y6

      8259的INTA接VCC

      8259的请求(IN0~IN7)分别接单脉冲信号

 

三、实验电路图

实验代码

;Author:YXP
;CSDN:yxp189
;Email:yxp189@protonmail.com
;如有问题,欢迎和我联系~
;转载请标明出处~

      IOPORT  EQU       0D100H-0280H
     I8259_1  EQU       IOPORT+2B0H ;8259的ICW1端口地址
     I8259_2  EQU       IOPORT+2B1H ;8259的ICW2端口地址
     I8259_3  EQU       IOPORT+2B1H ;8259的ICW3端口地址
     I8259_4  EQU       IOPORT+2B1H ;8259的ICW4端口地址
     O8259_1  EQU       IOPORT+2B1H ;8259的OCW1端口地址
     O8259_2  EQU       IOPORT+2B0H ;8259的OCW2端口地址
     O8259_3  EQU       IOPORT+2B0H ;8259的OCW3端口地址

        DATA  SEGMENT
 
        MES1  DB        'you can play a key on the keyboard!',0DH,0AH,24H
        MES2  DD        MES1
       MESS1  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  ENDS

      STACKS  SEGMENT
              DB        100 DUP(?)
      STACKS  ENDS
      STACK1  SEGMENT   STACK
              DW        256 DUP(?)
      STACK1  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA,SS:STACKS,ES:DATA
.386
      START:  MOV       AX,DATA
              MOV       DS,AX
              MOV       ES,AX
              MOV       AX,STACKS
              MOV       SS,AX
  

              MOV       DX,I8259_1  ;初始化8259的ICW1
              MOV       AL,13H      ;边沿触发、单片8259、需要ICW4
              OUT       DX,AL

              MOV       DX,I8259_2  ;初始化8259的ICW4
              MOV       AL,0B0H     ;非自动结束EOI
              OUT       DX,AL
       ;MOV  AL,00H
       ;OUT  DX,AL
              MOV       AL,03H
              OUT       DX,AL

              MOV       DX,O8259_1  ;初始化8259的OCW1
              MOV       AL,00H      ;打开IR0和IR1的屏蔽位
              OUT       DX,AL
              LEA       DX,MES1
              MOV       AH,09
              INT       21H

      QUERY:
              MOV       AH,1        ;判断是否有按键按下
              INT       16H
              JNZ       QUIT        ;有按键则退出

              MOV       DX,O8259_3  ;向8259的OCW3发送查询命令
              MOV       AL,0CH
              OUT       DX,AL


              IN        AL,DX       ;读出查询字
              MOV       AH,AL
              AND       AL,80H
              TEST      AL,80H      ;判断中断是否已响应
              JZ        QUERY       ;没有响应则继续查询
              MOV       AL,AH
              AND       AL,07H
              CMP       AL,00H
              JE        IR0ISR      ;若为IR0请求,跳到IR0处理程序
              CMP       AL,01H
              JE        IR1ISR      ;若为IR1请求,跳到IR1处理程序
              CMP       AL,02H
              JE        IR2ISR
              CMP       AL,03H
              JE        IR3ISR
              CMP       AL,04H
              JE        IR4ISR
              CMP       AL,05H
              JE        IR5ISR
              CMP       AL,06H
              JE        IR6ISR
              CMP       AL,07H
              JE        IR7ISR
              JMP       QUERY

     IR0ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS1         ;显示提示信息
              MOV       AH,09
              INT       21H
              JMP       EOI

     IR1ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS2         ;显示提示信息
              MOV       AH,09
              INT       21H
              JMP       EOI

     IR2ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS3         ;显示提示信息
              MOV       AH,09
              INT       21H
              JMP       EOI
     IR3ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS4         ;显示提示信息
              MOV       AH,09
              INT       21H
              JMP       EOI
     IR4ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS5         ;显示提示信息
              MOV       AH,09
              INT       21H
              JMP       EOI
     IR5ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS6         ;显示提示信息
              MOV       AH,09
              INT       21H
              JMP       EOI
     IR6ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS7         ;显示提示信息
              MOV       AH,09
              INT       21H
              JMP       EOI
     IR7ISR:  MOV       AX,DATA
              MOV       DS,AX
              MOV       DX,OFFSET MESS8         ;显示提示信息
              MOV       AH,09
              INT       21H

        EOI:
              MOV       DX,O8259_2  ;向8259发送中断结束命令
              MOV       AL,20H
              OUT       DX,AL
              JMP       QUERY
       
       QUIT:  MOV       AX,4C00H    ;结束程序退出
              INT       21H


        CODE  ENDS
              END       START

 

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
16/32位微机原理汇编语言接口技术第二版csdn 是一本关于微型计算机原理、汇编语言接口技术的教材,适合想要了解和学习这些方面知识的读者。本书通过系统地介绍16位和32位微型计算机的结构、工作原理和基本操作,从而帮助读者理解微机的内部结构和运行机制。 该教材主要分为三个部分: 第一部分介绍了微机的基本原理,包括输入输出设备、存储器、央处理器等组成部分的功能和工作流程。同时,介绍了数字逻辑电路和微指令流水线的相关知识,为后续学习打下了基础。 第二部分讲解了汇编语言的基本概念和语法规则。通过学习汇编语言,读者可以了解指令的格式和操作方式,以及如何编写简汇编程序。该部分还涵盖了数据传送、算术运算、逻辑判断和流程控制等常用指令的使用方法,帮助读者掌握汇编语言的基本技巧。 第三部分介绍了微机的接口技术,包括串行通信接口、并行接口和中断控制技术等。读者可以了解不同接口的工作原理和使用方法,以及如何通过程序控制实现这些接口的功能。 通过阅读这本教材,读者可以全面了解微型计算机的原理、汇编语言接口技术,从而更好地理解计算机的工作原理和应用场景。对于计算机科学和工程技术的学生以及从事相关工作的专业人士来说,该教材是一本很好的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值