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

📄 h8259-1a.asm

📁 8259中断程序。接口试验程序
💻 ASM
字号:
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0020H			;intrupt port
INTPORT2 EQU 0021H
CONTPORT EQU 00DFH			;command port of diplay
DATAPORT EQU 00DEH			;data port of display
DATA1	 EQU 0580H			;display zone of intrupt times
DATA2	 EQU 0500H			;data table of LED, 16 bytes
DATA3	 EQU 0510H			;display '8259---1' zone, 8 bytes
DATA4	 EQU 0518H			;display '8259Good', 8 bytes
         ORG 1000H
	 JMP START
START:	 CALL FORMAT			;set display data
	 MOV SI,DATA3			;display '8259-1'
	 CALL LEDDISP
	 CLD
	 MOV DI,DATA1			;clear diplay RAM
	 MOV CX,08H
	 XOR AX,AX
	 REP STOSW
	 MOV AX,0H
	 MOV DS,AX
	 CALL WRINTVER			;write interrupt ver.
	 MOV AL,13H			;write ICW1-ICW4
	 MOV DX,INTPORT1
	 OUT DX,AL
	 MOV AL,08H			;interrupt ver. 08H-0FH
	 MOV DX,INTPORT2
	 OUT DX,AL
	 MOV AL,01H
	 OUT DX,AL
	 MOV AL,0F7H			;open IR3
	 OUT DX,AL
	 MOV BYTE PTR DS:[0601H],01H	;intrupe times=1
	 STI				
WATING:  JMP WATING
	 NOP
	 NOP
WRINTVER:MOV AX,0H
	 MOV ES,AX
	 MOV DI,002CH			;002CH is Ver. of IRQ3
	 LEA AX,INTIRQ3
	 STOSW
	 MOV AX,CS
	 STOSW
	 RET
INTIRQ3: PUSH AX
	 PUSH BX
	 PUSH DX
	 CLI
	 MOV AL,DS:[0601H]
	 CALL CONVERS			;change times from 0-9 to LED value
	 MOV SI,DATA1			;display times
	 CALL LEDDISP
	 ADD BYTE PTR DS:[0601H],01H	;times add 1
	 CMP BYTE PTR DS:[0601H],06H
	 JNA INTRE1
	 MOV SI,DATA4			;display '8259Good'
	 CALL LEDDISP
INTRE1:  MOV AL,20H			;intrupt over command
	 MOV DX,INTPORT1
	 OUT DX,AL
	 STI
	 POP DX
	 POP BX
	 POP AX
	 IRET
CONVERS: MOV BH,0H
	 AND AL,0FH
	 MOV BL,AL
	 MOV AL,CS:[BX+DATA2]
	 MOV BX,DATA1
	 MOV DS:[BX],AL
	 RET
LEDDISP: MOV AL,90H			;command of writting 8279A display RAM
	 MOV DX,CONTPORT
	 OUT DX,AL
	 MOV BYTE PTR DS:[0600H],00	;0600H is count, 8 LED
LED1:	 CMP BYTE PTR DS:[0600H],07H
	 JA  LED2			;if hane writed 8 LED then LED2
	 MOV BL,DS:[0600H]
	 MOV BH,0H
	 MOV AL,CS:[BX+SI]
	 MOV DX,DATAPORT
	 OUT DX,AL
	 ADD BYTE PTR DS:[0600H],01H
	 JMP LED1
LED2:	 RET
FORMAT:  MOV BX,0				;set display code of LED
	 MOV WORD PTR DS:[BX+0500H],063FH	;data table  of LED
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],4F5BH
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],6D66H
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],077DH
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],6F7FH
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],7C77H
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],5E39H
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],7179H
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],4006H	;'8259---1'
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],4040H
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],6D6FH
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],7F5BH
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],3F5EH	;'8259Good'
         ADD BX,2
	 MOV WORD PTR DS:[BX+0500H],5C3FH
         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 + -