1 / 16

8086 onderbrekings 0 tot 255 Hardeware onderbrekings 8259 Onderbrekingsbeheerder

8086 onderbrekings 0 tot 255 Hardeware onderbrekings 8259 Onderbrekingsbeheerder Die sleutelbord en sleutelbordbuffer pushf by call van onderbrekings prosedure. Nota: Die beskrywing van die onderbrekingsbeheerder is van toepassing op IBM PC. Latere rekenaars se hardeware verskil, maar

livvy
Download Presentation

8086 onderbrekings 0 tot 255 Hardeware onderbrekings 8259 Onderbrekingsbeheerder

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8086 onderbrekings 0 tot 255 • Hardeware onderbrekings • 8259 Onderbrekingsbeheerder • Die sleutelbord en sleutelbordbuffer • pushf by call van onderbrekings prosedure Nota: Die beskrywing van die onderbrekingsbeheerder is van toepassing op IBM PC. Latere rekenaars se hardeware verskil, maar is aanpasbaar by die beskrywing. RS245-2003-Lesing 13

  2. 8686 Onderbrekings 0 tot 255 [tabel 6-5] OORSAAK ADRES Tipe 5 tot 255 (Sagte of eksterne harde onderbrekings) Tipe 4 (overflow) Tipe 3 (Breakpoint) Tipe 2 (NMI) Tipe 1 (Single step) Tipe 0 (divide error) 0014 -03FF 0010 - 0013 000C - 000F 0008 - 000B 0004 - 0007 0000 - 0003 INT N instruksie of Eksterne H/W onderbreking EN IF-vlaggie gestel (deur STI instruksie). INTO instruksie EN die "Overflow"-vlaggie gestel INT 3 instruksie (enkelgreep-instruksie) NMI-pen hoog getrek deur H/W TF-vlaggie gestel Deling deur zero RS245-2003-Lesing 13

  3. 8086 Hardeware onderbrekings NMI "non-maskable interrupt" 8086 "interrupt request" INTR /INTA "not interrupt accepted" RS245-2003-Lesing 13

  4. H/W onderbrekings (NMI en INTR) [Hoofstuk 12-2] NMI (Non-maskable interrupt): Die NMI pen moet vir twee kloksiklusse hoog getrek word om 'n onderbreking tipe 2 te veroorsaak. Hierdie tipe onderbreking word slegs gebruik vir katastrofes (bv falende kragtoevoer). INTR (Word slegs gediens as IF-vlaggie gestel is - dus 'maskable'): Die INTR pen moet hoog getrek word en daar gehou word totdat die 8086 via /INTA aandui dat dit herken is. Daarna moet die tipe nommer van die onderbreking via die databus aan die 8086 verskaf word wanneer die 8086 dit via /INTA versoek. Ons kyk later in die kursus in meer detail na tyddiagramme. (Intreesein na 8086: moet hoog bly tot herken) INTR (Uitreesein van 8086) /INTA 8-bis tipe nommer (Intreeseine na 8086) AD0-AD7 RS245-2003-Lesing 13

  5. 8259 Onderbrekingsbeheerder [Hoofstuk 12-4] Die 8-bis onderbrekings tipe nommer word tipies deur 'n doelgemaakte komponent soos die 8259 onderbrekngsbeheerder verskaf INTR 8086 8259 Wanneer een van hierdie penne hoog getrek word, word INTR hoog gestel en die onderbrekingsnommer in reaksie op /INTA via die databus verskaf. /INTA Databus Hierdie verbindings moontlik via buffers (lesing 11) RS245-2003-Lesing 13

  6. Die 8259 onderbrekingsbeheerder is ontwerp om met die 8086 via die INTR, /INTA en die DATABUS te kommunikeer soos beskryf. IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 Die PC IO-adresse 20H en 21H is aan die 8259 toegewys. A0 word gebruik om tussen die twee adresse te onderskei. 20H: Command register (/IOWR =0) 20H: Int request register (/IORD =0) 21H: Interrupt mask register Databus A0 8259 /IORD /IOWR /CS /INTA /CS is 0 vir intree/uittree adresse 20H en 21H INTR RS245-2003-Lesing 13

  7. Die 8259 word opgestel deur 'n aantal grepe na die "Command" en "Mask" registers te skryf. BIOS stel die 8259 op vir die volgende onderbrekingstipes: SIEN TABEL 6-5 IRQ0 = tipe 08H 8253 Tydreëlaar 55 ms onderbrekings IRQ1 = tipe 09H Sleutelbordkoppelvlak IRQ2 = tipe 0AH Vertoon IRQ3 = tipe 0BH Seriële poort 2 IRQ4 = tipe 0CH Seriële poort 1 IRQ5 = tipe 0DH Hardeskyf IRQ6 = tipe 0EH Slapskyf IRQ7 = tipe 0FH Drukkerpoort RS245-2003-Lesing 13

  8. Die "Mask" register word gebruik om onderbrekings te steun of te stuit: 0 = steun ("enable") 1 = stuit ("disable") Adres 21H IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 IRQ1 IRQ0 Voorbeeld : Om die tydreëlaar te stuit:- in al,21H or al,01H out 21H,al LW. Die 8086 IF-vlaggie moet gestel wees (=1) om onderbrekings te aanvaar anders word alle harde onderbrekings (behalwe NMI) gestuit. RS245-2003-Lesing 13

  9. Die INT-request register kan gekees word om te sien of daar enige ongedienste onderbrekings is. Hierdie inligting is beskikbaar al is die spesifieke onderbreking gestuit deur die "mask" register. Om die INT-request register te lees: mov al,0AH out 20H,al (* stel die 8259 in kennis dat jy die request register wil lees *) in al,20H Die bisse in die "request" register het dieselfde volgorde as in die "mask" register. 1 = "interrupt requested" , 0 = "no request" Aan die einde van 'n onderbreking moet die onderbrekingsprosedure die 8259 in kennis stel dat die onderbreking afgehandel is deur: mov al,20H (* Toevallig is die bevel gelyk aan die adres in die PC *) out 20H,al Die voorafgaande inligting is genoeg om die 8259 in die PC-te benut. Vir eie ontwerpe moet die 8259 egter deeglik bestudeer word om die aanvanklike opstelling van die 8259 te kan doen. RS245-2003-Lesing 13

  10. TOETS 1 VRAAG 1 Gegee (Alle waardes is hex ) / Given (All values in hex): AX=0004 BX=0005 CX=0000 DX=0000 SP=0006 BP=0007 SI=0008 DI=0009 DS=2300 ES=2301 SS=2302 CS=2303 Bepaal die greep wat in elke geval in die AH-register gekryf word. Gebruik die data in Tabel 1 Determine the byte that is written in the AH-register in each case. Use the data in Table mov ah,[si] 8F mov ah,[di] 81 mov ah,ds:[di] 81 mov ah,[bp] F8 xlatb AH ONVERANDERD mov ax,[bx][di] 7A (2 PUNTE, RES 1 ELK) lodsb 8F (Nota: hierdie was 'n tikfout in die vraestel. 8F word in al gelaai. As jy geskryf het ah bly onveranderd - dan sou jy soos in die xlatb-vraag ook 'n punt kry) pop ax F8 RS245-2003-Lesing 13

  11. VRAAG 2 Die funksie gedefinieer deur char Krymaks(char,char,char,char,char,char); is in samestellertaal geskryf en word geroep deur 'n funksie wat in C geskryf is. Net voordat C-instruksie antwoord=Krymaks(a,b,c,d,e,f); uitgevoer word, is die waarde van SP = 40, SS=2300, CS=5000 (alle waardes is heksadesimaal) Neem aan dat die data in tabel 1 geldig is net voordat die eerste instruksie in die funksie Krymaks uitgevoer word. Bepaal: (a) Die waardes van parameter e. (b) Die waarde van parameter f. (c) Die adres waarheen die funksie sal terugkeer. (Gee die volledige adres – nie net die afset nie). (2 punte elk) parameter f eerste ge-"push" parameter e tweede ge-"push" Deur call ge-"push" RS245-2003-Lesing 13

  12. VRAAG 3 Beskryf die fout (indien enige) in elk van die volgende instruksies. Describe the error (if any) in each of the following instructions. een punt elk RS245-2003-Lesing 13

  13. VRAAG 4 (a) Wat is die inhoud van die al-register nadat die volgende stel instruksiesuitgevoer is? (b-f) Watter van voorwaardelike spronge sou plaasvind indien die voorwaardelike spronginstruksie direk na die stel instruksies geplaas word? mov al, 0E2H E2 mov bl, 01EH 1E add al,bl 1)00 (carry vlaggie gestel) mov al,120 78 mov bl,7 7 adc al,bl 1 (carry vlaggie) 80 ---------- voorwaardelike spronginstruksie hier / conditional jump instruction here al – register inhoud80(2 punte) JZ nee (1 punt) JL ja (1 punt) JB nee (1 punt) JO ja (2 punte) JP nee (1 punt) As die al-register se waarde verkeerd bereken is, kon jy steeds die halfte van die res van punte kry as jy die spronge reg bepaal het volgens jou verkeerde antwoord vir die al-register. RS245-2003-Lesing 13

  14. VRAAG 5 / QUESTION 5 Verduidelik volledig wat die resultaat is as die volgende funksie geroep word en vul die kommentaar in. .MODEL small .8086 .DATA outdat db 169,4 .CODE public Vraag5_ Vraag5_: in al,61H Stel laagste twee bisse van poort 61H na 1 om die or al,03H gonser aan te skakel. out 61H,al mov al,0b6H Skryf B6H na modusregister van 8253-teller. out 43h,al Genereer vierkantsgolf, Skryf beide mins en mees belangrike tellergrepe as na 42H skryf. mov al,outdat Skryf A9 na poort 42H out 42h,al mov al,outdat[1] Skryf 04H na poort 42H out 42h,al retn 0 Keer terug end Gonser skakel aan teen 1 kHz RS245-2003-Lesing 13

  15. VRAAG 6 / QUESTION 6 Verduidelik volledig wat die resultaat is as die volgende funksie geroep word en vul die kommentaar in. .MODEL small .8086 .DATA outdat2 db 's','m','u','g' .CODE public Vraag6_ Vraag6_: push ax push bx push cx push dx push si mov dx,2559 ;desimaal/decimal mov si,offset outdat2 add si,4 mov cx,4 nog: mov bh,0 mov ah,2 inc dx int 10H dec si mov al,[si] mov ah,09H mov bl,0CAH push cx mov cx,1 int 10H pop cx loop nog pop si pop dx pop cx pop bx pop ax retn 0 end Die woord "gums" word in groen op rooi op die skerm geskryf op die 10de lyn (lyn no 9) RS245-2003-Lesing 13

  16. Valskermtoets Almal wat 19 punte en minder het, moet die valskermtoets skryf (as jy 'n predikaat wil verdien). Ander kan dit vrywillig skryf. As jy opdaag en 'n vraestel kry, dan moet jy skryf en sal die gemiddelde van jou twee toetspunte geneem word. Jou punt kan dus verhoog of verlaag word. RS245-2003-Lesing 13

More Related