kolo1 opracowania (stare)

background image

ASK - PYTANIA NA KOŁO I

A) Podstawowe zasady działania komputera.

1) Omówić koncepcję programu w modelu komputera wg von Neumanna.


Procesor składa się z wielu różnych podzespołów, które wykonują określone działania, np.
sumowanie liczb, wskutek otrzymania sygnałów z innych modułów. Zatem realizacja
przetwarzania w procesorze (np. wykonanie jakiegoś obliczenia) wymaga skierowania do
tych podzespołów odpowiednich sygnałów. Ażeby było to możliwe, program (w sensie
modelu von Neumanna) musi być przekształcony na poprawną sekwencję sygnałów,
oddziaływujących na sprzęt. Program ten musi być bezpośrednio dostępny, tak by
niezwłocznie po zakończeniu jednej operacji można było zacząć następną. Oznacza to, że
program musi być przechowywany w pamięci ściśle współdziałającej z procesorem.
Wynikają z tego od razu dwa wnioski:
-pamięć współpracująca z procesorem musi być dostatecznie szybka, tak by oczekiwanie na
odczytanie potrzebnych informacji nie powodowało przestojów w pracy procesora;
-ponieważ wszelkie przetwarzane informacje mają charakter binarny, więc także program
przechowywany w pamięci musi być zakodowany w postaci binarnej.
Sam program składa się z ciągu poleceń (przechowywanych w pamięci operacyjnej),
zakodowanych w sposób zrozumiały dla procesora.
Ponadto wykonywany program może się sam modyfikować traktując obszar instrukcji jako
dane, a po przetworzeniu tych instrukcji - danych - zacząć je wykonywać.

2) Wyjaśnić znaczenie terminu ‘lista rozkazów procesora’.


Ażeby uprościć programowanie, przyjęto pewien podstawowy zbiór operacji (dla
konkretnego typu procesora) i każdej operacji przypisano ustalony kod w postaci ciągu
zerojedynkowego. Do zbioru operacji podstawowych należą zazwyczaj cztery działania
arytmetyczne, operacje logiczne na bitach (negacja, suma logiczna, iloczyn logiczny),
operacje przesyłania, operacje porównywania i wiele innych. W takim ujęciu zadaniem
układu sterowania procesora po odczytaniu takiego ciągu jest wygenerowanie odpowiedniej

Procesor

Pamięć

Urządzenia

wejścia/wyjścia

Jednostka

arytm. – logiczna

Jednostka

sterująca

Rozkazy

Dane

background image

sekwencji sygnałów do poszczególnych podzespołów, tak by w rezultacie wykonać
wymaganą operację (np. dodawanie).
Operacje zdefiniowane w zbiorze podstawowym nazywane są rozkazami lub instrukcjami
procesora.
Podstawowy zbiór operacji procesora jest zwykle nazywany listą rozkazów procesora.

3) Na czym polega różnica między pamięcią fizyczną i pamięcią wirtualną w komputerze?


Pami
ęć fizyczna
Rozkazy (instrukcje) programu odczytujące dane z pamięci operacyjnej (czy też zapisujące
wyniki) zawierają informacje o położeniu danej w pamięci, czyli zawierają adres danej; w
wielu procesorach adres ten ma postać adresu fizycznego, czyli wskazuje jednoznacznie
fizyczną komórkę pamięci,

gdzie znajduje się potrzebna dana; w trakcie operacji odczytu adres

fizyczny kierowany do układów pamięci poprzez linie adresowe, a ślad za tym układy
pamięci odczytują i odsyłają potrzebną daną.

Pami
ęć wirtua1na
Pamięć operacyjna komputera w kształcie widzianym przez programistę. Jest pewną iluzją
pamięci rzeczywistej (fizycznej).
Pozwala na odseparowanie pamięci logicznej użytkownika od pamięci fizycznej.
-można jedynie część programu załadować do pamięci w celu wykonania;
-logiczna przestrzeń adresowa procesu może dlatego być znacznie większa niż fizyczna
przestrzeń adresowa;
-potrzeba wymiany stron między dyskiem a pamięcią.

4) Jaką rolę w trakcie wykonywania programu przez procesor pełni wskaźnik instrukcji (liczik
rozkaz

ów)?


Proces pobierania kolejnych instrukcji z pamięci operacyjnej i ich wykonywania musi być

precyzyjnie zorganizowany, tak by natychmiast po wykonaniu kolejnej instrukcji procesor
pobierał z pamięci następną; aby pobrać tę instrukcję, procesor musi oczywiście znać jej
położenie w pamięci operacyjnej — informacje o położeniu kolejnej instrukcji są
umieszczone w specjalnym rejestrze, nazywanym wskaźnikiem instrukcji;

3l

l5

7 o

EIP

IP


W architekturze IA–32 wskaźnik instrukcji jest rejestrem 32-bitowym oznaczonym symbolem
EIP.

5) Omówić klasę instrukcji procesora, które mają zdolność do zmiany naturalnego porządku
wykonywania rozkazów.


Instrukcje sterujące warunkowe

na ogół nie wykonują żadnych obliczeń, ale tylko

sprawdzają, czy uzyskane wyniki mają oczekiwane własności. W zależności od rezultatu
sprawdzenia wykonywanie programu może być kontynuowane przy zachowaniu naturalnego
porządku instrukcji albo też porządek ten może być zignorowany poprzez przejście do
wykonywania instrukcji znajdującej się w odległym miejscu pamięci operacyjnej.

background image

Istnieją też instrukcje sterujące zwane bezwarunkowymi, których jedynym zadaniem jest
zmiana porządku wykonywania instrukcji (nie wykonują one żadnego sprawdzenia).
W architekturze IA–32 rozmaite instrukcje sterujące testują zawartość pojedynczych bitów w
rejestrze znaczników, a niekiedy obliczają pewne wyrażenia logiczne określone na tych
bitach. Dla każdej instrukcji sterującej (warunkowej) określono testowany warunek, np. dla
instrukcji sterującej:
jz warunek jest spełniony, gdy znacznik ZF = 1;
jnz warunek jest spełniony, gdy znacznik ZF = 0;
ja warunek jest spełniony, gdy znaczniki CF = 0 i ZF = 0.
W zależności od tego czy warunek jest spełniony czy nie, do wskaźnika instrukcji EIP
wpisywane są inne wartości, jak podano poniżej;
Obliczanie EIP przez instrukcje sterujące:
1. gdy testowany warunek jest spełniony:
EIP ← EIP + <liczba bajtów aktualnie wykonywanej instrukcji> + <zawartość pola
adresowego instrukcji>
2. gdy testowany warunek nie jest spełniony:
EIP ← EIP + <liczba bajtów aktualnie wykonywanej instrukcji>

6) Omówić funkcje znaczników CF i ZF w ‘rejestrze znaczników’.


W trakcie wykonywania niektórych instrukcji (rozkazów) ustawiane są również znaczniki
(rejestry jednobitowe) — znaczniki te, zebrane razem, tworzą 32-bitowy rejestr znaczników
EF (lub EFLAGS) o strukturze podanej na rysunku:

0

1

2

3

4

5

6

7

8

9

11

12

13

14

15

10

16

17

18

19

20

21

31

ID VIP VIF AC VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF

CF (ang. carry) znacznik przeniesienia - do znacznika tego wpisywane jest przeniesienie
(pożyczka) z najbardziej znaczącego bitu; znacznik używany jest do sygnalizacji nadmiaru w
operacjach na liczbach bez znaku;

