Krótki opis przerwań obsługi klawiatury i dysków IBM PC

samson
  1. Omówienie przerwań obsługi klawiatury.

    Klawiatura w IBM PC obsługiwana jest przez BIOS. Mikroprocesor
    wbudowany w klawiaturę przesyła do karty głównej informacje o wciśnięciu, zwolnieniu i przekroczeniu kolejnego interwału
    przytrzymywania każdego klawisza. Nadchodzenie tych informacji sygnalizowane jest przerwaniem o numerze 9 (sprzętowe
    klawiatury). Rejestry wejścia klawiatury mieszczą się w przestrzeni wejścia/wyjścia od adresu 0060H poczynając.
    Nie wydaje się rozsądne przejmowanie obsługi tego przerwania, chociażby z tego powodu, że protokoły komunikacji klawiatur
    XT i AT są mocno skomplikowane. Na potrzeby DOS'u i programów użytkowych BIOS udostępnia przerwanie o numerze
    22(16H), a w jego ramach trzy podstawowe funkcje:

    • gdy AH=0 po wywołaniu rozkazem INT 22 podprogram obsługi udostępnia kolejny znak oczekujący w buforze klawiatury lub,
      gdy bufor jest pusty, oczekuje na przyciśnięcie klawisza generującego znak i po jego nadejściu umieszcza kod podstawowy
      (ASCII) znaku w AL, zaś kod pomocniczy w AH;
    • gdy AH=1 po wywołaniu rozkazem INT 22 podprogram obsługi sprawdza, czy w buforze klawiatury oczekuje znak .
      Jeśli znak oczekuje, jego kod podstawowy zostaje umieszczony w AL, zaś pomocniczy w AH, ustawiany jest wskaźnik ZF=0;
      jeśli brak znaku, następuje tylko ustawienie wskaźnika ZF=1; nie występuje oczekiwanie na naciśnięcie klawisza;
    • gdy AH=2 po wywołaniu rozkazem INT 22 podprogram obsługi umieszcza w rejestrze AL stan bajtu klawiszy specjalnych
      "shift", w którym poszczególne bity są interpretowane jako:
      7 - stan Insert(związany z klawiszem Ins)
      6 - stan CapsLock
      5 - stan NumLock
      4 - stan ScrollLock
      3 - Alt
      2 - Ctrl
      1 - lewy klawisz Shift
      0 - prawy Shift
      bity 3..0 odpowiadają bieżącemu stanowi(wciśnięty- 1, zwolniony- 0) odpowiednich klawiszy, zaś bity 4..7 zachowują się jak
      przerzutniki: każde naciśnięcie odpowiedniego klawisza powoduje zmianę stanu bitu na przeciwny.
      Wersje BIOS'u (z datą generacji po 11/15/85) dla AT udostępniają dodatkowo funkcję 16,17 i 18(10H,11H i 12H) przeznaczone
      głównie do obsługi klawiatur 102- znakowych. Wymienione tu funkcje przerwania 22(16H) nie dają odbicia znaku na
      ekran- tzw. echa:
    • AH=12h-funkcja ta działa podobnie jak funkcja AH=02h , lecz jest od niej nieco lepsza. Zapisuje w rejestrze AX stan klawiszy
      dodatkowych(ustawienie poszczególnych bitów oznacza , że klawisz jest aktywny):
      AL :
      7 - stan Insert(związany z klawiszem Ins)
      6 - stan CapsLock
      5 - stan NumLock
      4 - stan ScrollLock
      3 - Alt
      2 - Ctrl
      1 - lewy klawisz Shift
      0 - prawy Shift

AH- dodatkowe informacje:
bit 0 (8) - lewy Ctrl
bit 1 (9) - lewy Alt
bit 2 (10) - prawy Ctrl
bit 3 (11) - prawy Alt
bit 4 (12) - Scroll Lock
bit 5 (13) - Num Lock
bit 6 (14) - Caps Lock
bit 7 (15) - SysReq

Przerwanie 21:
AH=1 - wczytanie z klawiatury z echem
przerwanie zwraca:
AL = Znak z standardowego urządzenia wejścia

  • czeka na dane z STDIN i wyświetla na STDOUT
  • zwraca 0 dla rozszerzonych klawiszy, później funkcja musi być
    wywołana ponownie by odczytać skankod

    • jeżeli wciśnięto ~Ctrl-Break~, uruchamiane jest ~INT 23~

      AH=0CH - Czyść bufor klawiatury, uruchom funkcję wczytania
      AL = 01, 06, 07, 08 lub 0A (funkcje wczytania INT 21)
      przerwanie zwraca:

      • główną funkcją jest wyczyszczenie bufora klawiatury i wywołanie
        INT 21 z określoną (w AL) funkcją
  1. Przerwania obsługi dysków.

