1-4中断控制器 8259 实验
  0qsdCZ1b0DY6 2023年11月13日 17 0
EXTRN InitKeyDisplay:NEAR, Display8A:NEAR
IO8259_0 EQU 0250H
IO8259_1 EQU 0251H
_STACK SEGMENT STACK
DW 100 DUP(?)
_STACK ENDS
_DATA SEGMENT WORD PUBLIC 'DATA'
BUFFER DB 8 DUP(?)
Counter DB ?
num DW ?
ReDisplayFlag DB 0
_DATA ENDS
CODE SEGMENT
START PROC NEAR
ASSUME CS:CODE, DS:_DATA, SS:_STACK
MOV AX,_DATA
MOV DS,AX
MOV ES,AX
NOP
CALL InitKeyDisplay
CALL Init8259
CALL WriIntver
MOV Counter,0 							;中断次数
MOV num,5 									;主程序次数, 不能为 0
MOV ReDisplayFlag,1 				;需要显示
STI ;开中断
START1: LEA SI,Buffer
CALL LedDisplay
CALL Display8A
DEC num
CMP num,0
JNZ START1
MOV num,2000
JMP START1
Init8259 PROC NEAR 					;编写 8259A 的初始化程序
MOV DX,IO8259_0 						; 8259A 边沿触发, 单片使用, 需要设置 ICW4
MOV AL,13H 									;非缓冲方式, 非自动 EOI
OUT DX,AL 									;开放 IR0 中断请求, 其余屏蔽
MOV DX,IO8259_1 ;
MOV AL,08H
OUT DX,AL
MOV AL,01H
OUT DX,AL
MOV AL,0FEH
OUT DX,AL
RET
Init8259 ENDP
WriIntver PROC NEAR
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H
LEA AX,INT_0
STOSW
MOV AX,CS
STOSW
POP ES
RET
WriIntver ENDP
LedDisplay PROC NEAR
MOV AX,num
MOV BL,200
DIV BL
AND AL,0FH
MOV Buffer + 1,AL
MOV AL,AH
XOR AH,AH
MOV BL,20
DIV BL
AND AL,0FH
MOV Buffer,AL
MOV AL,Counter
MOV AH,AL
AND AL,0FH
MOV Buffer + 2,AL
AND AH,0F0H
ROR AH,4
MOV Buffer + 3,AH
MOV Buffer + 4,10H 					;高四位不需要显示
MOV Buffer + 5,10H
MOV Buffer + 6,10H
MOV Buffer + 7,10H
RET
LedDisplay ENDP
INT_0: PUSH DX
PUSH AX
MOV AL,Counter
ADD AL,1
DAA
MOV Counter,AL
MOV DX,IO8259_0
MOV AL,20H
OUT DX,AL
POP AX
POP DX
IRET
START ENDP
CODE ENDS
END START

实验原理图

1-4中断控制器 8259 实验_中断请求

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  JBfJ5LpBD0AJ   2023年11月13日   18   0   0 初始化链表#define
0qsdCZ1b0DY6