ZF (ang. zero) znacznik zera - znacznik ten ustawiany jest w stan 1, gdy wynik operacji
arytmetycznej lub logicznej jest równy 0 i zerowany w przypadku przeciwnym;

7) Omówić podstawowe elementy architektury koprocesora arytmetycznego.


Koprocesor arytmetyczny stanowi odrębny procesor, współdziałający z procesorem głównym,
i w przypadku Pentiuma znajdujący się w tej samej obudowie;

liczby, na których wykonywane są obliczenia, składowane są w 8 rejestrach 80-bitowych
tworzących stos;

rozkazy koprocesora adresują rejestry stosu nie bezpośrednio, ale względem wierzchołka
stosu; w kodzie asemblerowym rejestr znajdujący się na wierzchołku stosu oznaczany jest
ST(0) lub ST, a dalsze ST(1), ST(2),..., ST(7); ze względu na specyficzny sposób
adresowania koprocesor arytmetyczny zaliczany jest do procesorów o architekturze stosowej;

mechanizmy stosu rejestrów koprocesora są analogiczne do mechanizmów stosu w
procesorze (m.in. stos rośnie w kierunku malejących numerów rejestrów);

background image


lista rozkazów koprocesora arytmetycznego zawiera rozkazy wykonujące działania na
liczbach zmiennoprzecinkowych, w tym rozkazy przesłania, działania arytmetyczne,
obliczanie pierwiastka kwadratowego, funkcji trygonometrycznych (sin, cos, tg, arc tg),
wykładniczych i logarytmicznych;

B) Kodowanie danych i instrukcji.

1) Omówićżne rodzaje kodowania liczb binarnych w komputerze.

Kodowanie liczb całkowitych:

W przypadku liczb bez znaku stosowany jest naturalny kod binarny, wartość liczby określa

w

x

i

i

i

m

=

=

2

0

1

, gdzie m oznacza liczbę bitów rejestru lub komórki pamięci.

W przypadku liczb ze znakiem, kodowanych w systemie U2, wartość liczby określa formuła:

w

x

x

m

m

i

i

i

m

= −

+

=

1

1

0

2

2

2

, gdzie m oznacza liczbę bitów rejestru lub komórki pamięci.

W przypadku kodowania w systemie BCD, każdy upakowany bajt zawiera dwie cyfry

dziesiętne, za to nie upakowany bajt zawiera jedną cyfrę dziesiętną (4 starsze bity są

wyzerowane).

Liczby zmiennoprzecinkowe kodujemy za pomocą mantysy i wykładnika.

mantysa * 2 ^ wykładnik,

gdzie: wartość bezwzględna mantysy należy do przedziału [1, 2).

Podane wyrażenie w rea1izacjach komputerowych ma nieco inna postać.

2) Podać w przybliżeniu zakresy liczb, które mogą być kodowane w postaci binarnej jako
liczby bez znaku na 16 lub 32 bitach.


liczby 16-bitowe

<0, 65535>

liczby 32-bitowe

<0, 4 294 967 295>

3) W jaki sposób w procesorach z IA-32 sygnalizowane jest wystąpienie nadmiaru w
operacjach dodawania, odejmowania?


Dodawanie – ustawiane są znaczniki OF ( liczby ze znakiem) lub CF (liczby bez znaku)

Odejmowanie – ustawiane są znaczniki OF (liczby ze znakiem) lub CF (liczby bez znaku)

background image

4) Przedstawić w postaci graficznej schemat konwersji liczb 32-bitowych zapisanych w
pami
ęci wg reguły mniejsze niżej na postać mniejsze wyżej.


W produkowanych obecnie procesorach stosuje się dwa podstawowe schematy
rozmieszczenia poszczególnych bajtów liczb w pamięci: mniejsze niżej (ang. little endian) i
mniejsze wyżej

(ang. big endian);


Do konwersji liczby zapisanej w formacie mniejsze niżej na format mniejsze wyżej (i
odwrotnie) można zastosować rozkaz BSWAP

Rejestr
32-bitowy

31

24 23

16 15

8 7

0

5) Omówić technikę porównywania liczb stałoprzecinkowych stosowaną w procesorach z IA-
32.


CMP – instrukcja porównująca ustawia znaczniki ZF i CF, ale nigdzie nie zapisuje wyniku
operacji (odejmowanie).

Porównanie (CMP bx, cx):

Jeżeli liczba w bx = cx to ZF=1 i CF=0
Jeżeli liczba w bx > cx to ZF=0 i CF=0
Jeżeli liczba w bx < cx to ZF=0 i CF=1

Dla liczb ze znakiem sprawdza się zawartość znaczników ZF, OF, SF;
Dla liczb bez znaku sprawdza się zawartość znaczników ZF i CF za pomocą instrukcji
bitowych.


6) Dlaczego obliczenia na liczbach stałoprzecinkowych s
ą kłopotliwe jeśli działania
wykonywane s
ą na wartościach bardzo dużych i bardzo małych?


Przykładowo, można przyjąć format kodowania podany na poniższym rysunku:

0

1

2

3

4

5

6

7

8

9

11

12

13

14

15

10

bit znaku

2

-2

2

-3

2

-4

2

-5

3

2

2

2

1

2

0

2

-1

2

6

2

5

2

4

2

2

9

2

8

2

7

background image

Podany wyżej sposób kodowania jest kłopotliwy w przypadku, gdy obliczenie wykonywane
jest na liczbach bardzo dużych i bardzo małych, np. obliczenie stałej czasowej obwodu RC:

R = 4.7 M , C = 68 pF

RC

=

=

4 7 10 68 10

3196 10

6

12

6

.

.

Wartości R i C w postaci binarnej mają postać

R = 01000111 10110111 01100000

C = 0.00000000 00000000 00000000 00000000 01001100 . . . . .

z tego względu obliczenia na liczbach niecałkowitych wykonywane są zazwyczaj w
arytmetyce zmiennoprzecinkowej (zmiennopozycyjnej); w architekturze IA-32 zdefiniowana
jest znaczna liczba rozkazów wykonujących działania na liczbach zmiennoprzecinkowych
przetwarzanych przez koprocesor arytmetyczny.

7) Co oznacza termin ‘wartości specjalne’ używany w kontekście koprocesora
arytmetycznego.


Są to liczby generowane w wyniku błędu, nie mogą być przedstawione w zwykły sposób.
Spośród dopuszczalnych wartości liczb wyłączono niektóre i nadano im znaczenie specjalne.

Takie liczby określane są terminem wartości specjalne; wartości specjalne mogą być
argumentami obliczeń tak jak zwykłe liczby; jeśli jeden z argumentów jest wartością
specjalną, to wynik jest też wartością specjalną – w wielu przypadkach obserwuje się
propagację wartości specjalnych.


W koprocesorze arytmetycznym przyjęto, że wszystkie liczby, których pole wykładnika
zawiera same zera lub same jedynki traktowane są jako wartości specjalne;

W zależności od ustawienia bitów w rejestrze sterującym koprocesora, wystąpienie wartości
specjalnej może powodować przerwanie (wyjątek koprocesora), albo też obliczenia mogą być
kontynuowane.

8) Omówić format 32-bitowych liczb zmiennoprzecinkowych (pole mantysy zawiera 23 bity,
pole wykładnika zawiera 8 bitów)


