System przerwania (SP). Funkcje wejścia / wyjścia (I/O) Urządzenia zewnętrzne i mikroprocesor Pamięć I/O i instrukcje do pracy z nią Przykłady Przerwania w systemach komputerowych (x86) Tablica wektorów przerwań Funkcje systemowe do zarządzania SP Przykłady Pytania
23
Embed
System przerwania (SP). Funkcje wejścia / wyjścia (I/O)aragorn.pb.bialystok.pl/~teodora/AK/W7.pdf · System przerwania (SP). Funkcje wejścia / wyjścia (I/O) Urządzenia zewnętrzne
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
System przerwania (SP). Funkcje wejścia / wyjścia (I/O)
Urządzenia zewnętrzne i mikroprocesor
Pamięć I/O i instrukcje do pracy z nią
Przykłady
Przerwania w systemach komputerowych (x86)
Tablica wektorów przerwań
Funkcje systemowe do zarządzania SP
Przykłady
Pytania
Urządzenia zewnętrzne i mikroprocesor
Port w rozumieniem sprzętowym:
Sterownik całego urządzenia
Miejsce w wyróżnionej przestrzeni adresowej I/O
Sposoby komunikacji procesora:
Polling
Przerwania
Pamięć I/O i instrukcje do pracy z nią
• I/O port similar to memory address • Adresy portów (port number):16 bitowe(0000h – ffffh)
Memory Space
I/O Space 16 bit I/O
port address
I/O Port Addressing Modes
Tryby adresacji
Immediate port address (natychmiastowa)
Adres może być do 1B (immediate address)
Służy dla portów od 00h do ffh (adresy)
Adres portu jest zapisany w DX (bezpośrednia)-
obsługuje wszystkie porty: od 0000h do ffffh
Do przechowywania adresu – tylko DX
Do przechowywania danych – tylko AL
IN/OUT
in eax/ax/al, port
in eax/ax/al, dx
out port, eax/ax/al
out dx, eax/ax/al
INSB(W)/OUTSB(W)
DX - numer portu;
ES:DI – adres pamięci do której piszemy;
DS:SI – adres pamięci z której czytamy
I/O Data Transfer
in al, 40h ;al gets 1 byte from port 40h
in ax, 255 ;ax gets 2 bytes from port ffh
in al, dx ;ax gets 1 byte from port address in dx
in eax, dx ;eax gets 4 bytes from port addr. in dx
out 80h, al ;send contents of al to port 80h
out dx, eax ;send contents of eax to port addr. in dx
386+
insb 72 ;receive byte string from port 72
;store in location at es:di
insw dx ;receive word string from port addr. in
dx
insd dx ;receive double word string
outsb ffh ;send byte string to port 255
;source string located in memory at ds:si
outsw dx ;send word string to port addr. in dx
outsd dx ;send double word string to port
I/O Memory Map
Obszary w I/O pamięci
0000h-00ffh Zarezerwowane dla systemu (system board)
0100h-03ffh Dla wszelkich kart (adapter cards)
0400h-0ffffh niedostępne dla magistrały systemowej
Funkcja 26H - utworzenie nowego seg.PSP:we: DX-adr.seg nowego PSP, CS-dla aktual. PSP,
Funkcja 31H - zakończenie wykonywania programu i pozostawienie go w pamięci (TSR): we: AL-kod zakończenia (0-normalne), DX rozmiar programu rezydentnego liczonego w 16B (paragraf)
Funkcja 33H - obsługa naciśnięcia klawiszy Ctrl i C,
Funkcja 35H - pobranie wektora przerw: we: AL - numer przerwania (00H ... FFH);wy: ES:BX,
Funkcja 49H - zwolnienie zarezerwowanej pamięci,
Funkcja 4CH - zakończenie programu z wyprowadzeniem komunikatu,
Przerwanie 23H Adres wyjścia z programu po naciśnięciu Ctrl i C
Przerwanie 24H Obsługa błędów fatalnych DOS-u
Przerwanie 27H Zakończenie wykonywanego progr. i pozostaw. go w pamięci (TSR)
Przerwanie 2FH Przerwanie multipleksowe, obsługa programów rezydentnych
Przerwanie 33H Obsługa myszy według standardu Microsoft
Przerwania F1H-F7H Zarezerwowane dla przerwań użytkownika
Interrupt Vector Table – IVT
•x86 ma 256 przerwania, każde ma swój Wektor
•Wektor = wskaźnik (adres) z Interrupt Vector Table, IVT
–IVT znajduje się pamięci od 0000:0000 do 0000:03ffh
•IVT zawiera 256 dalekie wskaźniki (far pointer values) –
adres (CS:IP)
•Każdy wskaźnik, to adres obsługującego progrmu
(Interrupt Service Routine, ISR)
IVT Format
Offset
Offset
Offset
Segment
Segment
Segment
Interrupt 0
Interrupt 1
Interrupt 255
0000:0000
0000:0001
0000:0002
0000:0003
0000:0004
0000:0005
0000:0006
0000:0007
0000:03fc
0000:03fd
0000:03fe
0000:03ff
IP LSB
IP MSB
CS LSB
CS MSB
Given a Vector, where is the
ISR address stored in memory ?
4Offset Type
Example: int 36h
Offset = (544) = 216 = 00d8h
Co się dzieje w czasie przerwania ?
Complete
Current
Instruction
Internal
Interrupt
NMI
INTR
TF
Fetch
Next
Instruction
IF
Read Type
Code #
push
Flags
Set
TEMP=TF
IF=0
TF=0
push
CS and IP
call
ISR
NMI
TEMP
Execute
ISR
pop
IP and CS
popf
Resume
Interrupted
Procedure
YES
YES
YES
YES
NO
NO
NO
NO
0
1
1
0
0
1
acknowledge
interrupt
Analogia do podprogramów call int
ret iret
• call: CS, IP – na stos; ładowane są CS:IP z adresem
procedury
• int robi to samo co call i nieco jeszcze
• ret pobiera ze stosu IP, CS
• iret pobiera ze stosu FLAGS, IP, i CS
Stos jest zawsze warunkiem, aby praca była poprawna
Interrupt Vector Assignments
Type Function Comment
0 Divide Error Processor - zero or overflow1 Single Step (DEBUG) Processor - TF=12 Nonmaskable Interrupt Pin Processor - NMI Signal3 Breakpoint Processor - Similar to Sing Step4 Arithmetic Overflow Processor - into5 Print Screen Key BIOS - Key Depressed6 Invalid Opcode Processor - Invalid Opcode7 Coprocessor Not Present Processor - no FPU8 Time Signal BIOS - From RT Chip (AT - IRQ0)9 Keyboard Service BIOS - Gen Service (AT - IRQ1)
A - F Originally Bus Ops (IBM PC) BIOS - (AT - IRQ2-7)10 Video Service Request BIOS - Accesses Video Driver11 Equipment Check BIOS - Diagnostic12 Memory Size BIOS - DOS Memory13 Disk Service Request BIOS - Accesses Disk Driver14 Serial Port Service Request BIOS - Accesses Serial Port Drvr15 Miscellaneous BIOS - Cassette, etc.16 Keyboard Service Request BIOS - Accesses KB Driver
Interrupt Vector Assignments (cont.) Type Function Comment
17 Parallel Port LPT Service BIOS - Printer Driver18 ROM BASIC BIOS - BASIC Interpreter in ROM19 Reboot BIOS - Bootstrap1A Clock Service BIOS - Time of Day from BIOS1B Control-Break Handler BIOS - Keyboard Break1C User Timer Service BIOS - Timer Tick1D Pointer to Video Parm Table BIOS - Video Initialization1E Pointer to Disk Parm Table BIOS - Disk Subsystem Init.1F Pointer to Graphics Fonts BIOS - CGA Graphics Fonts20 Program Terminate DOS - Clear Memory, etc.21 Function Call DOS - Transfer Control22 Terminate Address DOS - program Terminate handler23 Control-C Handler DOS - For OS Use24 Fatal Error Handler DOS - Critical Error25 Absolute Disk Read DOS - Disk Read26 Absolute Disk Write DOS - Disk Write27 Terminate DOS - TSR Usage28 Idle Signal DOS - Idle2F Print Spool DOS - Cassette, etc.
70-77 Hardware Interrupts in AT Bios DOS - (AT - IRQs 8-15)
AT – IRQ Definitions IBM-AT (Advanced Technology) - Intel 80286
Name Interrupt Vector Priority Description
NMI 02 1 Memory Parity Error IRQ0 08 2 Timer (Intel 8253 Chip 55 ms intervals) IRQ1 09 3 Keyboard IRQ2 0A 4 8259 PIC Slave or EGA/VGA Vert. Retrace IRQ3 0B 13 Serial Port (COM2 or COM4) IRQ4 0C 14 Serial Port (COM1 or COM3) IRQ5 0D 15 Fixed Disk or LPT2 Request IRQ6 0E 16 Floppy Disk Driver IRQ7 0F 17 LPT1 Request IRQ8 70 5 CMOS Real-Time Clock (RT Chip) IRQ9 71 6 Re-directed to IRQ2 IRQ10 72 7 RESERVED IRQ11 73 8 RESERVED IRQ12 74 9 Mouse or other IRQ13 75 10 Math Coprocessor (NPX) IRQ14 76 11 Hard Disk IRQ15 77 12 RESERVED