1#£ºÖ÷Ƭ£¬2#£º´ÓƬ
2#оƬµÄINTÒý½Å½ÓµÄÊÇ1#оƬµÄIRQ2Òý½Å¡£
14£®ÉÏÌâÖУ¬Á½Æ¬8259AµÄ³õʼ»¯³ÌÐòÈçÏ£º
£»Ö÷8259A³õʼ»¯ INTA00 EQU 020H £»8259AÖ÷Ƭ¶Ë¿Ú£° INTA01 EQU 021H £»8259AÖ÷Ƭ¶Ë¿Ú£± ©« ; ±ßÑØ´¥·¢£¬¶àƬ8259¼¶Áª£¬ÐèÒªICW4 MOV AL, 11H £»ICW1 OUT INTA00, AL ; ÖжÏÀàÐÍÂëµÄ»ùֵΪ8 MOV AL, 8 £»ICW2 OUT INTA01, AL ; IRQ2½Ó´Ó8259A MOV AL, 04H £»ICW3 OUT INTA01, AL ; ȫǶÌ×·½Ê½£¬·Ç»º³å·½Ê½£¬·Ç×Ô¶¯½áÊø£¬8086/8088ģʽ MOV AL, 01H £»ICW4 OUT INTA01, AL £»´Ó8259A³õʼ»¯ INTB00 EQU 020H £»8259A´ÓƬ¶Ë¿Ú£° INTB01 EQU 021H £»8259A´ÓƬ¶Ë¿Ú£± ©« ; ±ßÑØ´¥·¢£¬¶àƬ8259¼¶Áª£¬ÐèÒªICW4 MOV AL, 11H £»ICW1 OUT INTB00, AL ; ÖжÏÀàÐÍÂëµÄ»ùֵΪ70H MOV AL, 70H £»ICW2 OUT INTB01, AL
; ´ÓÊô8259½ÓÖ÷¿ØµÄIRQ2 MOV AL, 02H £»ICW3 OUT INTB01, AL
; ȫǶÌ×·½Ê½£¬·Ç»º³å·½Ê½£¬·Ç×Ô¶¯½áÊø£¬8086/8088ģʽ MOV AL, 01H £»ICW4 OUT INTB01, AL Çë˵Ã÷Á½Æ¬8259AµÄ£´¸ö³õʼ»¯ÃüÁî×ÖµÄÒâÒå¡£
£±£µ£®Ä³ÏµÍ³ÖÐÉèÖã³Æ¬8259A¼¶ÁªÊ¹Óã¬Ò»Æ¬ÎªÖ÷8259A£»Á½Æ¬Îª´Ó8259A£¬ËüÃÇ·Ö±ð½ÓÈëÖ÷8259AµÄIRQ2ºÍIRQ4¶Ë¡£ÈôÒÑÖªµ±Ç°Ö÷8259AºÍ´Ó8259AµÄIRQ3Éϸ÷½ÓÓÐÒ»¸öÖжÏÔ´£¬ËüÃǵÄÖжÏÀàÐÍÂë·Ö±ðΪA0H¡¢B0H¡¢C0H£¬ÒÑÖªËüÃǵÄÖжÏÈë¿Ú¾ùÔÚͬһ¶ÎÖУ¬Æä¶Î»ùַΪ2050H£¬Æ«ÒƵØÖ··Ö±ðΪ11A0H¡¢22B0HºÍ33C0H£¬ËùÓÐÖжϾù²ÉÓÃµçÆ½´¥·¢·½Ê½¡¢ÍêȫǶÌס¢ÆÕͨEOI½áÊø¡£
(1) »³öËüÃǵÄÓ²¼þÁ¬½Óͼ£» (2) ±àдȫ²¿³õʼ»¯³ÌÐò¡£
½â£º(ÖжÏÀàÐÍÂëÈÏΪÊÇÈýƬ8259µÄÖжÏÀàÐÍ»ùÂë) (1)
(2)
; ÀûÓÃDOS¹¦Äܵ÷ÓÃÉèÖÃÖжÏÏòÁ¿ PUSH DS ; A3HÉèÖÃ
MOV AX,2050H MOV DS,AX MOV DX,11A0H MOV AX,25A3H INT 21H ; B3HÉèÖÃ
MOV DX,22B0H MOV AX,25B3H INT 21H ; C3HÉèÖÃ
MOV DX,33C0H MOV AX,25C3H INT 21H POP DS
; 8259A³õʼ»¯£¬Ïȶ¨Òå¸÷8259¶Ë¿ÚµØÖ·£¬ÒÀ´ÎΪÖ÷¿Ø¡¢´Ó1#¡¢´Ó2# INTA0 EQU 020H INTA1 EQU 021H INTB0 EQU 0A0H INTB1 EQU 0A1H INTC0 EQU 0B0H INTC1 EQU 0B1H ; Ö÷8259³õʼ»¯ MOV DX, INTA0
MOV AL, 0001 1001B OUT DX, AL
MOV AL, 1010 0000B MOV DX, INTA1 OUT DX, AL
MOV AL, 0001 0100B OUT DX, AL
MOV AL, 0001 0001B OUT DX, AL ; ´Ó1#³õʼ»¯
MOV DX, INTB0
MOV AL, 0001 1001B OUT DX, AL
MOV AL, 1011 0000B MOV DX, INTB1 OUT DX, AL
MOV AL, 0000 0010B OUT DX, AL
MOV AL, 0001 0001B OUT DX, AL ; ´Ó2#³õʼ»¯
MOV DX, INTC0
MOV AL, 0001 1001B OUT DX, AL
MOV AL, 1100 0000B MOV DX, INTC1 OUT DX, AL
MOV AL, 0000 0100B OUT DX, AL
MOV AL, 0001 0001B OUT DX, AL
; ICW1£ºµçƽ´¥·¢£¬¶àƬ8259¼¶Áª£¬ÐèÒªICW4 ; ICW2£ºÖжÏÀàÐÍÂë»ùֵΪ0A0H ; ICW3£ºIRQ4¡¢IRQ2½Ó´ÓÊô8259 ; ICW4£ºÍêȫǶÌס¢·Ç»º³å·½Ê½¡¢ÆÕͨEOI½áÊø¡¢8086/8088ģʽ ; ICW1£ºµçƽ´¥·¢£¬¶àƬ8259¼¶Áª£¬ÐèÒªICW4 ; ICW2£ºÖжÏÀàÐÍÂë»ùֵΪ0B0H ; ICW3£º´ÓÊô8259½ÓÖ÷¿ØµÄIRQ2 ; ICW4£ºÍêȫǶÌס¢·Ç»º³å·½Ê½¡¢ÆÕͨEOI½áÊø¡¢8086/8088ģʽ ; ICW1£ºµçƽ´¥·¢£¬¶àƬ8259¼¶Áª£¬ÐèÒªICW4 ; ICW2£ºÖжÏÀàÐÍÂë»ùֵΪ0C0H ; ICW3£º´ÓÊô8259½ÓÖ÷¿ØµÄIRQ4 ; ICW4£ºÍêȫǶÌס¢·Ç»º³å·½Ê½¡¢ÆÕͨEOI½áÊø¡¢8086/8088ģʽ £±£¶£®IBM PC/XTÖÐ8259AµÄIRQ2ÊäÈëÒ»ÖжÏÇëÇóÐźţ¬µ±ÆäÓÐЧʱתÈëÖжϷþÎñ³ÌÐòÖ´ÐС£ÖжϷþÎñ³ÌÐòµÄ¹¦ÄÜÊÇ´ÓÍâÉ裨¿ÚµØÖ·Îª200H£©¶ÁÈëÊý¾Ý£¬²¢ÅжÏÊÇ·ñÓÐżУÑ飬ÓÐÔòÊä³ö¸øÁíÒ»¸öÍâÉ裨¿ÚµØÖ·201H£©£¬·ñÔòÔÚÆÁÄ»ÏÔʾ×Ö·û¡°£Î¡±£¬²¢¹Ø±ÕIRQ2Öжϡ£ÊÔ±àдÖ÷³ÌÐò£¨ÓëÖжÏÓйز¿·Ö£©ºÍÖжϷþÎñ³ÌÐò¡£
; Ö÷³ÌÐò²¿·Ö PUSH DS
MOV AX, SEG INTPR MOV DS, AX LEA DX, INTPR MOV AH, 25H
MOV AL, 0AH ; δ֪ INT 21H POP DS
MOV DX, 021H ; ¶ÁÈ¡ÖÐ¶ÏÆÁ±ÎÃüÁî×Ö IN AL, DX
AND AL, 0FBH ; 0FBH = 1111 1011B£¬¿ª·ÅIRQ2ÖÐ¶Ï OUT DX, AL ; ËÍ»ØIMR STI ; ¿ªÖжÏ
; ÖжϷþÎñ³ÌÐò
INTPR: MOV DX, 200H ; ´Ó200H¶Ë¿Ú¶ÁÈëÊý¾Ý
IN AL, DX OR AL, AL JNP NEXT
MOV DX, 201H ; żУÑ飬ÊäÈëµÄÊý¾ÝÊä³öµ½¶Ë¿Ú201H OUT DX, AL JMP DONE
NEXT: MOV DL, ¡¯N¡¯ ; ·ÇżУÑ飬ÏÔʾ¡°N¡±£¬²¢¹Ø±ÕIRQ2ÖжÏ
MOV AH, 2 ; ÏÔʾ¡°N¡± INT 21H
MOV DX, 021H ; ¹Ø±ÕIRQ2ÖÐ¶Ï IN AL, DX OR AL, 00000100B OUT DX, AL
DONE: IRET
£±£·£®ÖжÏÓëÒì³£ÓкÎÒìͬ£¿
£±£¸£®32λ»úµÄÒì³£·ÖΪ¼¸Àࣿ
£±£¹£®ÖжÏÃèÊö·ûÓëÒ»°ã¶ÎÃèÊö·ûÓкβ»Í¬£¿
£²£°£®ÖжÏÃèÊö·û±íÓëÖжÏÏòÁ¿±íÓкÎÒìͬ£¿