|
|
Kierunek Informatyka
|
|||
|
|
||||
Instrukcja do ćwiczeń laboratoryjnych nr:
|
2
|
Nazwa przedmiotu:
|
||
Temat: Rejestry, rozkazy procesora oraz
przerwania
|
Tryb
studiów: stacjonarny |
|||
|
Czas trwanie ćw. 2x45 min |
||||
|
Autor materiałów:
dr Marcin Skuba |
||||
I.
Treści programowe
Struktura programu, edycja i
kompilacja programu, rejestry procesora, rozkazy procesora 8086, przerwania
DOS, BIOS,
II. Cel ćwiczenia
Zapoznanie
się z zasadą działania rozkazów procesora, pracy procesora, używania rozkazów
procesora oraz wykorzystanie przerwań DOS-u.
III.
Materiały dydaktyczne:
1. Rejestry procesora:
Rejestr
procesora to zespół układów elektronicznych, mogący przechowywać informacje
(pamięć wewnętrzna procesora).
Rejestry są kilkubajtową pamięcią wbudowaną do procesora, do której procesor ma
najszybszy dostęp.
Większość rejestrów może być dowolnie modyfikowana przez programistę tak, że
mogą one pełnić rolę podobną do zmiennych w językach wysokiego poziomu.
Dla procesora 8086 używany
rejestrów dwubajtowych ..X

Opis
wybranych rejestrów procesora:
Rejestry ogólnego przeznaczenia:
Rejestry segmentowe.
|
Nazwa |
ilość bitów |
opis |
|
CS |
16 |
segment kodu |
|
DS |
16 |
segment danych |
|
ES |
16 |
segment dodatkowy |
|
SS |
16 |
segment stosu |
2. Rozkazy procesora:
Rozkazy
procesora (instrukcje) to najprostsze, elementarne polecenia, które
procesor potrafi zrozumieć i wykonać bezpośrednio na poziomie sprzętowym.
Większość
instrukcji sprowadza się do trzech prostych czynności:
Cykl
pracy procesora
Każdy
rozkaz przechodzi przez trzy etapy:
Rozkaz
MOV
MOV AX, 0FFFFh ; oznacza przypisanie wartości 0FFFFh do
rejestru AX (ax=0FFFFh)
MOV AL, 0FFh ; oznacza przypisanie wartości 0FFh do prawej
części rejestru AX czyli do AL.
MOV AX, BX ; oznacza przypisanie wartości z rejestru
BX do rejestru AX
3. Przerwania
Przerwanie (ang. interrupt) to mechanizm,
który pozwala procesorowi (CPU) tymczasowo przerwać wykonywanie bieżącego
programu, aby zająć się innym, ważniejszym zadaniem. Po obsłużeniu
przerwania procesor wraca do miejsca, w którym przerwał pracę, i kontynuuje
wykonywanie programu.
Dzięki
przerwaniom komputer może reagować na zdarzenia w czasie rzeczywistym, takie
jak naciśnięcie klawisza czy zakończenie operacji wejścia/wyjścia.
Rodzaje
przerwań
1. Przerwania sprzętowe (hardware interrupts)
Są
generowane przez urządzenia zewnętrzne, takie jak: klawiatura, mysz, dysk twardy, zegar
systemowy.
Ich
zadaniem jest poinformowanie procesora, że wystąpiło jakieś zdarzenie
wymagające reakcji. Procesor przerywa aktualne zadanie i uruchamia odpowiednią
procedurę obsługi przerwania.
2. Przerwania programowe (software interrupts)
Są
wywoływane bezpośrednio przez program za pomocą specjalnej instrukcji (np. INT
w asemblerze).
Używa się
ich do:
·
wywoływania
funkcji systemu operacyjnego,
·
korzystania
z usług BIOS-u lub DOS-u.
Przykład:
·
int
21h – funkcje systemu DOS
·
int
10h – obsługa ekranu (BIOS)
3. Przerwania BIOS
To
specjalny rodzaj przerwań programowych, które zapewniają bezpośredni dostęp
do sprzętu poprzez firmware komputera (BIOS).
·
działają
na niskim poziomie,
·
są
niezależne od systemu operacyjnego,
·
umożliwiają
obsługę podstawowych urządzeń.
Przykłady:
·
int
10h – obsługa ekranu
·
int
16h – obsługa klawiatury
·
int
13h – obsługa dysków
4. Przerwania systemowe (np. DOS)
Są
dostarczane przez system operacyjny i oferują wygodniejsze, wyższego poziomu
funkcje.
·
słatwiejsze
w użyciu niż BIOS,
·
często
korzystają wewnętrznie z BIOS-u,
·
umożliwiają
pracę z plikami, tekstem i urządzeniami.
Przykład:
·
int
21h – główne przerwanie systemu DOS
Wybrane
przerwania i funkcje:
Przerwanie int 21h (DOS) - służy do
wykonywania funkcji systemu operacyjnego:
1 — czytaj klawiszAH = 1AL = Kod ASCII klawisza2 — wyświetl znakAH = 2,DL = Kod ASCII znaku9 — wyświetl napisAH = 9,DS:DX = Adres napisu zakończony znakiem dolara2A — pobierz datę systemowąAH = 2AhCX = Rok (1980-2099),DH = Miesiąc,DL = Dzień,AL = Dzień tygodnia (0 = niedziela)2C — pobierz czas systemowyAH = 2ChCH = Godzina,CL = Minuta,DH = Sekunda,DL = 1/100 sekundy (na niektórych systemach może
być zawsze zero)Przerwanie int 16h (BIOS) – do
obsługi klawiatury:
0 — pobierz kod naciśniętego
klawisza (czeka na naciśnięcie)AH = 0AL = Kod ASCII klawisza,AH = BIOSowy kod
klawisza (skankod)1 — sprawdź czy naciśnięto klawiszAH = 1,AL = Kod ASCII klawisza,AH = BIOSowy kod
klawisza (skankod)ZF,
gdy naciśnięto klawisz.ZF w przeciwnym wypadku.Przerwanie int 15h
(BIOS) – usługi systemowe i sprzętowe:
86h — zatrzymaj program na
określony czasAH = 86h,CX:DX — czas w mikrosekundach
(np. CX=1Eh, DX=8480h to 2 sekundy)Przykład deklaracji
zmiennej przechowującej tekst z przejściem do następnej linii:
info db "Pans Krosno",13,10,"$"

Napisz
program, który pobiera znak z klawiatury oraz wyświetla go na ekranie monitora.
Użyj przerwania DOS. Dodatkowo w drugiej linii program wyświetla napis „KONIEC”
Napisz
program, który wyświetli trzy litery ABC na ekranie. Użyj funkcji nr 2
przerwania 21h.
Napisz
program, który pobiera dwa znaki z klawiatury oraz wyświetla je w odwrotnej
kolejności na ekranie. Do pobrania wartości z klawiatury użyj funkcji Biosu do
obsługi klawiatury.
Napisz
program wyświetlający cztery duże litery „PANS ” na ekranie monitora w
odstępach jednej sekundy.
Napisz
program pobierający datę systemową. Używając Turbo Debuggera
sprawdź wartości rejestrów przechowujących dzień, miesiąc oraz rok według opisu
powyżej. Zawartości rejestrów przelicz do wartości dziesiętnych. Wynik
przedstaw w sprawozdaniu.