Liczby zmiennoprzecinkowe, nazywane też zmiennopozycyjnymi, kodowane są w postaci pary

liczb określanych jako mantysa i wykładnik;


w przypadku ogólnym wartość liczby zmiennoprzecinkowej (różnej od zera) określa

wyrażenie:

Podane wyrażenie w realizacjach komputerowych ma zwykle nieco inną postać;

Pole wykładnika można interpretować jako liczbę pozycji, o którą trzeba przesunąć w lewo
lub w prawo umowną kropkę rozdzielającą część całkowitą i ułamkową mantysy;
Zazwyczaj wprowadza się warunek normalizacji mantysy (dla liczb ≠ 0)

1

2

<

mantysa

format 32-bitowy — liczby zapisane w tym formacie określane są jako liczby

zmiennoprzecinkowe krótkie

(ang. single precision);

mantysa

wykładnik

mantysa

wykladnik

2

background image






W formacie 32-bitowym część całkowita mantysy występuje w postaci niejawnej;

W formacie 32-bitowym można kodować liczby o wartościach do 3.37∗10

38

9) Omówić zasady wykonywania operacji arytmetycznych na stałoprzecinkowych liczbach

wielokrotnej długości.

Dodawanie – realizowane jest przy użyciu instrukcji ADD lub ADC. ADD dodaje do siebie

dwa argumenty, a wynik umieszcza w pierwszym z nich. Jeżeli wynik operacji nie mieści się

w argumencie docelowym ustawiony zostanie znacznik przeniesienia CF. ADC służy do

dodawania liczb wielobajtowych. Pozwala w trakcie dodawania uwzględnić przeniesienie

powstałe w przypadku dodawania młodszych bajtów.

Instrukcje ADD i ADC ustawiają znaczniki:

Nadmiaru OF (nadmiar przy dodawaniu)

Znaku SF (zgodnie ze znakiem)

Zera ZF (jeżeli wynik operacji=0)

Parzystości PF, gdy w wyniku jest parzysta liczba jedynek

Przeniesienia CF, gdy ustawiany jest najmłodszy bit argumentu

Przeniesienia pomocniczego AF


Odejmowanie – polega na dodaniu do pierwszego argumentu drugiego w postaci U2. Funkcja
SBB to odejmowanie dwóch liczb z pożyczką (odejmowanie bardziej znaczących słów liczby
wielobajtowej).Ustawiane są te same znaczniki, co w przypadku dodawania.

Mnożenie – przy korzystaniu z instrukcji mnożenia MUL (dla liczb bez znaku) i IMUL (dla
liczb ze znakiem) należy pamiętać, że wynik umieszczany jest w dwóch rejestrach.

Dzielenie – instrukcje DIV i IDV, trzeba pamiętać ze rozmiar dzielnej powinien być 2 razy
większy niż dzielnik ( 32-bit dzielimy przez 16-bit).

10) Dlaczego w formatach liczb zmiennoprzecinkowych zgodnych z normą 754 nie występuje
bit znaku wykładnika?


Przyjęto normę IEEE 754, która została opracowana z myślą, aby ułatwić przenoszenie
programów z jednego procesora do drugiego — określa ona specyficzne metody i procedury
służące temu, aby arytmetyka zmiennoprzecinkowa dawała jednolite i przewidywalne wyniki,
niezależnie od platformy sprzętowej; norma ta jest stosowana praktycznie we wszystkich
współczesnych procesorach i koprocesorach arytmetycznych;

Norma IEEE 754 określa też standardowe formaty liczb zmiennoprzecinkowych;
podstawowym formatem liczb jest format 64-bitowy; pokazano, że uzyskiwanie dokładnych
wyników 64-bitowych wymaga wykonywania niektórych obliczeń na liczbach 80-bitowych.

S

mantysa

8 bitów

23 bity

wykł.

format 32-bitowy

background image

Ponieważ nie ma jednoznaczności względem zera, gdyby był znak moglibyśmy zapisać +0 i
-0, a poza tym dzięki takiemu ułożeniu dostajemy dodatkowo jedną liczbę

.

11) Jakie wady i zalety ma kodowanie znaków w systemie Unicode?

Zalety:
-możesz zakodować 65536 znaków (co daje możliwość zakodowania wszystkich alfabetów
ś

wiata;), nie wymaga dzięki temu stron kodowych;

- jest jednoznaczny i znormalizowany;
- pozwala na pisanie w jednym dokumencie po angielsku chińsku i po łacinie;
Wady:
- jeden znak zajmuje 2 bajty przez co zajmuje to dwa razy więcej miejsca w pamięci

.

C) Mechanizmy adresowania


1) Omówić podstawowe zasady modyfikacji adresowych


Modyfikacje adresowe

- polegają na dodawaniu (sumowaniu) zawartości rejestrów

modyfikacji z polem adresowym rozkazu; adres lokacji pamięci, na której wykonywane jest
działanie określony jest nie tylko poprzez pole adresowe instrukcji, ale zależy również od
zawartości jednego lub dwóch wskazanych rejestrów;
W architekturze IA–32 dostępne są rozbudowane mechanizmy modyfikacji adresowych:

modyfikatorami mogą być 16-bitowe rejestry ogólnego przeznaczenia: BX, SI,

DI, BP, a także ich pary: (BX, SI), (BX, DI), (BP, SI), (BP, DI);

modyfikatorami mogą być dowolne 32-bitowe rejestry ogólnego przeznaczenia:

EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP;

może również wystąpić drugi rejestr modyfikacji spośród ww., z wyłączeniem

rejestru ESP;

drugi rejestr modyfikacji może być skojarzony z tzw. współczynnikiem skali,

który podawany jest w postaci ∗1, ∗2, ∗4, ∗8 — podana liczba wskazuje przez ile
zostanie pomnożona zawartość drugiego rejestru modyfikacji podczas obliczania
adresu;

obliczanie adresu efektywnego w trybie 32- i 16-bitowym wg reguły modulo 2

32

i 2

16

pozwala uzyskiwać adresy efektywne mniejsze niż zawartość pola adresowego —
odpowiednio duże liczby umieszczone w rejestrze modyfikacji działają tak liczby ujemne;

niekiedy pole adresowe instrukcji jest całkowicie pominięte, a wartość adresu określona

jest wyłącznie poprzez wskazane rejestry modyfikacji; takie rozwiązanie jest:

niezbędne, jeśli adres lokacji pamięci zostaje obliczony dopiero w trakcie

wykonywania programu (nie jest znany ani w trakcie kodowania programu przez
programistę ani też podczas translacji) — dotyczy to często kodu generowanego
przez kompilatory języków wysokiego poziomu;

szczególnie korzystne w przypadku wielokrotnego odwoływania się do tej samej

lokacji pamięci — ponieważ pole adresowe nie występuje, więc instrukcja może być
zapisana na mniejszej liczbie bajtów (zwykle 2 bajty);

Modyfikacja adresowa z użyciem rejestru EBP działa trochę inaczej; rejestr ten został
bowiem zaprojektowany do wspomagania operacji przekazywania parametrów do procedur za
pośrednictwem stosu — z tego względu użycie ww. rejestrów jako modyfikatorów powoduje,
ż

e operacja zostanie wykonana na danych zawartych w obszarze stosu;

background image

2) Wyjaśnić zasady adresowanie pośredniego.


Modyfikacja pośrednia

polega na wskazaniu komórki pamięci, w której znajduje się

