8255方式1+8259(中断方式)程序设计实验 应用

CODE SEGMENT
    ASSUME CS:CODE
START:CLI  ;关中断
    MOV DS,AX  ;给data段地址
    
    MOV DX,200H  ;ICW1是0端口
    MOV AL,11H   ;控制字11H 边沿触发00010001
    OUT DX,AL    ;设置ICW1
    MOV DX,201H  ;写ICW2,ICW2是1端口 中断向量
    MOV AL,0DH   ;设置主8259的中断类型号
    OUT DX,AL    ;设置ICW2
    MOV AL,05H   ;ICW3,IR5
    OUT DX,AL    
    MOV AL,01H   ;写ICW4 EOI结束中断
    OUT DX,AL

    ;设置控制字223H
    MOV DX,223H
    MOV AL,0A0H
    OUT DX,AL
    MOV AL,0DH
    OUT DX,AL

    MOV DX,201H
    IN AL,DX  ;读IMR
    AND AL,0DFH  ;开放IR5中断 DFH(1101 1111B)
    OUT DX,AL

    MOV AX,0
    MOV DS,AX  ;中断向量码写入内存0段区域
    LEA AX,INT_PROC  ;转到中断命令 写中断向量
    ;写中断向量地址
    MOV BX,5  ;IR5
    MOV SI,08H  ;BASE=08H
    ADD SI,BX
    ;地址乘4 找段地址
    ADD SI,SI
    ADD SI,SI
    MOV [SI],AX  ;IP地址 置入中断服务程序入口地址的偏移量IP
    MOV AX,CS
    MOV [SI+2],AX  ;CS设置中断向量地址,置入中断服务程序入口地址的段基地址CS
    
    MOV BL,1
    STI  ;开中断
    L: JMP L  ;自身循环,主程序

INT_PROC:
    ;灯亮
    MOV AL,BL  ;中断处理程序
    MOV DX,220H
    OUT DX,AL  ;A口输出

    SHL BL,1   ;左移一位

    MOV DX,200H
    MOV AL,20H   ;向8259发出EOI结束中断
    OUT DX,AL
    MOV DX,201H  ;读IMR
    JNC NEXT    ;高位不为0时转移到NEXT
    
    ;中断结束
    IN AL,DX
    OR AL,20H   ;屏蔽位  关闭IR5
    OUT DX,AL
    STI    ;开中断 允许中断嵌套
    MOV AH,4CH
    INT 21H   ;返回DOS
NEXT:
    IRET       ;中断返回
CODE ENDS
   END START

电路图如下

 备注:

利用SHL语句 将结果左移一位,判断最高位是否为1再进行是否循环的语句,完成逻辑开关的设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值