Menu

Budowa systemu

Budowa komputera

Przykładowe systemy

Programowanie

Linki



Porty

Porty obok przerwań stanowią najważniejszy sposób komunikacji z urządzeniami zewnętrznymi. I nie chodzi tutaj bynajmniej o porty szeregowe lub równoległe, chociaż mają one także pewien związek z tematem portów tutaj omawianych. Port jest to interfejs pomiędzy procesorem, a większością urządzeń zewnętrznych takich jak kontroler stacji dyskietek, porty szeregowe, równoległe, kontroler IDE, klawiatura, czy też karta graficzna. Każdy port posiada swój unikalny dwubajtowy numer, np. 0x3f0 (jeden z portów kontrolera stacji dyskietek).

Najważniejsze porty

000-01f - Kontroler DMA (Direct Memory Access)
020-03f - Kontroler przerwań 8259A
040-05f - Programowalny licznik 8253-5
060-06f - Kontroler klawiatury (klawiatura)
070-07f - Zegar czasu rzeczywistego, CMOS
0a0-0bf - Drugi kontroler przerwań 8259A
0c0-0df - Drugi kontroler DMA
170-177 - Port drugiego dysku twardego
1f0-1f7 - Port pierwszego dysku twardego
278-27f - Port równległy #2
2f8-2ff - Port szeregowy #2
370-377 - Kontroler drugiego napędu dyskietek
378-3ff - Port równoległy
3f0-3f7 - Kontroler napędu dyskietek
3f8-3ff - Port szeregowy

Podane numery portów mogą się w rzeczywistości różnic, w zależności od komputera oraz konfiguracji w BIOS'ie, jednak zwykle zgadzają się z powyższą listą.

Dostęp do portów

W celu dostępu do portów procesor x86 oferuje odpowiednie instrukcje. Istnieje możliwość odczytu z portu po bajcie, słowie lub słowie podwójnym, jak również zapisu do portu.

Aby odczytać z portu, można posłużyć się instrukcją

IN PORT, WARTOŚĆ

aby zapisać

OUT PORT, WARTOŚĆ

Dla zainteresowanych odsyłam do dokumentacji Intela, lub strony na temat Assemblera z linków.

Dokumentacja

[1] Ralf Brown's Interrupt (i nie tylko) List - wersja do ściągnięcia zawierająca listę portów

[2] IntelR 64 and IA-32 Architectures Software Developer's Manuals



Valid XHTML 1.1 License Poprawny CSS!
© 2007 by Tomek Figa na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne 2.5 Polska.