potrzebny adres;
W architekturze IA-32 adresowanie pośrednie stosowane jest w instrukcjach sterujących
(skokowych).

Adres

007E2309H

007E230EH

007E230DH

007E230CH

007E230BH

007E230AH

007E2308H

007E2307H

007E2310H

007E2311H

007E230FH

007E2306H

007E2305H

007E2304H

007E2303H

007E2302H

kod operacji

007E2312H

007E230CH

pole adresowe

03H

23H

7EH

00H


3) Jaka wartość zostanie doprowadzona do rejestru DX po wykonaniu podanego niżej
fragmentu programu?

Dane3a SEGMENT
Linie dw421,422,443,442,444,427,432

- - - - - - - - - - - - - - - - -

polacz SEGMENT
ASSUME cs:polacz , ds:dane3a

- - - - - - - - - - - -- - - -- - -- -- -

mov esi, OFFSET linie + 4
mov ebx, 4
mov dx, [ebx][esi]

Odp. 442.

D) Programowanie w asemblerze


1) Wyjaśnić, na czym polega różnica między językiem maszynowym a językiem asemblera.


Algorytm, który jest zakodowany w postaci sekwencji ciągów zerojedynkowych, które są
zdefiniowane w podstawowym zbiorze operacji -> nazywamy programem w języku
maszynowym.
Program ten jest przechowywany w pamięci, a samo wykonanie programu polega na
przesłaniu kolejnych ciągów zerojedynkowych z pamięci głównej do układu sterowania
procesora. Po odczytaniu takiego ciągu jest generowana odpowiednia sekwencja sygnałów
kierowana do poszczególnych podzespołów. Język maszynowy jest generalnie trudny w
użyciu, znacznie wygodniejszy jest spokrewniony z nim ASEMBLER

background image

Zasadniczą różnicą między językiem maszynowym a językiem asemblera jest fakt, że
posługuje się skrótem literowym, tzw. mnemonikiem, który zastępuje w ten sposób ciąg zer i
jedynek;
Kodowanie programu w asemblerze powinno pozwalać na zapisywanie algorytmów za
pomocą pojedynczych rozkazów procesora; także definiowanie danych powinno być
realizowane na poziomie pojedynczych bajtów lub słów;

2) Omówić dyrektywy używane do definiowania danych na poziomie asemblera.


Dyrektywa nie jest instrukcją procesora, lecz poleceniem dla asemblera nakazującym mu
określone działanie lub sposób interpretacji określonych instrukcji.
Dyrektywy DB, DW, DD, DF, DQ, DT służą do deklarowania danych statycznych i
dynamicznych w programie.
DB

– definiowanie bajtu (8 bitów),

DW

– definiowanie słowa (16 bitów),

DD

– definiowanie słowa o podwójnej długości (32 bity),

DF

– definiowanie 6 bajtów (48 bitów);

DQ

– definiowanie słowa poczwórnej długości (64 bity),

DT

– definiowanie 10 bajtów (80 bitów).

3) Co oznacza znak „?” podany zamiast wartości danej w kodzie asemblerowym

?


Przyjęte jest, że po lewej stronie dyrektywy podaje się nazwę zmiennej, a po prawej wartość
początkową; znak zapytania (?) oznacza, że wartość początkowa zmiennej jest nieokreślona;
nazwę zmiennej można pominąć; przykłady:

kcal

DB

169

linia7a

DQ

?

DW

19331

elem_sygn DD

18B706H

alfa

dw

4567H, 5678H, 6789H

4) Dlaczego rozkaz add [edi], 3 jest traktowany przez asembler jako błędny?

Operandy instrukcji nie precyzują, czy liczba 3 ma być zapisana na 8-miu bitach, 16-tu czy
też 32 - bitach. Aby tego błędu unikać należy sformułować ilość bajtów za pomocą instrukcji
PTR:

add byte PTR [edi], 3
add word PTR [edi], 3
add dword PTR [edi], 3

5) Jak należy rozumieć termin ‘licznik lokacji’ w kontekście programu asemblerowego?


W

procesie asemblacji programów istotną rolę odgrywa rejestr programowy (tj. definiowany

przez asembler), zwany licznikiem lokacji;

Licznik lokacji określa lokację w pamięci, do której zostanie przesłany aktualnie tłumaczony
rozkaz lub dana; po załadowaniu rozkazu lub danej, licznik lokacji zostaje zwiększony o ilość
bajtów zajmowanych przez ten rozkaz lub daną;

background image

W asemblerach dla procesorów zgodnych z IA-32 licznik lokacji wskazuje położenie
ładowanej lokacji względem początku segmentu; w trakcie tłumaczenia pierwszego wiersza
segmentu licznik lokacji zawiera 0; w wyrażeniach adresowych licznik lokacji
reprezentowany jest przez symbol $;

6) Jakie działania wykonuje asembler w pierwszym i drugim przebiegu asemblacji?


W istocie zarówno asemblacja jak i kompilacja mają na celu przekształcenie kodu
ź

ródłowego programu na ciąg instrukcji procesora, aczkolwiek uzyskany ciąg (zawarty w

pliku z rozszerzeniem .OBJ) wymaga jeszcze dalszych przekształceń, które wykonywane są w
trakcie konsolidacji i ładowania;

Asemblacja realizowana jest dwuprzebiegowo: w każdym przebiegu czytany jest cały plik
ź

ródłowy (ściśle: moduł) od początku do końca;


W pierwszym przebiegu asembler stara się wyznaczyć ilości bajtów zajmowane przez
poszczególne rozkazy i dane; jednocześnie asembler rejestruje w słowniku symboli wszystkie
pojawiające się definicje symboli (zmiennych i etykiet);

W drugim przebiegu asembler tworzy kompletną wersję przetłumaczonego programu,
określając adresy wszystkich instrukcji w oparciu o informacje zawarte w słowniku symboli;

7) W jaki sposób asembler oblicza pola adresowe rozkazów sterujących (skokowych)?

EIP <- EIP + < liczba bajtów aktualnie wykonywanego rozkazu> + < zawartość pola
adresowego rozkazu>

Rozkazy sterujące dodają do wskaźnika instrukcji EIP liczbę umieszczoną w polu adresowym
rozkazu; ponieważ sumowanie wykonywane jest modulo 2

32

, więc dodanie odpowiednio

dużej liczby powoduje zmniejszenie rejestru EIP;

Rozkazy sterujące bezwarunkowe zmieniają porządek wykonywania rozkazów; poprzez
odpowiednie zwiększenie lub zmniejszenie wskaźnika instrukcji EIP można pominąć
(przeskoczyć) kolejne rozkazy, albo wznowić wykonywanie rozkazów, które zostały już
wcześniej wykonane;

8) Napisać rozkaz w asemblerze realizujący operacje sumowanie AX



AX +[0040026AH]


add

ax, ds:[ 0040026AH]


E) Operacje stosu i podprogramy

1) W jaki sposób interpretuje się zawartość rejestru wskaźnika stosu ESP w procesorze z IA-
32?


Rejestr ESP wskazuje wierzchołek stosu, czyli obszar 4- lub 2-bajtowy, w którym
przechowywana jest ostatnio zapisana dana. Na stosie mogą być zapisywane wyłącznie
wartości 16- i 32-bitowe!

background image

2) Co oznacza sformułowanie: „Stos rośnie w kierunku malejących adresów”


Oznacza to, że pierwszą daną na stosie zapisujemy na największym adresie, a potem
wierzchołek jest przesuwany tak, że jego adres jest coraz mniejszy. Lokacje bardziej odległe
od wierzchołka stosu mają większe adresy.

3) Omówić drogi i sposoby przekazywania parametrów do podprogramów.

Stosowane są dwa podstawowe sposoby przekazywania parametrów:

przekazywanie przez wartość (ang. call by value) – do podprogramu

przekazywana jest bezpośrednio wartość parametru, którym może być liczba,
tablica liczb, łańcuch znaków, itp;

przekazywanie przez adres (ang. call by location) – do podprogramu

przekazywany jest adres lokacji pamięci, w której znajduje się przekazywana
wartość;


Przekazywanie adresu zmiennej umożliwia bezpośredni dostęp do niej wewnątrz
podprogramu, m.in. pozwala to na wpisanie wyniku uzyskanego w trakcie wykonywania
podprogramu bezpośrednio do tej zmiennej; taki sposób pozwala także na dostęp do tablicy
bez konieczności przekazywania wartości wszystkich jej elementów;

Drogi przekazywania parametrów:

przez rejestry,

przez stos (typowa, powszechnie stosowana metoda),

przez ślad (tj. przez obszary pamięci znajdujące się bezpośrednio za instrukcją

CALL lub INT),

przez bufory (tj. przez zarezerwowane obszary pamięci o ustalonych adresach).

4) Omówić zasady działania rozkazów CALL i RET.


CALL - odpowiedzialny w procesorach z IA-32 za zapamiętywanie śladu. Występuje w
wersji z adresowaniem bezpośrednim i pośrednim. Wywołuje podprogram i zostawia ślad na
stosie (adres powrotu, miejsce, do którego ma powrócić sterowanie po zakończeniu
wykonywania podprogramu);

RET - po zakończeniu wykonywania podprogramu przepisuje do rejestru EIP zawartość
wierzchołka stosu; po wykonaniu podprogramu zdejmuje z wierzchołka stosu ślad zostawiony
przez CALL i wraca do programu głównego;

5) W jakim celu rozkaz wywołania podprogramu pozostawia ślad na stosie?


Konieczne jest bowiem zapamiętanie adresu powrotu (śladu) tj. miejsca, do którego ma
powrócić sterowanie po zakończeniu wykonywania podprogramu. Ślad zapisywany jest w
procesorze z IA-32 na stosie, w innych procesorach ślad zapisywany jest w rejestrach.

6) Dlaczego wiele programów generowanych przez kompilatory języków wysokiego poziomu
u
żywa stosu do przechowywania wartości zmiennych lokalnych?

W praktyce programowania występują wielokrotnie sytuacje, w których konieczne jest
tymczasowe przechowanie zawartości rejestru — zazwyczaj rejestrów ogólnego

background image

przeznaczenia jest zbyt mało by przechowywać w nich wszystkie wyniki pośrednie
występujące w trakcie obliczeń. Dodatkową zaletą przechowywania danych na stosie jest
krótszy kod rozkazu.
Procedury i funkcje często wykonują działania na zmiennych lokalnych, które są potrzebne
tylko w trakcie wykonywania procedury czy funkcji i często nie muszą być inicjalizowane w
segmencie danych programów.

7) Jaką rolę w trakcie odczytywania wartości parametrów przekazanych do podprogramu
pełni pomocniczy wska
źnik stosu EBP?


Ponieważ zawartość rejestru ESP może się zmieniać w trakcie wykonywania podprogramu,
konieczne jest użycie innego rejestru, którego zawartość, ustalona przez cały czas
wykonywania podprogramu, będzie wskazywała obszar parametrów na stosie — rolę tę pełni
specjalnie do tego celu zaprojektowany rejestr EBP, czasami określany jako pomocniczy
wska
źnik stosu

;

Jeśli zawartość rejestru EBP jest równa zawartości ESP, to adres określony przez EBP
wskazuje wierzchołek stosu, a EBP zwiększony o 4, 8, 12,... wskazuje kolejne, uprzednio
zapisane, podwójne słowa na stosie;

8) Na czym polegajążnice standardów wywoływania podprogramów: Pascal, C i StdCall


Główne różnice między standardami dotyczą kolejności ładowania parametrów na stos i
obowiązku zdejmowania parametrów, który należy najczęściej do wywołanego podprogramu
(funkcji), jedynie w standardzie C zajmuje się tym program wywołujący; w standardzie
Pascal parametry wywoływanej funkcji zapisywane są na stos w kolejności od lewej do
prawej, natomiast w standardzie C i StdCall od prawej do lewej;


Standard wywoływania funkcji i procedur typu Pascal jest szeroko stosowany w różnych
systemach programowania (m.in. w systemie Windows); standard StdCall, stanowiący
połączenie standardów C i Pascal, stosowany jest w 32-bitowych wersjach Windows do
wywoływania funkcji wchodzących w skład interfejsu Win32 API;

Warto zwrócić uwagę, że w wielu przypadkach parametry wywołania funkcji mają postać
wyrażeń — w takim przypadku najpierw obliczana jest wartość parametru, która następnie
zapisywana jest na stosie;

9) W jaki sposób w programie wywołuje się funkcje usługowe systemu operacyjnego?


Funkcje usługowe (systemowe) jak i funkcje biblioteczne mogą być wywoływane w
programach napisanych w języku wysokiego poziomu, jak również w programach napisanych
w asemblerze; wywołanie usługi systemu operacyjnego lub funkcji bibliotecznej realizowane
jest za pomocą rozkazu CALL (lub podobnego);

Standard

Kolejność ładowania parametrów
na stos

Obowiązek zdjęcia parametrów ze
stosu

Pascal

od lewej do prawej

wywołany podprogram

C

od prawej do lewej

program wywołujący

StdCall

od prawej do lewej

wywołany podprogram

background image

Dla funkcji zdefiniowanych w interfejsie Win32 API stosowana jest konwencja wołania
StdCall

(parametry na stosie ładowane są wg zasad C, natomiast zdejmowanie parametrów

wykonuje wywołana procedura); wyjątek stanowi funkcja wsprintf, która ma zmienną liczbę
parametrów; z kolei dla funkcji zdefiniowanych w bibliotece języka C stosowana jest
konwencja C, a dla funkcji zdefiniowanych w bibliotece języka Pascal — konwencja Pascal;

10) Wyjaśnić znaczenie terminu ‘interfejs programowania aplikacji’.


API

-

application

programming

interface;


Interfejs określający sposób porozumiewania się programu z systemem operacyjnym
(parametry i sposoby przekazywania ich do podprogramów systemowych).

Zbiór zasad, protokołów i narzędzi służących do tworzenia oprogramowania.

Dobrze zaprojektowany API zawiera zestaw najczęściej używanych elementów programów
(w postaci udokumentowanych bibliotek), umożliwia dostęp do systemu operacyjnego, baz
danych, interfejsu graficznego, itp. Dzięki temu proces tworzenia nowych aplikacji może
zostać znacznie przyśpieszony.

11) Omówić podstawowe zasady programowania mieszanego (hybrydowego).


Dwie

metody

dołączania

kodu

asemblerowego:

*w formie wstawek asemblerowych umieszczonych bezpośrednio wewnątrz kodu w JWP
**w formie odrębnych modułów asemblerowych, które są odrębnie kompilowane
(asemblowane) i łączone z pozostałym kodem w czasie linkowania;

Stosowanie wstawek nie wymaga oddzielnej kompilacji – używany jest asembler wbudowany
w kompilator JWP. Wstawki nie pozwalają na pełne wykorzystanie możliwości kodowania w
asemblerze – umożliwia to stosowanie oddzielnych modułów asemblerowych;
Podprogramy w obu językach muszą być skonstruowane na tych samych zasadach, tę samą
metodą muszą być przekazywane parametry i tak samo nazywać się segmenty (i ich atrybuty).
W instrukcjach asemblerowych można odwoływać się zarówno do zmiennych lokalnych jak i
globalnych (zewnętrznych);

F) Lista rozkazów procesora.

1) Czym różnią się rozkazy sterujące warunkowe od bezwarunkowych?


Specjalne instrukcje, które w zależności od własności uzyskanego wyniku (np. czy jest
ujemny) zmienią zawartość rejestru EIP, dodając lub odejmując jakąś liczbę, albo też zmienią
zawartość EIP w konwencjonalny sposób — instrukcje takie nazywane są instrukcjami
steruj
ącymi

(skokowymi);


Rozkazy sterujące (skokowe) zmieniają naturalny porządek wykonywania rozkazów; jeśli
testowany warunek, specyficzny dla każdego rozkazu sterującego, jest spełniony, to do
wskaźnika instrukcji EIP dodawana jest liczba bajtów zajmowana przez rozkaz (zwykle 2
bajty) i liczba znajdująca się w polu adresowym rozkazu sterującego; jeśli warunek jest nie
spełniony, to dodawana jest tylko liczba bajtów zajmowana przez rozkaz;

background image

Rozkazy sterujące bezwarunkowe

- ich jedynym zadaniem jest zmiana porządku

wykonywania instrukcji (nie wykonują one żadnego sprawdzenia); poprzez odpowiednie
zwiększenie lub zmniejszenie wskaźnika instrukcji EIP można pominąć (przeskoczyć) kolejne
rozkazy, albo wznowić wykonywanie rozkazów, które zostały już wcześniej wykonane;

Instrukcje sterujące warunkowe

na ogół nie wykonują żadnych obliczeń, ale tylko

sprawdzają, czy uzyskane wyniki mają oczekiwane własności; w zależności od rezultatu
sprawdzenia wykonywanie programu może być kontynuowane przy zachowaniu naturalnego
porządku instrukcji albo też porządek ten może być zignorowany poprzez przejście do
wykonywania instrukcji znajdującej się w odległym miejscu pamięci operacyjnej;

2) Scharakteryzować grupę rozkazów procesora określanych jako operacje bitowe?


Rozkazy AND, TEST, OR, XOR wykonują operacje logiczne na odpowiadających sobie
bitach obu operandów — rezultat wpisywany jest do operandu docelowego, i jednocześnie
ustawiane są znaczniki ZF, SF, PF (znaczniki CF i OF są zerowane); rozkaz TEST ustawia
znaczniki, ale nie wpisuje wyniku; rozkaz NOT jest jednoargumentowy — następuje
zanegowanie wszystkich bitów;

AND

bitowy iloczyn logiczny

TEST

bitowy iloczyn logiczny (bez wpisywania wyniku)

OR

bitowa suma logiczna

XOR

bitowa suma modulo dwa

NOT

negacja bitowa


Poniżej podano przykład ilustrujący działanie rozkazu NOT:

0

1

2

3

4

5

6

7

0

1

2

3

4

5

6

7

negacja

0 1 1 1 0 1 0 1

1 0 0 0 1 0 1 0

rejestr AH

zawartość AH
po wykonaniu

rozkazu NOT AH
ah

bitowa

3) Jak zmieni się zawartość rejestru EBX po wykonaniu rozkazu XOR EBX , 7


EBX nie zmieni się na bitach od 3 do 31, a na bitach od 0 do 2 zmieni wartość na przeciwną;

XOR - ogólnie rozkaz taki wykonuje operację sumy modulo dwa na dwóch wartościach
wskazanych przez pierwszy i drugi operand, a wynik wpisywany jest do pierwszego
operandu; zatem rozkaz:

„operacja”

cel, źródło

wykonuje działanie
cel

cel „operacja” źródło


background image

4) Omówić technikę wyodrębniania zawartości pól bitowych?

Rozkazy przesunięć i operacji logicznych stosowane są często do wyodrębniania pól
bitowych; w podanym niżej przykładzie zadanie polega na wyznaczeniu liczby umieszczonej

na bitach 5 ÷ 3 rejestru AH;

0

1

2

3

4

5

6

7

0

1

2

3

4

5

6

7

1 0 1 0 0 1 1 1

0 0 1 1 1 0 0 0

rejestr AH

rejestr BL

0

1

2

3

4

5

6

7

iloczyn logiczny

0 0 1 0 0 0 0 0

rozkazu and ah, bl

zawartość AH
po wykonaniu

bitowy

na bitach 5-3
umieszczona jest

"maska" bitowa

liczba 3-bitowa

0

1

2

3

4

5

6

7

logiczne w prawo

0 0 0 0 0 1 0 0

rozkazu shr ah, 3

zawartość AH
po wykonaniu

przesunięcie

o 3 pozycje



Po wykonaniu powyższych instrukcji rejestr AH zawiera analizowaną liczbę 3-bitową
zakodowaną w zwykły sposób.

5) Czym różnią się przesunięcia cykliczne od logicznych?

W procesorze z IA-32 zdefiniowano różne rodzaje operacji przesunięcia bitów w rejestrze lub
w lokacji pamięci; wyróżnia się przesunięcia w lewo lub w prawo, przesunięcia logiczne i
cykliczne (tzw. obroty); dodatkowo zdefiniowano przesunięcie cykliczne (rozkazy RCL i
RCR), w którym znacznik CF traktowany jest jako dodatkowy bit przesuwanego rejestru;

SHL
(SAL)

przesunięcie logiczne (arytmetyczne) w
lewo

SHR

przesunięcie logiczne w prawo

SAR

przesunięcie arytmetyczne w prawo

ROL

przesunięcie cykliczne w lewo

ROR

przesunięcie cykliczne w prawo

RCL

przesunięcie cykliczne w lewo przez
CF

RCR

przesunięcie cykliczne w prawo przez
CF

background image

Poniższy rysunek przedstawia schematycznie przesunięcie cykliczne (obrót) w lewo; bity

wychodzące z pozycji 7 kierowane są na pozycję 0; dodatkowo bity wychodzące

wprowadzane są także do znacznika CF;

CF

7 6 5 4 3 2 1 0


Przesunięcia logiczne działają podobnie, ale bity wychodzące nie są zawracane, a na bit nr 0
wprowadzane są zera; przesunięcia w prawo działają analogicznie.

6) W jaki sposób kodowane są mnemoniki (skróty literowe) rozkazów wykonujących działania
na liczbach zmiennoprzecinkowych?

Ze względu na to, że posługiwanie się w procesie kodowania programu wartościami
zerojedynkowymi byłoby bardzo kłopotliwe, wprowadzono skróty literowe (tzw. mnemoniki)
dla poszczególnych instrukcji (rozkazów) procesora;

Pierwsza litera f oznacza, że mamy do czynienia z koprocesorem (właściwie to z jednostką
zmiennoprzecinkową - jednoznacznie wskazuje to na rodzaj zapisanej liczby), następnie
pojawia się skrót operacji np div, sub czy też sqrt (kwadrat); następnie może się pojawić
literka p (pop), która oznacza skasowanie ostatniej wartości z wierzchołka stosu;

