⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8259.asm

📁 8259中断程序。接口试验程序
💻 ASM
字号:
CODE SEGMENT
ASSUME CS:CODE
	INTPORT1 EQU 0020H	;中断口
	INTPORT2 EQU 0021H
	TCONTRO EQU 0073H	;8255命令口
	TB EQU 0071H		;8255 B口
	CONTPORT EQU 00DFH	;8279命令口
	DATAPORT EQU 00DEH	;8279数据口
	DATA1	 EQU 0500H	;显示 ‘8259-A03’数据区
	ORG 1000H		;代码区开始
JMP START
START:  JMP MAIN
MAIN:   CALL FORMAT
	CALL LEDDISP
	MOV AX,0H
	MOV DS,AX
	CALL WRINTVER		;置中断矢量
	MOV DX, TCONTRO		;8255初始化
	MOV AL, 0E1H
	OUT DX, AL
	MOV DX, INTPORT1	;8259A初始化ICW1
	MOV AL, 13H		;电平触发则1B
	OUT DX,,AL
	MOV DX,	INTPORT2	;8259A初始化ICW2
	MOV AL, 08H
	OUT DX, AL
	MOV AL, 01H		;8259A初始化ICW4
	OUT DX, AL
	MOV AL, 0F7H		;开IR3的中断
	OUT DX, AL
	MOV CX, 00FAH
	STI			;开CPU的中断
WATING:JMP WATING		;主程序,死等待
WRINTVER:
	MOV AX,0H
	MOV ES,AX
	MOV DI,002CH		;置中断矢量
	LEA AX,INTIRQ3
	STOSW
	MOV AX,CS
	STOSW
	RET
INTIRQ3:
	PUSH AX
	PUSH DX
	PUSH DI			;保护现场
	CLI			;关中断
	MOV AX, CX		;交替点亮LED指示灯
	AND AL, 01H
	MOV DX, TB
	OUT DX, AL
	DEC CX
	CMP CX, 00H
	JZ  RE
	MOV AL,20H		;如果是非自动结束,则发中断结束命令
	MOV DX,INTPORT1
	OUT DX,AL
	STI			;开中断
	POP DI
	POP DX
	POP AX			;恢复现场
	IRET
RE:	HLT
LEDDISP:MOV AL, 90H
	MOV DX, CONTPORT
	OUT DX, AL
	MOV BYTE PTR DS: [0600H],00

LED1:   CMP BYTE PTR DS: [0600H], 07H
	JA  LED2
	MOV BL, DS: [0600H]
	MOV BH, 0H
	MOV AL, CS: [BX+DATA1]
	MOV DX, DATAPORT
	OUT DX, AL
	ADD BYTE PTR DS: [0600H], 01H
	JNZ  LED1
LED2:   RET

FORMAT: MOV BX, 0
	MOV WORD PTR DS: [BX+0500H], 3F4FH  ;’8259-A03’
	ADD BX, 2
	MOV WORD PTR DS: [BX+0500H], 4077H
	ADD BX, 2
	MOV WORD PTR DS: [BX+0500H], 6D6FH
	ADD BX, 2
	MOV WORD PTR DS: [BX+0500H], 7F5BH
	RET
CODE  ENDS
END  START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -