8086 interrupts new
DESCRIPTION
8086 interrupts-introductionTRANSCRIPT
UNIT-6
INTRODUCTION
POLLING
INTERRUPTS
INTERRUPT SERVICE ROUTINR(ISR)
INTERRUPT STRUCTURE OF 8086
• SUPPORTS 256 INTERRUPTS
• SOURCES OF INTERRUPTS
INTERRUPT FROM EXTERNAL SIGNAL APPLIED TO TWO
HARDWARE PINS INTR AND NMI (HARDWARE INTERRUPTS)
INTERRUPT GENERATED BY EXECUTING AN INTERRUPT
INSTRUCTION (S/W OR INTERNAL INTERRUPT)
INTERRUPT BY AN ERROR CONDITION PRODUCED BY
EXECUTING AN INSTRUCTION (INTERNAL ERRORS)
INTERRUPT RESPONSE
8086 COMPLETES THE EXECUTION OF CURRENT INSTRUCTIONCHECKS THE SOURCE OF INTERRUPT.
IF IT IS DUE TO INTR GO TO NEXT STEP ELSE GO TO CHECKS THE INTERRUPT FLAG.
IF ITS SET GO TO NEXT STEP ELSE EXECUTE NEXT INSTRUCTION IT ACKS INTRRUPT BY SENDING INTA SIGNAL TO THE DEVICE.
IT READS INTERRUPT TYPE GIVEN BY THE DEVICE DURING SECOND INTA SIGNAL
IT PUSHES THE FLAG REGISTER TO STACK AND DECREMENTS STACK POINTER BY 2
IT CLEARS INTERRUPT FLAG AND TRAP FLAG
IT SAVES RETURN ADDRESS BY PUSHING THE CS,DEC SP BY 2,PUSH IP TO STACK,DEC SP BY 2
TRANSFERS CONTROL TO START OF ISR. ADDRESS OF ISR IS TAKEN FROM IVT BASED ON WHICH OF THE 256
INTERRUPTS IS SERVICED
AT THE END OF ISR, IRET HAS TO BE EXECUTED POPS IP INC SP BY 2,POPS CS,INC SP BY 2 IT POPS EFLAGS INC SP BY 2
TRANSFERS CONTROL BACK TO THE PROGRAM WHICH WAS INTERRUPTED
FLOWCAHRT FOR INTERRUPT RESPONSE SEQUENCE
MAIN PROGRAM
INTERRUPT
IS DUE TO INTR
IF =1
INTERRUPT ACKCYCLE
READ INTERRUPTTYPE
POP IPPOP CS
POP FLAG REGISTER
PUSH EFLAGSCLEAR IF & TF
PUSH CS &IPGO TO ISR
NO
NO
YES
YES
ISR
IRET
INTERRUPT VECTOR TABLE
8086 INTERRUPT TYPES
256 INTERRUPTS OF 8086 ARE DIVIDED IN TO 3 GROUPS
1. TYPE 0 TO TYPE 4 INTERRUPTS-THESE ARE USED FOR FIXED OPERATIONS ANDHENCE ARE CALLED DEDICATED INTERRUPTS
2. TYPE 5 TO TYPE 31 INTERRUPTSNOT USED BY 8086,RESERVED FOR HIGHER PROCESSORS LIKE 8028680386 ETC
3. TYPE 32 TO 255 INTERRUPTSAVAILABLE FOR USER,CALLED USER DEFINED INTERRUPTSTHESE CAN BE H/W INTERRUPTS AND ACTIVATED THROUGH INTR LINE OR CAN BE S/W INTERRUPTS
TYPE – 0 DIVIDE ERROR INTERRUPTQUOTIENT IS LARGE CANT BE FIT IN AL/AX OR DIVIDE BY ZERO
TYPE –1 SINGLE STEP INTERRUPTUSED FOR EXECUTING THE PROGRAM IN SINGLE STEP MODE BY SETTING TRAP FLAGTO SET TRAP FLAG PUSHF
MOV BP,SPOR [BP+0],0100H;SET BIT8POPF
TYPE – 2 NON MASKABLE INTERRUPTTHIS INTERRUPT IS USED FOR EXECUTING ISR OF NMI PIN(POSITIVE EGDE SIGNAL). NMI CANT BE MASKED BY S/W
TYPE – 3 BREAK POINT INTERRUPTUSED FOR PROVIDING BREAK POINTS IN THE PROGRAM
TYPE – 4 OVER FLOW INTERRUPTUSED TO HANDLE ANY OVERFLOW ERROR AFTER SIGNED ARITHMETIC
PRIORITY OF INTERRUPTS
INTERRUPT TYPE PRIORITY
INT0,INT3-INT 255,INTO HIGHEST
NMI(INT2)
INTR
SINGLE STEP LOWEST
DOS INTERRUPTS
1. FUNCTION CALL 01: READ THE KEY BOARDINPUT PARAMETER AH = 01READ A CHARACTER FROM KEYBOARD. ECHO IT ON CRO SCREENAND RETURN THE ASCII CODE OF THE KEY PRESSEDIN AL
OUTPUT PARAMETER: AL = ASCII CODE OF CHARACTER
2. FUNCTION CALL 02H: DISPLAY ON CRT SCREENINPUT PARAMETER: AH = 02
DL = ASCII CHARACTER TO BE DISPLAYED ON CRT SCREEN3. FUNCTION CALL 03: READ CHARACTER FROM COM1INPUT PARAMETER: AH = 03HFUNCTION: READS DATA FROM COM PORTOUTPUT PARAMETER: AL = ASCII CODE OF CHARACTER
4. FUNCTION CALL 04: WRITE CHARACTER TO COM1INPUT PARAMETER: AH = 04H
DL = ASCII CODE OF CHARACTER TO BE TRANSMITTEDFUNCTION: WRITES DATA TO COM PORT
4. FUNCTION CALL 05: WRITE TO LPT1INPUT PARAMETER: Al = 05H
DL = ASCII CODE OF CHARACTER TO BE PRINTTEDFUNCTION: PRINT THE CHARACTER AVAILABLE IN DL ON PRINTER ATTACHED TO LPT1
DOS INTERRUPTS
FUNCTION CALL 09: DISPLAY A CHARACTER STRINGINPUT PARAMETER: AH = 09,DS:DX= ADDRESS OF CHARACTER STRINGFUNCTION: DISPLAYS THE CHARACTERS AVAILABLE IN THE STRING TO CRT TILL A $
FUNCTION CALL 0AH: BUFFERED KEY BOARD INPUTINPUT PARAMETER: AH = 0AH
DS:DX = ADDRESS OF KEYBOARD INPUT BUFFER
FUNCTION: THE ASCII CODES OF THE CHARACTERS RECEIVED FROM KEYBOARD ARE STORED IN KEYBOARD BUFFER FROM 3RD BYTE. 1ST BYTE OF BUFFER = SIZE OF BUFFER UPTO 255. IT RECEIVES THE CHARACTERS TILL SPECIFIED NO.OF CHARACTERS ARE RECEIVED OR ENTER KEY IS PRESSES WHICH EVER IS EARLIER
BIOS INTERRUPTS
INT 10H: VIDEO SERVICE INPERRUPTIT CONTROLS THE VEDIO DISPLAY(a) FUNCTION CALL 00: SELECT VEDIO MODE
INPUT PARAMETER: AL = MODE NUMBERAH = 00H
FUNCTION: IT CHANGES THE DISPLAY MODE AND CLEARS THE SCREENAL = 00 40 X 25 BLACK AND WHITEAL = 04 320 X 200 COLORAL = 10H 640 X 350 X 16 COLOR(b) FUNCTION CALL 03: READ CURSOR POSITIONINPUT PARAMETER: AH = 03
BH = PAGE NUMBERFUNCTION: READS CURSOR POSITION ON SCREENOUTPUT PARAMETERS: CH = STARTING LINE
CL = ENDING LINEDH = CURRENT ROWDL = CURRENT COLUMN
BIOS INTERRUPTS
( C) FUNCTION CALL 0E: WRITE CHARACTER ON CRT SCREEN AND ADVANCE CURSORINPUT PARAMETER: AH = 0EH
AL = ASCII CODE OF THE CHARACTERBH = PAGE(TEXT MODE)BL = COLOR(GRAPHICS)
FUNCTION: DISPLAY CHARACTER AVAILABLE IN AL ON SCREEN
INT 11H: DETERMINE THE TYPE OF EQUIPMENT INSTALLED. REGISTER AX SHOULD CONTAIN FFFFH AND INSTRUCTION INT 11H TO BE EXECUTED. ON RETURN, REGISTER AX WILL INDICATE THE EQUIPMENTS ATTACHED TO COMPUTER
INT 14H: CONTROL THE SERIAL COMMUNICATION PORT ATTACHED TO THE COMPUETR. AH SHOULD CONTAIN THE FUNCTION CALL
(a) FUNCTION CALL 00:INITIALIZE THE COM PORT(b) FUNCTION CALL 01: SEND A CHARACTER(c) FUNCTION CALL 02:RECEIVE A CHARACTER
INT 16H: KEYBOARD INTERRUPTAH SHOULD CONTAIN THE FUNCTION CALL(d) FUNCTION CALL 00: READ KEYBOARD CHARACTER, IT WILL RETURN ASCII CODE OF
THE CHARACTER(e) FUNCTION CALL 01: GET KEY BOARD STATUS
8259
Control Word (initialization)
SEQUENCE OF OPERATIONS
IF IF FLAG IS SET AND INTR BECOMES ACTIVE HIGH8086 DOES THE FOLLOWING1. 8086 pulses INTA(active low) twice indicating to 8259 that interrupt occurred2. 8259 WILL SEND THE TYPE NO. OF HIGHEST PRIORITY INTERRUPT
TO 8086 ON D0-D7 LINES DURING 2ND INTA PULSE(ACTIVE LOW)3. 8086 MULTIPLIES THIS TYPE NO. 4 AND GETS THE CORRESPONDING
ADDRESS FROM IVT4. 8086 PUSHED FLAG REGISTER,CLEARS IF,TF,PUSHED RET.ADDR
AND THEN EXECUTES THE ISR AT THE ADDRESS RECEIVED
SEQUENCE OF OPERATIONS IN 8259 BEFORE IT ACTIVATES INTR1. THE IRR REGISTERS THE INTERRUPT REQUESTS2. PRIORITY RESOLVER INTERACTS WITH IRR,ISR,IMR. IN CASE OF MULTIPLE
INTERRUPTS HIGHEST PRIORITY INTERRUPT IS PICKED UP3. CORRESPONDING BIT IN IMR IS CHECKED BY PR TO SEE IF THIS
INTERRUPT CAN BE ALLOWED OR NOT, ASSUME THAT IT IS ALLOWED4. ISR IS NOW CHECKED TO SEE IF ANY INTERRUPT IS UNDER SERVICE
IF A HIGHER PRI.INTR IS UNDER SERVICE PR TAKES NO ACTION. IF NO HIGHER PRI.INTR IS UNDER SERVICE,IT ACTIVATES INT WHICH IS CONNECTED TO INTR OF 8086
5. 8086 SENDS 2 INTA PULSES. USING 1ST PULSE 8259 WILL RESET THE CORRES
PONDING IR BIT OF IRR TO INDICATE THE REQ IS ACCEPTED AND SETS THE CORRESPONDING IS BIT OF ISR TO INDICATE WHICH IR LEVEL IS UNDERSERVICE
6. DURING 2ND INTA PULSE 8259 WILL SEND THE TYPE NUMBER OF INTERRUPT7. ISR BIT WILL BE RESET AT THE END OF INT.SERVICE ROUTINE
PRIORITY MODESFULLY NESTED MODEDEFAULT MODE. IR0 HAS HIG.PRI,IR1 NEXT ….IR7 LOWEST PRIORITY
SPECIFIC ROTATION MODEAN IR WILL BE ASSIGNED LOWEST PRIORITY, THUS FIXING THE PRIOF OTHER INTERRUPTS IN CYCLIC MANNEREX: IF IR3 IS ASSIGNED LOWEST PRI., THEN IR2 IS NEXT HIGHER….IR4 IS HIGHEST PRI
AUTOMATIC ROTATION MODEAN IR LEVEL AFTER BEING SERVICED GETS LOWEST PRIORITY, OTHER PRIWILL GET FIXED IN CYCLIC ORDER.EX: IR5 AFTER BEING SERVICED ASSIGNED LOWEST PRI,NEXT HIGHR WILL BE IR4,IR6 WILL BE HIGHEST
SPECIAL FULLY NESTED MODEAPPLICABLE FOR CASCADE CONFIGURATON.PRI.LEVEL OF SLAVE 8259 IS SAME FOR ALL INTERRUPTS. SO IF AN INTERRUPT IS UNDER SERVICE FROM A SLAVE THEN OTHER INTERRUPTS FROM SLAVE WILL NOT BE RECOGNISED. SFNM REMOVESTHIS PROBLEM, ALLOWS HIGHEST PRI. INTERRUPT FROM A SLAVE TO BE RECOGNISEDWHILE ANOTHET LOWER PRI INTERRUPT IS UNDER SERVICE
END OF INTERRUPTS
AUTOMATIC EOIEOI COMMAND NEED NOT BE GIVEN. ISR IS RESET BY LAST INTA PULSE. THE DRAWBACK IS THAT NOW ANY IR CAN INTERRUPT ISR. THIS METHOD IS GENERALLY USED WHEN A NESTED MULTI-LEVEL INTERRUPT STRUCTURE IS NOT REQUIRED. IT IS A PREFERRED MODE OF OPERATION AND REDUCESISR LENGTH
NON SPECIFIC EOI COMMANDTHIS COMMAND WILL RESET THE HIGHEST PRIORITY ISR BIT. THIS IS BECAUSE IN NESTED MODE IT IS THE HIGHEST PRIORITY WHICH WILL BE INSERVICE
SPECIFIC EOITHIS COMMAND WILL RESET THE ISR BIT WHICH IS SPECIFIED AS A PART OFCOMMAND. THREE BIT CODE L0 – L2 SPECIFIES WHICH BIT HAS TO BE RESET
ICW-INITIALIZATION COMMAND WORD
THERE ARE 4 ICWs
ICW1 IS WRITTEN USING PORT0 ADDRESS OF 8259
ICW2 IS WRITTEN USING PORT1 ADDRESS OF 8259It is used by 8086 to specify the interrupt type number which is sent by 8259 in response to INTA
ICW1, ICW2
D7 D6 D5 D4 D3 D2 D1 D0
T7/A15
T6/A14
T5/A13
T4/A12
T3/A11
A10 A9 A8
D0-D7 ARE LABLED AS A8 TO A15(A8 – A15) OF INTERRYPT VECTOR ADDRESS AND USED BY 8085
D0 – D2 ARE NOT USED BY 8086
D3 – D7 ARE LABLED AS T3-T7(OF INTERRUPT VECTOR TYPE,USED BY 8086 AND ARE 5 MSBs OF INTERRUPT TYPE NUMBER
Masking and Prioritization
• OCW (operation command word)
Programming OCWs
OCW1 IS WRITTEN USING PORT1 ADDRESS OF 8259IT IS USED TO SET RESET THE MASK BITS IN INTERRUPT MASK REGISTERD0 = 1 INDICATES IR0 IS MAKED OR DISABLEDD0 = 0 INDICATES IR0 IS UNMASKED OR ENABLEDD1 THROUGH D7 ARE FOR IR1 THROUGH IR7
OCW2 IS WRITTEN USING PORT 0 ADDRESS OF 8259IT IS PROGRAMMED ONLY WHEN AEOI MODE IS NOT SELECTED IN ICW4R- ROTATIONSL-SPECIFIC LEVELEOI – END OF INTERRUPT
OCW3