G) Sterowanie urządzeniami zewnętrznymi.

1) Wyjaśnićżnice w sposobie komunikacji procesora z urządzeniami zewnętrznymi poprzez
pami
ęć współadresowalną i poprzez porty.


Sterowanie pracą urządzeń jest realizowane za pomocą podzespołów tworzących układy
wejścia/wyjścia; podzespoły te umożliwiają testowanie stanu (gotowości) urządzenia,
wysyłanie poleceń do urządzenia oraz wysyłanie i przyjmowanie danych; od strony procesora
ww. komunikacja odbywa się zazwyczaj poprzez zapis i odczyt rejestrów zainstalowanych w
układach wejścia/wyjścia;

stosowane są dwie metody dostępu do zawartości rejestrów układów wejścia/wyjścia:

rejestry udostępniane są jako zwykłe komórki pamięci w przestrzeni adresowej

pamięci — mówimy wówczas o współadresowalnych układach wejścia/wyjścia;

rejestry urządzenia dostępne są w odrębnej przestrzeni adresowej zwanej

przestrzenią adresową wejścia-wyjścia

lub przestrzenią adresową portów; takie

rozwiązanie określane jest czasami jako izolowane wejście-wyjście;


Stosuj
ąc pierwszą metodę

można odczytywać i zapisywać rejestry urządzenia tak samo jak

zwykłe komórki pamięci, np. za pomocą instrukcji MOV; w komputerach PC metoda ta
stosowana jest m.in. w odniesieniu do pamięci ekranu;
Stosując drugą metodę

konieczne jest zdefiniowanie odrębnych rozkazów przesyłania,

działających w przestrzeni adresowej portów: w architekturze IA–32 rolę te pełnią rozkazy IN
i OUT (i ich rozszerzenia);

background image

2) Jak zorganizowana jest pamięć ekranu w trybie tekstowym?

Typowym przykładem wykorzystania techniki układów współadresowalnych jest pamięć
ekranu w komputerach PC; w trybie tekstowym typowego sterownika graficznego znaki
wyświetlane na ekranie stanowią odwzorowanie zawartości obszaru pamięci operacyjnej
(RAM) od adresu fizycznego B8000H; pamięć ta należy do przestrzeni adresowej procesora,
ale zainstalowana jest na karcie sterownika;

Każdy znak wyświetlany na ekranie jest opisywany przez dwa bajty w pamięci ekranu: bajt o
adresie parzystym zawiera kod ASCII znaku, natomiast następny bajt zawiera opis sposobu
wyświetlania, nazywany atrybutem znaku;

3) Omówićżne techniki skojarzenia rejestrów urządzenia z portami

.


Zazwyczaj sterowniki urządzeń mają kilka, a czasami nawet kilkadziesiąt rejestrów; w
najprostszym przypadku każdy rejestr jest skojarzony z jednym portem; wówczas zapis i
odczyt poszczególnych rejestrów realizowany jest za pomocą rozkazów IN i OUT
działających na odrębnych portach — ilustruje to poniższy rysunek:


W innych rozwiązaniach kolejne dane wysyłane do określonego portu (np. 3C9H) są
automatycznie kierowane do kolejnych rejestrów urządzenia:

Porty

Rejestry

Port

Rejestry

background image



Przy znacznej liczbie rejestrów urządzenia stosowany jest często dostęp za pośrednictwem
dwóch portów: portu adresowego i portu danych; każda operacja odczytu/zapisu rozpoczyna
się od przesłania przez port adresowy numeru wewnętrznego rejestru, na którym ma być
wykonane działanie; następnie właściwe dane są odczytywane lub zapisywane za
pośrednictwem portu danych:

Często stosowanym rozwiązaniem jest używanie tego samego portu do odczytu jednego
rejestru i zapisu innego rejestru; taka konstrukcja jest charakterystyczna dla wielu urządzeń, w
którym zdefiniowano rejestr stanu (ang. status register), opisujący aktualny stan urządzenia i
rejestr sterujący (ang. control register), za pośrednictwem którego wysyłane są dyspozycje do
urządzenia; rejestr stanu może być tylko odczytywany (wyjątkowo także zerowany), a rejestr
sterujący może być tylko zapisywany:


4) Omówić organizację pamięci ekranu w trybie graficznym 13H (raster 320*200)


Współczesne sterowniki (karty) graficzne oferują zazwyczaj wiele trybów wyświetlania,
różniących się rozdzielczością, liczbą kolorów i innymi parametrami — wszystkie sterowniki
realizują nadal funkcje zwykłego sterownika VGA, który oferuje między innymi dość prosty
tryb graficzny oznaczony numerem 13H; w trybie tym raster ma wymiary 320 * 200 pikseli,
przy 256 kolorach;
W trybie 13H pamięć ekranu, zawierająca 64000 bajtów (320 * 200), umieszczona jest
począwszy od adresu fizycznego A0000H; kolejne bajty w tym obszarze opisują kolory
pikseli wg standardowej palety VGA (paletę można zmienić), np.10 oznacza kolor
jasnozielony;

Port adresowy

Rejestry

Port danych

Port

Rejestry

background image

5) Omówić podstawowe elementy systemu przerwań stosowanego w komputerach PC.


W nowszych komputerach PC system przerwań obsługiwany jest przez układ APIC, który
pełni rolę „sekretarki” procesora, a także wspomaga prace wieloprocesorową; wcześniej
przerwania były obsługiwane przez dwa układy typu 8259 (PIC);

Sygnały przerwań wysyłane są przez różne urządzenia zewnętrzne komputera (klawiatura,
drukarka, mysz, dyski, itd.) do procesora; sygnalizują one procesorowi wystąpienie pewnych
zdarzeń (np. naciśnięcie przycisku myszki), które wymagają podjęcia niezwłocznej obsługi
przez procesor;

Procesor po otrzymaniu sygnału przerwania przerywa wykonywanie bieżącego programu i
rozpoczyna wykonywanie innego programu; program ten identyfikuje otrzymany sygnał
przerwania i podejmuje odpowiednie działania w stosunku do urządzenia, które wysłało
przerwanie; po wykonaniu tych działań procesor powraca do dalszego wykonywania
przerwanego programu;

Zarówno sprzętowe jak i programowe aspekty systemu przerwań są stosunkowo mało znane
nawet dla zawodowych programistów; obsługa przerwań jest bowiem realizowana przez
system operacyjny, który nie zezwala aplikacjom na jakiekolwiek ingerencje w tym zakresie;

Reasumując, w praktyce zwykłego programowania mechanizmy przerwań nie są
bezpośrednio widoczne, ich znajomość jednak jest niezbędna do tworzenia oprogramowania
obsługi urządzeń;
Zazwyczaj każde urządzenie dołączone do komputera jest w stanie generować sygnały
przerwań; wymaga to odpowiedniego zorganizowania systemu przerwań, tak by poszczególne
przerwania były przyjmowane wg ustalonej hierarchii; na ogół procesor nie jest
przygotowany do bezpośredniej obsługi przerwań, zwłaszcza jeśli jest zainstalowanych dużo
urządzeń;

