Kurs programowania w asemblerze
Porty
Sterownik każdego urządzenia zewnętrznego dołączonego do mikrokomputera IBM PC jest widziany jako pewna grupa rejestrów. Dostęp do tych rejestrów jest zrealizowany przez tzw. porty. Określenie "port" jest używane w dwóch znaczeniach: jako sterownik całego urządzenia (np. port szeregowy) lub jako miejsce w wyróżnionej przestrzeni adresowej wejścia/wyjścia procesora. Ta przestrzeń adresowa (1 KB) podzielona została na dwie 512 bajtowe grupy, które przeznaczone są dla rejestrów wejścia/wyjścia, płyty głównej i różnych modułów systemowych.
Do operacji zapisu i odczytu z portów służą dwie instrukcje: IN oraz OUT. W Pascal'u służy do tego predefiniowana tablica Port.
Przykładowo chcąc odczytać sekundę na zegarze systemowym posługując się pamięcią CMOS napiszemy następujący ciąg instrukcji:
MOV AL,00H OUT 70H,AL IN AL,71H
lub za pomocą Pascala
PORT[$70]:=0;
czas:=PORT[$71];
Adresy urządzeń komputera IBM PC i PC XT
| Adres | Opis |
|---|---|
| 000-01F | Kontroler DMA - kanały od 0 do 3 |
| 020, 021 | Kontroler przerwań |
| 040-043 | Czasomierze systemowe |
| 060 | Klawiatura, zastosowanie pomocnicze |
| 070, 071 | Zegar czasu rzeczywistego/system CMOS, maska NMI |
| 081-083 i 087 | Rejestr strony DMA (0-3) |
| 0F0-0FF | Koprocesor matematyczny |
| 108-12F | Nieprzypisany, zarezerwowany przez firmę IBM dla jej zastosowań |
| 130-13F | Nieprzypisany |
| 140-14F | Nieprzypisany |
| 150-1EF | Nieprzypisany |
| 200-207 | Port gier |
| 208-20B | Nieprzypisany |
| 20C-20D | Zarezerwowany |
| 20E-21E | Nieprzypisany |
| 21F | Zarezerwowany |
| 220-22x | Nieprzypisany |
| 230-23x | Nieprzypisany |
| 240-247 | Nieprzypisany |
| 250-277 | Nieprzypisany |
| 278-27F | LPT2 lub LPT3 - port równoległy (IRQ5) |
| 280-2AF | Nieprzypisany |
| 2B0-2DF | Alternatywny port EGA |
| 2E1 | Magistrala GBIP 0 |
| 2E2-2E3 | Zbieranie danych 0 |
| 2E4-2E7 | Nieprzypisany |
| 2E8-2EF | COM 4 - czwarty port szeregowy (IRQ3) |
| 2F8-2FF | COM 2 - drugi port szeregowy (IRQ3) |
| 300-31F | Karta prototypowa IBM |
| 320-323 | Karta pierwszego dysku twardego komputera PC XT |
| 324-327 | Karta drugiego dysku twardego komputera PC XT |
| 328-32F | Nieprzypisany |
| 330-33F | Nieprzypisany |
| 340-34F | Nieprzypisany |
| 350-35F | Nieprzypisany |
| 360-363 | Karta sieciowa PC - niski port wejścia-wyjścia |
| 364-367 | Zarezerwowane |
| 368-36A | Karta sieciowa PC - wysoki port wejścia-wyjścia |
| 36C-36F | Zarezerwowane |
| 370-377 | Karta drugiej stacji dyskietek |
| 378-37F | LPT2 lub LPT1 - pierwszy lub drugi port równoległy (IRQ7) |
| 380-389 | Nieprzypisany |
| 380-38C | BISYNC_1 lub SDLC_2 |
| 390-393 | Karta Cluster |
| 394-3A9 | Nieprzypisany |
| 3A0-3AC | BISYNC_2 lub SDLC_1 |
| 3B0-3BF | Monochromatyczna karta graficzna |
| 3BC-3BF | LPT 1 - pierwszy port równoległy (IRQ7)- część monochromatycznej karty graficznej |
| 3C0-3CF | Karta graficzna EGA |
| 3D0-3DF | Karta graficzna CGA |
| 3E0-3E7 | Nieprzypisany |
| 3E8-3EF | COM3 - trzeci port szeregowy (IRQ4) |
| 3F0-3F7 | Karta pierwszej stacji dyskietek |
| 3F8-3FF | COM1 - pierwszy port szeregowy (IRQ4) |
Adresy urządzeń komputera IBM PC AT
| Adres | Opis |
|---|---|
| 000-01F | Kontroler DMA - kanały od 0 do 3 |
| 020, 021 | Kontroler przerwań |
| 040-043 | Czasomierze systemowe |
| 060 | Klawiatura, zastosowanie pomocnicze |
| 070, 071 | Zegar czasu rzeczywistego/system CMOS, maska NMI |
| 081-083 i 087 | Rejestr strony DMA (0-3) |
| 089-08B i 08F | Rejestr strony DMA (4-7) |
| 0A0-0A1 | Kontroler przerwań 2 |
| 0C0-0DE | Kontroler DMA - kanały od 4 do 7 |
| 0F0-0FF | Koprocesor matematyczny |
| 108-12F | Nieprzypisany, zarezerwowany przez firmę IBM dla jej zastosowań |
| 130-13F | Nieprzypisany |
| 140-14F | Nieprzypisany |
| 150-1EF | Nieprzypisany |
| 170-177 | Karta drugiego dysku twardego komputera PC AT |
| 1F0-1F7 | Karta pierwszego dysku twardego komputera PC AT |
| 200-207 | Port gier |
| 208-20B | Nieprzypisany |
| 20C-20D | Zarezerwowany |
| 20E-21E | Nieprzypisany |
| 21F | Zarezerwowany |
| 220-22x | Nieprzypisany |
| 230-23x | Nieprzypisany |
| 240-247 | Nieprzypisany |
| 250-277 | Nieprzypisany |
| 278-27F | LPT2 lub LPT3 |
| 280-2AF | Nieprzypisany |
| 2B0-2DF | Alternatywny port EGA |
| 2E1 | Magistrala GBIP 0 |
| 2E2-2E3 | Zbieranie danych 0 |
| 2E4-2E7 | Nieprzypisany |
| 2E8-2EF | COM 4 - czwarty port szeregowy |
| 2F8-2FF | COM 2 - drugi port szeregowy |
| 300-31F | Karta prototypowa IBM |
| 320-323 | Nieprzypisany |
| 324-327 | Nieprzypisany |
| 328-32F | Nieprzypisany |
| 330-33F | Nieprzypisany |
| 340-34F | Nieprzypisany |
| 350-35F | Nieprzypisany |
| 360-363 | Karta sieciowa PC - niski port wejścia-wyjścia |
| 364-367 | Zarezerwowane |
| 368-36A | Karta sieciowa PC - wysoki port wejścia-wyjścia |
| 36C-36F | Zarezerwowane |
| 370-377 | Karta drugiej stacji dyskietek |
| 378-37F | LPT2 lub LPT1 - pierwszy lub drugi port równoległy |
| 380-389 | Nieprzypisany |
| 380-38C | BISYNC_1 lub SDLC_2 |
| 390-393 | Karta Cluster |
| 394-3A9 | Nieprzypisany |
| 3A0-3AC | BISYNC_2 lub SDLC_1 |
| 3B0-3BF | Monochromatyczna karta graficzna |
| 3BC-3BF | Pierwszy port równoległy - część monochromatycznej karty graficznej |
| 3C0-3CF | Karta graficzna EGA |
| 3D0-3DF | Karta graficzna CGA |
| 3E0-3E7 | Nieprzypisany |
| 3E8-3EF | COM3 - trzeci port szeregowy |
| 3F0-3F7 | Karta pierwszej stacji dyskietek |
| 3F8-3FF | COM1 - pierwszy port szeregowy |
Adresy urządzeń w komputerach PS/2
| Adres | Opis |
|---|---|
| 061-06F | Systemowy port sterujący B (PS/2) |
| 090 | Centralny arbitażowy port sterujący (PS/2) |
| 091 | Sprzężenie zwrotne wybierania kart (PS/2) |
| 092 | Systemowy port sterujący A (PS/2) |
| 094 | Włączenie płyty systemowej/Rejestr konfiguracji |
| 096 | Włączenie karty/Rejestr konfiguracji |
| 100-107 | Programowe wybieranie opcji w komputerze PS/2 |
| 3220-3227 | COM2 - trzeci port szeregowy MicroChannel |
| 3228-322F | COM3 - czwarty port szeregowy MicroChannel |
| 4220-4227 | COM4 - piąty port szeregowy MicroChannel |
| 4228-422F | COM5 - szósty port szeregowy MicroChannel |
| 5220-3227 | COM5 - siódmy port szeregowy MicroChannel |
| 5228-322F | COM6 - ósmy port szeregowy MicroChannel |
Ports - Mapa wszystkich portów komputera 75.5KB
