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