Stosowane są różne systemy obsługi przerwań; niekiedy zainstalowana jest wspólna linia
przerwań dla wszystkich urządzeń — po nadejściu przerwania procesor sprawdza stany
poszczególnych urządzeń identyfikując urządzenie, które wysłało przerwanie (metoda
odpytywania); w innych systemach linia przerwań przechodzi przez wszystkie zainstalowane
urządzenia ustawione wg priorytetów; w komputerach PC priorytet przerwania ustalany jest
poprzez odpowiednie skonfigurowanie układów PIC lub APIC.


6) Jaką rolę w obsłudze przerwań sprzętowych pełni „tablica deskryptorów przerwań”?

W architekturze IA–32 tablica deskryptorów przerwań zawiera adresy podprogramów obsługi
przerwań sprzętowych wysyłanych przez różne urządzenia komputera; tablica zawiera także
adresy podprogramów obsługujących wyjątki procesora (przerwania generowane przez sam
procesor); ponadto mogą być w niej umieszczone adresy podprogramów systemowych, które
wywoływane są z poziomu aplikacji za pomocą rozkazu INT (np. w Linuksie);

Omawiana tablica zawiera 256 elementów nazywanych deskryptorami; każdy deskryptor
zajmuje 8 bajtów; wyróżnia się trzy rodzaje deskryptorów: furtki przerwania (używane przy
obsłudze przerwań sprzętowych), furtki potrzasku (używane przy obsłudze wyjątków
procesora i wywołań za pomocą rozkazu INT) oraz furtki zadania (używane w sytuacjach
awaryjnych);

background image

Furtki przerwania i potrzasku zawierają adresy odpowiednich podprogramów obsługujących
przerwania i wyjątki; deskryptory znajdujące się na pozycjach 0 ÷ 31 używane są do obsługi
wyjątków generowanych przez procesor; pozostałe deskryptory mogą zawierać adresy
podprogramów obsługujących przerwania sprzętowe i wywołania systemowe;

Położenie tablicy deskryptorów przerwań w pamięci głównej komputera wskazane jest przez
zawartość rejestru IDTR;

G) Hierarchia pamięci

1) Co oznaczają terminy ‘trafienie’ i ‘chybienie’ w odniesieniu do pamięci podręcznej?


W trakcie wykonywania rozkazów procesor szuka najpierw rozkazów i danych w pamięci
podręcznej:

jeśli potrzebna informacja zostanie znaleziona, co jest określane jako trafienie (ang.

cache hit)

, to jest przesyłana do procesora;

jeśli potrzebnej informacji nie ma w pamięci podręcznej (chybienie, ang. cache

miss

), to jest ona pobierana z pamięci głównej, przy czym jednocześnie wpisywana

jest do pamięci podręcznej w postaci całego bloku;

2) Na czym polega technika dostepu do pamięci podręcznej z odwzorowaniem bezpośrednim


W technice tej nie występuje konieczność jednoczesnego porównywania wielu etykiet;

32-bitowy adres pamięci jest dzielony na trzy pola: pole etykiety (16 bitów), pole obszaru

(12 bitów) i pole słowa (4 bity);

przypuśćmy, że pamięć podręczna jest na razie

całkowicie pusta i zachodzi konieczność skopiowania do niej bloku 16-bajtowego z
pamięci RAM o adresie A4447650H; wówczas blok ten zostanie wpisany do wiersza
pamięci podręcznej o indeksie 765H i jednocześnie do pola etykiety tego wiersza zostanie
wpisana wartość A444H;


jeśli w trakcie dalszych działań zajdzie konieczność odczytu bajtu o adresie A4447652H,

to zostaną podjęte niżej podane działania:

zostanie wyznaczona liczba zapisana w polu etykiety (16 bitów) oraz liczba w

polu obszaru (12 bitów) podanego adresu — w analizowanym przykładzie mają
one wartości A444H i 765H;

z wiersza pamięci podręcznej o indeksie 765H zostanie odczytana zawartość pola

etykiety i porównana z liczbą A444H (pole etykiety adresu 32-bitowego);

jeśli porównywane wartości są identyczne, to zostanie odczytany indeksowany

wiersz, w którym na pozycji 2 znajduje się potrzebny bajt;

jeśli porównywane wartości nie są jednakowe, to bajt trzeba odczytać z pamięci

RAM;

istnieje wiele adresów 32-bitowych, które mają identyczne 12-bitowe pole obszaru i różne

wartości pola etykiety — w pamięci podręcznej będzie zapisany tylko jeden blok 16-
bajtowy; ograniczenie to stanowi główny problem występujący przy odwzorowaniu
bezpośrednim;


background image

Adres 32-bitowy generowany przez procesor

etykieta (16 bitów)

nr linii

(12 bitów)

adres
wewn.
bloku

Pamięć podręczna

etykieta

blok

000
001
002

FFF

3)

Omówić schemat współdzia1ania różnych rodzajów pamięci w komputerze znany jako

‘hierarchia pamięci’

rejestry

procesora

pamięć

podręczna

zintegrowana z

procesorem (SRAM)

pamięć główna (operacyjna)

(DRAM)

pamięć masowa (ang. secondary

storage) (dyski lokalne)

pamięć masowa

(rozproszone systemy plików, serwery sieciowe)

pamięć podręczna

niezintegrowana z

procesorem (SRAM)

Pamięć L1 przechowuje
informacje uzyskane z
pamięci L2

Rejestry procesora przechowuja
informacje uzyskane z pamieci L1

L0

(off-chip) L2:

L3:

L4:

L5:

Mniejsza,

szybsza i

droższa

Większa,

wolniejsza

i tańsza

(on-chip) L1:

Pamięć L2 przechowuje
informacje uzyskane z
pamięci głównej

Pamięć główna
przechowuje
informacje uzyskane
z pamięci masowej

Pamięć masowa przechowuje
informacje uzyskane z dysków
w serwerach sieciowych


Wyszukiwarka

Podobne podstrony:
egzamin rynek finansowy (opracowane stare pytania)
przebieg, PSYCHOLOGIA, I ROK, semestr II, biologiczne mechanizmy zachowania II.mózgowe mechanizmy fu
Opracowanie - test, egzamin - stare pytania
Opracowane pytania na koło 3 7 11 15, Budownictwo UTP, III rok, DUL stare roczniki, GEODEZJA, geodez
fotoogniwa, PWr W9 Energetyka stopień inż, VII Semestr, EGZAMIN DYPLOMOWY, Stare opracowania, Egz. d
MPiTR kolo1 new opracowane
mechana plynow opracowane zagadnienia kolo1, PG inżynierka, Semestr 3, Mechanika płynów, wykład
Zapis kariotypów z abberacjami, Studia, Stare przedmioty, Biologia, Opracowania, Genetyka
definicje z tele, Geodezja PW, Stare dzieje, Teledetekcja, Opracowania
GEOLOGIA KOLO1, PK, geologia, GLG - Geologia, tematy do opracowania, materiały do tematów
opracowane pytania 98 stare
pytania- opracowania, Budownictwo UTP, III rok, DUL stare roczniki, nawierzchnie
gon opracowanie mq, Geodezja PW, Stare dzieje, GON, Pytania + kolosy
satelity, Geodezja PW, Stare dzieje, Teledetekcja, Opracowania
SPOT, Geodezja PW, Stare dzieje, Teledetekcja, Opracowania
opracowanie kolo1 by mc tom and nord
opracowanie 2, Geodezja PW, Stare dzieje, GON, Pytania + kolosy

więcej podobnych podstron