Przerwanie 13H- obsługa dyskietki/dysku
AH=0- inicjacja systemu dyskowego

AH=1- odczyt statusu ostatnio wykonanej operacji dyskowej
Wyniki : AL=0 - operacja wykonana prawidłowo,
AL=1 - nielegalny rozkaz dla sterowników dysków,
AL=2 - nie znaleziono znacznika,
AL=3 - próba zapisu na zabezpieczoną dyskietkę,
AL=4 - nie znaleziono sektora,
AL=6 - nie ma dyskietki w mechanizmie,
AL=8 - błąd w kanale DMA,
AL=9 - przekroczenie granicy adresowej dla kanału DMA,
AL=16 - błąd sumy kontrolnej CRC,
AL=32 - błąd sprzętowy sterownika dysków NEC 765,
AL=64 - błąd pozycjonowania głowicy,
AL=128 - przekroczony czas operacji,

AH=2- odczyt sektorów
Wejście: DL - numer stacji dysków(0 - pierwszy dla dysków elastycznych, 80H - pierwszy dla dysków stałych),
DH- numer głowicy,
CL- numer sektora,
CH- numer ścieżki,
AL- liczba sektorów,
ES:BX- adres początkowy bufora operacji,
Wyjście: AH- kod statusu,
AL- liczba rzeczywiście przeczytanych sektorów,
Znacznik C=0 - operacja wykonana prawidłowo,

AH=3 - zapis sektorów
AH=4 - weryfikacja sektorów
Wejście: DL- numer stacji dysków(0 - pierwszy dla dysków elastycznych, 80H - pierwszy dla dysków stałych),
DH- numer głowicy,
CH- numer ścieżki,
CL- numer pierwszego sektora,
AL- liczba sektorów,
ES:BX- adres bufora,
Wyjście: AH- wynik operacji,
AL- liczba sektorów, na których wykonano operację,
Bit znacznika C=1, gdy wystąpi błąd.

AH=5 - formatowanie sektorów
Wejście: DL- numer stacji dysków(0 - pierwszy dla dysków elastycznych, 80H - pierwszy dla dysków stałych),
DH- numer głowicy,
CH- numer ścieżki,
ES:BX- adres tabeli 4- bitowych pól adresowych

Przerwanie 1EH- parametry napędu dyskietek

Przerwanie 25H- odczytanie sektorów z dysku. Przerwanie to pozwala na fizyczny odczyt kolejnych sektorów. Odczyt następuje do PAO.
Wejście: DX- numer pierwszego odczytywanego sektora,
CX- liczba sektorów do odczytu,
AL- numer stacji dysków, 0=A(stacja A), 1=B, itd.
DS:BX- adres bufora odczytu,
Wyjście: flaga C=0 operacja odczytu przebiegła pomyślnie,
flaga C=1 błędna operacja odczytu, błędy zakodowane w rejestrach AL i AH.

Przerwanie 26H- zapisanie sektorów na dysku. Przerwanie to pozwala na fizyczny zapis kolejnych sektorów.
Wejście: DX- numer pierwszego zapisanego sektora logicznego,
CX- liczba sektorów,
AL- numer stacji,
DS:BX- adres bufora PAO zapisu
Wyjście: flaga C=0 operacja zapisu przebiegła pomyślnie,
flaga C=1 błędna operacja zapisu,

Przerwanie 40H- obsługa dyskietek( gdy jest twardy dysk)

Przerwanie 41H- parametry dysku stałego 1 (tablica)

Przerwanie 46H- parametry dysku stałego 2 (tablica)

3 komentarzy

It's nice to see that some people still understand how to write a quality post free netflix gift code generator

Showbox for Smart TV is the excellent and highly used applications to stream the movies in no time. It is used by a vast number of people all over the world. The Showbox allows you to stream almost any video without any hassle. Showbox provides you with the video files which are high in quality.

Przerwanie 26H- zapisanie sektorów na dysku. Przerwanie to pozwala na fizyczny zapis kolejnych sektorów.
Wejście: DX- numer pierwszego zapisanego sektora logicznego,
CX- liczba sektorów,
AL- numer stacji,
DS:BX- adres bufora PAO zapisu
Wyjście: flaga C=0 operacja zapisu przebiegła pomyślnie,
flaga C=1 błędna operacja zapisu,
pillows reviews
Przerwanie 40H- obsługa dyskietek( gdy jest twardy dysk)

Przerwanie 41H- parametry dysku stałego 1 (tablica)

Przerwanie 46H- parametry dysku stałego 2 (tablica)