8259DMA interrupt

SSTACK	SEGMENT STACK
		DW 32 DUP(?)
SSTACK	ENDS
CODE	SEGMENT
		ASSUME CS:CODE
START:	PUSH DS
		MOV AX, 0000H
		MOV DS, AX
		MOV	AX, OFFSET MIR7
		MOV SI, 003CH				;0FH
		MOV [SI], AX
		MOV AX, CS
		MOV SI, 003EH
		MOV [SI], AX
		MOV AX, OFFSET MIR6
		MOV SI, 00001110B*4			;0EH
		MOV [SI], AX
		MOV AX, CS
		MOV SI, 00001110B*4+2
		MOV [SI], AX
		
		CLI
		POP DS
		;INIT THE MAIN
		MOV AL, 11H
		OUT 20H, AL
		MOV AL, 08H
		OUT 21H, AL
		MOV AL, 04H
		OUT 21H, AL
		MOV AL, 01H
		OUT 21H, AL
		MOV AL, 2FH		;00101111B
		OUT 21H, AL
		STI
AA1:	NOP
		JMP AA1
MIR7:	PUSH AX
		STI
		MOV AH, 01H
		MOV AL, '7'
		INT 10H
		MOV AH, 01H
		MOV AL, ' '
		INT 10H
		MOV AL, 20H			;ABLE TO INTERUPTE
		OUT 20H, AL
		POP AX
		IRET
MIR6:	PUSH AX
		STI
		MOV AH, 01H
		MOV AL, '6'
		INT 10H
		MOV AH, 01H
		MOV AL, ' '
		INT 10H
		MOV AL, 20H			;ABLE TO INTERUPTE
		OUT 20H, AL
		POP AX
		IRET
CODE	ENDS
		END START



8259主从片中断,i386

SSTACK	SEGMENT STACK
		DW 32 DUP(?)
SSTACK	ENDS
CODE	SEGMENT
		ASSUME CS:CODE
START:	PUSH DS
		MOV AX, 0000H
		MOV DS, AX
		MOV	AX, OFFSET MIR7
		MOV SI, 003CH
		MOV [SI], AX
		MOV AX, CS
		MOV SI, 003EH
		MOV [SI], AX
		MOV AX, OFFSET SIR1
		MOV SI, 00C4H
		MOV [SI], AX
		MOV AX, CS
		MOV SI, 00C6H
		MOV [SI], AX
		CLI
		POP DS
		;INIT THE MAIN 8259
		MOV AL, 11H
		OUT 20H, AL
		MOV AL, 08H
		OUT 21H, AL
		MOV AL, 04H
		OUT 21H, AL
		MOV AL, 01H
		OUT 21H, AL
		;INIT THE EXTRA 8259
		MOV AL, 11H
		OUT 0A0H, AL
		MOV AL, 30H
		OUT 0A1H, AL
		MOV AL, 02H
		OUT 0A1H, AL
		MOV AL, 01H
		OUT 0A1H, AL
		MOV AL, 0FDH
		OUT 0A1H, AL
		MOV AL, 6BH
		OUT 21H, AL
		STI
AA1:	NOP
		JMP AA1
MIR7:	PUSH AX
		MOV AX, 014DH
		INT 10H
		MOV AX, 0137H
		INT 10H
		MOV AX, 0120H
		INT 10H
		MOV AL, 20H
		OUT 20H, AL
		POP AX
		IRET
SIR1:	PUSH AX
		MOV AX, 0153H
		INT 10H				;S
		MOV AX, 0131H
		INT 10H				;SHOW THE 1
		MOV AX, 0120H
		INT 10H
		MOV AL, 20H
		OUT 0A0H, AL
		OUT 20H, AL
		POP AX
		IRET
CODE	ENDS
		END START


你可能感兴趣的:(Assembler)