UNIT-6. INTRODUCTION POLLING INTERRUPTS INTERRUPT SERVICE ROUTINR(ISR)

32
UNIT-6

Transcript of UNIT-6. INTRODUCTION POLLING INTERRUPTS INTERRUPT SERVICE ROUTINR(ISR)

Page 1: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

UNIT-6

Page 2: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

INTRODUCTION

POLLING

INTERRUPTS

INTERRUPT SERVICE ROUTINR(ISR)

Page 3: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

INTERRUPT STRUCTURE OF 8086

• SUPPORTS 256 INTERRUPTS

•SOURCES OF INTERRUPTSINTERRUPT 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)

Page 4: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

INTERRUPT RESPONSE

1. 8086 COMPLETES THE EXECUTION OF CURRENT INSTRUCTION2. CHECKS THE SOURCE OF INTERRUPT.

IF IT IS DUE TO INTR GO TO NEXT STEP ELSE GO TO STEP 53. CHECKS THE INTERRUPT FLAG.IF ITS SET GO TO NEXT STEP ELSE

EXECUTE NEXT INSTRUCTION _____

4. IT ACKS INTRRUPT BY SENDING INTA SIGNAL TO THE DEVICE. _____IT READS INTERRUPT TYPE GIVEN BY THE DEVICE DURING SECOND INTA SIGNAL

5. IT PUSHES THE FLAG REGISTER TO STACK AND DECREMENTS STACK POINTER BY 26. IT CLEARS INTERRUPT FLAG AND TRAP FLAG7. IT SAVES RETURN ADDRESS BY PUSHING THE CS,DEC SP BY 2,PUSH IP TO STACK,DEC SP BY 28. TRANSFERS CONTROL TO START OF ISR. ADDRESS OF ISR IS TAKEN FROM IVT

BASED ON WHICH OF THE 256 INTERRUPTS IS SERVICED9. AT THE END OF ISR, IRET HAS TO BE EXECUTED10. POPS IP INC SP BY 2,POPS CS,INC SP BY 211. IT POPS EFLAGS INC SP BY 212. TRANSFERS CONTROL BACK TO THE PROGRAM WHICH WAS INTERRUPTED

Page 5: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 6: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

INTERRUPT VECTOR TABLE

Page 7: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)
Page 8: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 9: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 10: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

PRIORITY OF INTERRUPTS

INTERRUPT TYPE PRIORITY

INT0,INT3-INT 255,INTO HIGHEST

NMI(INT2)

INTR

SINGLE STEP LOWEST

Page 11: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)
Page 12: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 13: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 14: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 15: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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(a) FUNCTION CALL 00: READ KEYBOARD CHARACTER, IT WILL RETURN ASCII CODE OF

THE CHARACTER(b) FUNCTION CALL 01: GET KEY BOARD STATUS

Page 16: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

8259

Page 17: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

Control Word (initialization)

Page 18: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 19: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 20: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 21: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 22: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 23: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

ICW1, ICW2

Page 24: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 25: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)
Page 26: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

Masking and Prioritization

• OCW (operation command word)

Page 27: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

Programming OCWs

Page 28: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

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

Page 29: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)

OCW3

Page 30: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)
Page 31: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)
Page 32: UNIT-6. INTRODUCTION  POLLING  INTERRUPTS  INTERRUPT SERVICE ROUTINR(ISR)