pskSCIAGA, podstawy programowania niskopoziomowego


-9 0.001953125

-8 0.00390625

-7 0.0078125

-6 0.015625

-5 0.03125

-4 0.0625

-3 0.125

-2 0.25

-1 0.5

0 1

1 2

2 4

3 8

4 16

5 32

6 64

7 128

8 256

9 512

10 1024

11 2048

12 4096

13 8192

14 16384

15 32768

16 65536

17 131072

18 262144

19 524288

20 1048576

- W operacjach arytmetyki dziesiętnej stosowany jest kod dziesiętny kodowany

dwójkowo tzw. kod BCD (binary coded decimal), w którym liczba zapisana jest w

postaci ciągu grup czterobitowych (nazywanych czasem tetradami) zawierających

kod cyfry dziesiętnej każda. Po ciągu grup zawierających cyfry następuje pojedyncza

grupa zawierająca kod znaku (również czterobitowy).

- W komputerach ODRA

podstawowym kodem jest sześciobitowa reprezentacja kodu ISO, w komputerach

IBM - rozszerzony kod ASCII (American Standard Code for Information

Interchange - ośmiobitowy) lub kod EBCDIC (Extended Binary Coded Decimal

Interchange Code).

- Pamięcią operacyjną (główną) PAO nazywa się blok funkcjonalny

komputera złożony z rejestrów jednakowej długości; każdy z tych rejestrów

(nazywany też komórką pamięci) opatrzony jest unikalnym numerem nazywanym

adresem. W skład pamięci wchodzi też niezbędny osprzęt umożliwiający

dokonywanie niezbędnych operacji dostępu do pamięci

- Dostępem do pamięci

nazywa się operację odczytu lub zapisu z lub do komórek pamięci. Odczyt z pamięci

polega na eksponowaniu na wyjściu danych pamięci zawartości komórki, której

adres został zadany na wejściu adresowym pamięci na początku operacji odczytu.

Zapis do pamięci polega na wpisaniu informacji podanej na wejście danych pamięci

do komórki, określonej adresem podanym na wejście adresowe pamięci. Zawartość

pamięci zmienia się tylko w przypadku zapisów, tylko we wskazanych adresami

komórkach. Pojedynczy dostęp do pamięci może dotyczyć więcej niż jednej komórki

pamięci - maksymalna liczba bitów pamięci (sumaryczna długość komórek) do której

można dokonać zapisu lub odczytu w jednym dostępie nosi nazwę szerokości

dostępu do pamięci.

- linią nazywa się jednobitową drogę przesyłania sygnałów (jej realizacją

techniczną jest zwykle po prostu przewód);

- szyną nazywa się zbiór linii niosących informację funkcjonalnie

rozpatrywaną łącznie i zwykle zsynchronizowaną w czasie - np. szyna

adresowa lub szyna danych;

- magistrale -

składające się zwykle z szyny danych, szyny adresowej i szyny sygnałów

sterujących.

- Jednostka Arytmetyczno-Logiczna (JAL) jest blokiem funkcjonalnym

komputera zdolnym do wykonywania operacji na ciągach zerojedynkowych:

logicznych, przesunięć, arytmetycznych, konwersji i operacji na adresach. Operacja

konwersji wykonywana przez JAL jest działaniem jednoargumentowym nie

spełniającym zasady jednorodności argumentu i wyniku - służy do przekształcenia

informacji zapisanej w pewnej postaci na równoważny zapis innej postaci.

- Zespół wejścia/wyjścia jest blokiem funkcjonalnym komputera

zarządzającym kontaktami z urządzeniami zewnętrznymi (w ramach całego zespołu

wejścia/wyjścia wyróżnia się zwykle mniejsze

zespoły nazwane kanałami, których działanie może być zarządzane programowo

przez programy oddzielnie. Programista widzi raczej zbiór kanałów niż całość

zespołu wejścia/wyjścia)

- Sterowanie jest blokiem funkcjonalnym komputera zarządzającym

wykonywaniem podstawowych działań przez całość sprzętu komputera, zwykle z

wyłączeniem kontaktów z urządzeniami zewnętrznymi (sterowanych przez zespół

wejścia/wyjścia). Do podstawowych działań komputera w wymienionym tu sensie

zalicza się wykonywanie rozkazów i tzw. sekwencji przerwań,

które są działaniami powodującymi radykalną zmianę stanu

komputera, a zachodzą w wyniku wykonania niektórych rozkazów lub nadejścia

pewnych sygnałów z otoczenia procesora. Sterowanie pobiera z pamięci kolejne

(chronologicznie) rozkazy do wykonania i na ich podstawie oraz na podstawie stanu

komputera generuje sygnały sterujące do pozostałych bloków funkcjonalnych,

wymuszając właściwe ich działania.

- Rozkazem nazywa się ciąg zerojedynkowy pobrany z pamięci w celu

określenia na jego podstawie dalszych działań procesora. Takie rozumienie rozkazu

jest właściwe sprzętowcom - z punktu widzenia programistów rozkazem jest ciąg

zerojedynkowy przewidziany do wykonania jako rozkaz.

- cyklrozkazowy:

* - pobranie z pamięci rozkazu według ustalonego wcześniej adresu

(PAO)

- wyznaczenie adresu argumentów i wyniku (JAL);

- odczytanie argumentów z pamięci (PAO);

* - wykonanie operacji właściwej pobranemu rozkazowi, inaczej

mówiąc: właściwej tzw. kodowi operacji rozkazu (zwykle JAL);

- zapisanie wyniku do pamięci (PAO);

* - ustalenie adresu następnego rozkazu.

- John

von Neumann

1. Wspólna pamięć do przechowywania zarówno rozkazów jak i danych.

2. Pamięć jednowymiarowa, złożona z kolejno ponumerowanych komórek o

jednakowej wielkości.

3. Brak jawnego rozróżniania rozkazów i danych.

4. Brak jawnej specyfikacji typów danych.

5. Praca sekwencyjna - przed rozpoczęciem wykonywania kolejnego rozkazu

musi zostać zakończone wykonywanie rozkazu chronologicznie

poprzedniego. Każdy rozkaz określa jednoznacznie adres następnego.

- Procesor wraz z pamięcią i zespołem wejścia/wyjścia stanowi jednostkę

centralną

- czas_dostępu - czas od chwili pojawienia się sygnału (sterującego) żądania dostępu

(zwykle odczytu) na wejściu pamięci gotowej do jego obsługi, do chwili

ekspozycji informacji na wyjściu pamięci;

czas_cyklu - czas od chwili pojawienia się sygnału żądania dostępu na wejściu

pamięci gotowej do jego obsługi, do chwili gotowości na przyjęcie

następnego żądania.

Zawsze czas cyklu jest większy lub równy czasowi dostępu.

Na wspomnianą wcześniej hierarchię składają się:

1. Rejestry procesora: zarówno niewidoczne (rejestry robocze procesora), jak i

widoczne dla programisty (rejestry programowe, m. in. akumulatory), w

liczbie ok. 8-64, o czasach dostępu ok. 5 ns;

2. Szybkie pamięci buforowe (caches): urządzenia pamiętające niedostrzegalne

dla programisty, przyspieszające współpracę procesora z pamięcią

operacyjną; pojemność szybkich pamięci buforowych wynosi 0.5-64 KB, zaś

czas dostępu ok. 100 ns.

3. Pamięci operacyjne (główne) o pojemnościach od 64 KB do wielu MB w

dużych komputerach, o czasach dostępu 0.2 - 0.5 μs;

4. Pamięci o dużej pojemności (Large Capacity Storage - LCS) rzadko obecnie

stosowane, o pojemności kilkakrotnie większej niż pojemność pamięci

operacyjnej i czasie dostępu równym ok. 2 - 5 μs;

5. Pamięci dyskowe o pojemności od 360 KB do 4 GB i czasie dostępu ok.

40 ms;

6. Pamięci taśmowe o czasie dostępu ok. 2 s.

Pamięci 1.-4. zaliczane są do tzw. pamięci wewnętrznej komputera, pozostałe zaś

nazywane są pamięciami zewnętrznymi. Kryterium rozdziału na pamięć zewnętrzną i

wewnętrzną jest to, czy dostęp do przechowywanej przez nie informacji wymaga, czy

też nie, współdziałania zespołu wejścia/wyjścia.

- Procesorem nazywa się połączone razem: jednostkę arytmetyczno-logiczną i

sterowanie komputera

- deszyfrator stanu - urządzenie zbierające sygnały o tym co się dzieje w

komputerze;

generator impulsów synchronizujących (pętla sterująca w większych komputerach,

tzw. zegar z rezonatorem kwarcowym w mikrokomputerach) - urządzenie

generujące precyzyjnie rozmieszczone w czasie ciągi impulsów;

konstrukcja zawierająca mikroprogramy działania (pamięć stała, sieć logiczna lub

rozdzielacz sterujący);

układy synchronizacji generujące właściwe sygnały sterujące na podstawie

mikroprogramów, zsynchronizowane w czasie na podstawie sygnałów z

generatora.

- Mikrooperacją nazywa się podstawowe działanie, do którego zdolny jest dowolny

zespół funkcjonalny komputera. Mikrorozkazem nazywa się pewną liczbę

mikrooperacji wzajemnie się nie wykluczających, tzn. takich, które np. mogą być

wykonane w tym samym czasie. Mikroprogramem nazywa się ciąg mikrorozkazów.

- licznik rozkazów - rejestr jednoznacznie określający adres kolejnego rozkazu do

wykonania.

- Stanem sterowania nazywa się bieżącą wartość części spośród rejestrów

sterowania. Stan sterowania definiowany jest dla każdego komputera indywidualnie,

zawsze jednak w jego skład wchodzi zawartość licznika rozkazów.

- sygnałem żądania przerwania nazywa się dowolny z sygnałów

powodujący (w sprzyjających warunkach - tzn. gdy nie istnieje wyraźny zakaz)

wykonanie tzw. sekwencji przerwania. Sekwencją przerwania nazywa się szereg

działań sprzętowych, radykalnie zmieniających stan sterowania komputera. Na

sekwencję przerwania składa się:

- zapamiętanie w ściśle określonym miejscu (zwykle pamięci) aktualnego

stanu sterowania;

- wymuszenie nowego stanu procesora (sterowania).

Sekwencja przerwania, jeśli jest dozwolona, wykonywana jest zawsze "między"

rozkazami (aktualnie wykonywany rozkaz musi być zakończony).

- W zależności od przyczyny przerwania dzielą się na przerwania zewnętrzne -

gdy sygnał żądania przerwania generowany jest w wyniku przyczyny zewnętrznej

względem procesu wykonywania rozkazów w procesorze, oraz przerwania

wewnętrzne - gdy sygnał żądania przerwania generowany jest na polecenie

programisty w wyniku wykonania odpowiedniego rozkazu. Jeśli jednocześnie

występują sygnały żądań przerwań oby rodzajów, to sekwencje przerwań

wewnętrznych wykonywane są zawsze przed sekwencjami przerwań zewnętrznych.

Przerwania zewnętrzne zwykle podzielone są na pewne podzbiory (noszące

czasem nazwę klas przerwań lub poziomów przerwań). Przerwania należące do

każdej z tych klas mogą zostać zablokowane w wyniku wpisania odpowiedniej

wartości zwanej maską przerwania do specjalnego rejestru maski przerwań. Sygnał

żądania przerwania jest iloczynowany logicznie z przydzielonym mu bitem maski -

jeśli wynik jest zerem, to sygnał jest ignorowany. Zwykle z każdym przerwaniem

związany jest też tzw. priorytet przerwania czyli liczba decydująca o kolejności

wykonania sekwencji przerwania przy jednoczesnej obecności kilku sygnałów

żądania przerwania.

Systemem przerwań komputera nazywa się zespół wszystkich ustaleń

związanych z przerwaniami obowiązujący w komputerze. W jednopoziomowych

systemach przerwań istnieją dwa wyróżnione stany sterowania: w jednym z nich

przerwania są dozwolone, w drugim - zabronione. W wielopoziomowych systemach

przerwań istnieje kilka stanów, w których dozwolone są różne przerwania.

- Zespół wejścia/wyjścia składa się z tzw. koordynatora kanałów

(stanowiącego w rzeczywistości sterowanie lokalne zespołu) oraz kanałów. Kanałem

nazywa się zespół zarządzający komunikacją z jednym lub wybraną grupą urządzeń.

Kanał po zainicjowaniu pracy (transmisji) kontaktuje się z urządzeniem i pamięcią

organizując przesyłanie informacji między nimi bez angażowania procesora

- Transmisję z urządzenia zewnętrznego do

pamięci nazywa się transmisją wejściową, zaś z pamięci do urządzenia - transmisją

wyjściową. Transmisja dotyczy spójnego obszaru pamięci.

- Kanały multiplekserowe są to kanały znakowe zdolne do współpracy ze

specjalnym urządzeniem zewnętrznym nazywanym multiplekserem, do którego

można z kolei dołączyć większą liczbę typowych urządzeń zewnętrznych. Kanał

multipleksera widziany jest przez programistę jako cały zbiór kanałów znakowych

- Przestrzenią adresową pamięci nazywamy zbiór wszystkich możliwych adresów, które mogą zostać wygenerowane przy dostępie do pamięci.

-Kanały selektorowe (R-32) są zespołami zbudowanymi podobnie jak kanał

autonomiczny z tą różnicą, że do kanału może być dołączona większa liczba

Pojęcia podstawowe

37

urządzeń zewnętrznych (zwykle do 256). W dowolnej chwili kanał może prowadzić

transmisję tylko z jednym z tych urządzeń (posiada tylko jeden zestaw rejestrów

koniecznych do realizacji transmisji).

- sekwencja przesłania

(po sygnalizacji przez urządzenie gotowości do przesłania znaku):

1 - odbiór jednostki informacji (danych) z urządzenia;

2 - odczytanie adresu transmisji z PAO;

3 - zapisanie danych do pamięci (w razie potrzeby odczyt-modyfikacja-zapis);

4 - zwiększenie adresu +1;

5 - zapisanie adresu transmisji do PAO;

6 - odczytanie licznika transmisji z PAO;

7 - zmniejszenie licznika -1;

8 - zapisanie licznika transmisji do PAO;

9 - jeśli licznik się wyzerował - wygenerowanie sygnału żądania przerwania.

ZIMNY

- POST: test po włączeniu zasilania (Power-On-Self Test), w którym inicjowane są

wszystkie podzespoły zainstalowane na płycie głównej i przeprowadzane jest

sprawdzenie poprawności ich pracy - łatwo zauważalny jest test pamięci RAM i

jej rozszerzenia powyżej 1 MB (występuje tylko w AT); słowo pamięci o adresie

bezwzględnym 00472H (Reset Flag) po włączeniu zasilania ma wartość

nieokreśloną i zwykle różną od 1234H (wartość 1234H w słowie 00472H

powoduje pominięcie przez POST testu pamięci w procedurze tzw. "gorącego

restartu");

- ustawienie wektorów przerwań BIOS'u, pozostałe wektory ustawiane na "puste"

podprogramy obsługi (składające się tylko z IRET);

- ustalenie konfiguracji;

- dołączenie oprogramowania z kart rozszerzeń: obszar pamięci przewidziany na

rozszerzenia (od 0A0000H) jest sprawdzany co 256 B, czy nie zawiera

odpowiedniego nagłówka, rozpoczynającego się od słowa 55AAH - jeśli tak, to

następuje wywołanie podprogramu inicjującego mieszczącego się pod adresem

zapisanym w tym nagłówku; podprogram inicjujący kartę rozszerzeń powoduje

inicjalizację podzespołów karty, sprawdzenie ich sprawności i ustawienie

odpowiednich wektorów przerwań;

- próba odczytania z mechanizmu dyskowego A: rekordu ze ścieżki zerowej (boot

record), zawierającego prosty program ładujący; w razie powodzenia sterowanie

jest przekazywane do tego programu;

- w razie niepowodzenia próby odczytu z dysku A: dokonywana jest identyczna

próba odczytu z dysku C:

- w razie niepowodzenia próby odczytu z dysku C: następuje próba uruchomienia

interpretera języka BASIC z pamięci RAM;

- w razie niepowodzenia uruchomienia interpretera BASIC'a (niewiele IBM'ów

jest wyposażanych w ten program w pamięci stałej) następuje wypisanie

komunikatu (na monitorze) z żądaniem włożenia do mechanizmu A: dyskietki

systemowej a następnie oczekiwanie na spełnienie tego żądania.

Jego część inicjująca rozmieszcza w pamięci część roboczą i zmienia odpowiednie wektory

przerwań, organizuje pamięć m. in. odczytując z dysku i uwzględniając zawartość tzw. zbioru

konfiguracji CONFIG.SYS. Zawartość tego zbioru może ustalać m. in. liczbę buforów

DOS'u a także jakie dodatkowe elementy oprogramowania (tzw. driver'y związane z

urządzeniami zewnętrznymi) powinny być "doładowane" z dysku.

Procedura startu kończy się automatycznym powołaniem interpretera komend dla

wykonania działań jak dla komendy AUTOEXEC.BAT. Jeśli taki zbiór nie istnieje,

procedura startu kończy się bez jego wykonania; jeśli istnieje - wykonywany jest zgodnie

z zasadami wykonania makrokomend (batch files) DOS'u.

GORACY

Procedura startu po naciśnięciu kombinacji klawiszy Alt-Ctrl-Del, tzw. "gorący restart" różni się od

zimnego startu tym, że przed wywołaniem normalnej procedury "zimnego startu" w

słowie o adresie 0:472H (Restart Flag w danych BIOS'u) ustawiana jest wartość 1234H,

przy której POST pomija czasochłonny test pamięci.

5. Główne DOS'u o numerach 32, 33, 37-39 (20H, 21H, 25H-27H). Szczególnie

ważne są przerwania:

- 33 (21H): tzw. przerwanie osłonowe lub usługowe - stanowi żądanie

wykonania przez DOS jednej z funkcji usługowych o numerze zadanym

w rejestrze AH;

- 32 (20H): żądanie normalnego zakończenia pracy programu

użytkowego;

- 39 (27H): żądanie zakończenia pracy programu użytkowego z

pozostaniem w miejscu (z przesunięciem początku TPA wg zawartości

rejestru DX).

Programy typu .COM powinny zawierać się w obszarze nieco mniejszym niż 64 KB

pamięci, a ich miejscem startu powinien być pierwszy rozkaz segmentu kodu. Zawartość

zbioru dyskowego programu jest kopiowana bez analizy zawartości w obszar pamięci

rozpoczynający się bezpośrednio za PSP, a wszystkie rejestry segmentowe ustawiane na tą

samą wartość: część SEG adresu początkowego PSP. Rejestr IP ustawiany jest na wartość

100H (256), czyli wskazuje na pierwszy bajt za PSP.

Programy typu .EXE są ograniczone co do rozmiaru tylko pojemnością dostępnej w czasie

ładowania pamięci (TPA). Zbiór dyskowy takiego programu zawiera nie tylko informację

przewidzianą do załadowania do pamięci, ale także informacje opisujące m. in. budowę

programu, żądane zawartości rejestrów segmentowych i miejsce startu. Segment kodu

programu umieszczany jest bezpośrednio za PSP, zatem rejestr CS zawiera część SEG

adresu pierwszego bajtu po PSP. Z programu typu .EXE nie jest bezpośrednio dostępna

(bez zmiany zawartości rejestrów segmentowych) zawartość PSP.

? lokalizacja:

• w procesorze (rejestry, pamięć podręczna, pamięć ROM mikroprogramu),

• na płycie głównej (pamięć operacyjna),

• na zewnętrz, w postaci osobnego urządzenia (pamięć dyskowa),

? rozdzielone/wspólne wejście i wyjście - szyna zapisu / odczytu danych

(wspólne bardzo ułatwia dołączenie do systemu);

? fizyczny sposób zapisu, pod tym względem rozróżniamy pamięci:

• magnetyczna (dysk, taśma),

• optyczna (CDROM),

• półprzewodnikowa statyczna (SRAM), (stan układu przerzutnika) -

ulotna, NVSRAM - nieulotna,

• półprzewodnikowa dynamiczna (DRAM), ulotna, nietrwała - wymaga

odświeżania;

• półprzewodnikowa stała - nieulotna, trwale zapisana stanem układu;

? Pamięć rejestrowa procesora - statyczna, ulotna, kilkanaście, kilkadziesiąt

rejestrów 32 lub 64 bitowych, czas dostępu - ułamki nanosekundy

(najszybsza).

? Pamięć podręczna pierwszego poziomu (L1) (ang. Primary cache

memory) - pojemność kilkadziesiąt KB (np. Pentium III - 32KB, AMD Athlon

- 128KB, Pentium 4 - 20KB), czas dostępu rzędu nanosekund, asocjacyjna

SRAM zintegrowana z procesorem;

? Pamięć podręczna drugiego poziomu (ang. Secondary cache memory) -

SRAM 256KB, 512KB, 1MB, 2MB, zintegrowana z procesorem;

? Pamięć ROM (ang. Read-only memory) - stała, dostęp swobodny, kilkaset

KB, osobno;

? Pamięć główna RAM (ang. Random access memory) - ulotna pamięć

dynamiczna, dostępie swobodny (DRAM), pojemności 128MB, 256MB,

512MB, 1GB zintegrowanych w specjalnych bankach SIMM, DIMM, DDR,

RIMM, wymaga odświeżania, czas odświeżania całej pamięci decyduje o

szybkości (kilkadziesiąt ns);

? Pamięć flash - kilkaset MB, nieulotna, wymienna, USB, dostęp swobodny,

szybki odczyt, wolniejszy zapis, USB ogranicza szybko;

? Pamięć dyskowa - nieulotna, dostęp bezpośredni, kilkadziesiąt kilkaset

GB, czas dostępu rzędu - ms;

? Pamięć wymienna: dyskowa, optyczna, tamowa - długi czas dostępu,

wymagana interwencje operatora.

INTR - przerwanie zewnętrzne, maskowalne wprowadzane do mikroprocesora

przez wejście. Może być ono zablokowane programowo rozkazem CLI,

który zeruje znacznik przerwania IF.

- 1. Rejestry ogólnego przeznaczenia, służące głównie do przechowywania wyników

pośrednich, ich zawartości mogą być argumentami większości rozkazów:

AX - akumulator; niektóre rozkazy dotyczące tego rejestru wykonują się

szybciej niż na innych rejestrach ogólnych lub są o 1 bajt krótsze.

BX - rejestr bazowy (base register); dodatkowo może być wykorzystany do tzw.

adresowania bazowego - zawiera wówczas przesunięcie (OFFSET)

argumentu.

CX - rejestr zliczający lub licznikowy (count register); dodatkowo może być

wykorzystany w wielu rozkazach jako licznik wykonań - jest wówczas

zmniejszany o 1 za każdym wykonaniem i jego zawartość podlega

badaniu, czy nie uległa wyzerowaniu.

DX - rejestr danych (data register), jako jedyny może być wykorzystywany do

adresowania obiektów w przestrzeni adresowej wejścia/wyjścia (portów) w

rozkazach wejścia/wyjścia, a także w rozkazach o argumentach lub

wynikach długości większej niż jedno słowo (np. rozkazy mnożenia lub

dzielenia).

Szesnastobitowe rejestry ogólnego przeznaczenia mogą być interpretowane jako

pary ośmiobitowych rejestrów stanowiących mniej i bardziej znaczącą część

rejestru szesnastobitowego

2. Rejestry adresowe, służące głównie do przechowywania adresów względnych

(OFFSET), chociaż mogą być też wykorzystywane jako rejestry robocze -

możliwości użycia ich zawartości jako argumentów rozkazów są tylko w

niewielkim stopniu ograniczane w porównaniu z rejestrami ogólnego

przeznaczenia:

IP - wskaźnik rozkazu (instruction pointer), zawiera zawsze adres względny

(względem początku segmentu określanego przez zawartość rejestru CS)

aktualnie pobieranego do wykonania rozkazu; uwaga: rejestr ten stanowi z

punktu widzenia programisty (wraz z rejestrem CS) część licznika

rozkazów; rejestr IP nie może być jawnie zmieniany przez program.

SI - rejestr indeksu źródła (miejsca, z którego pobierane są dane w operacjach

przesyłania danych - source index); zwykle zawiera adres danych względem

początku segmentu określonego zawartością rejestru DS; rejestr SI

wykorzystywany jest do tzw. adresowania indeksowego oraz w rozkazach

łańcuchowych (na ciągach), może też być wykorzystywany do innych

celów.

DI - rejestr indeksu celu (destination index); zwykle zawiera adres danych

względem początku segmentu określonego zawartością rejestru DS; rejestr

DI wykorzystywany jest do tzw. adresowania indeksowego oraz w

rozkazach łańcuchowych - w tym przypadku jednak zawiera adres

względem początku segmentu określonego zawartością rejestru ES; może

też być wykorzystywany do innych celów.

3. Rejestry segmentowe służą do przechowywania wartości (SEGMENT)

określających adresy początkowe segmentów przy odwołaniach do pamięci:

CS - rejestr segmentu kodu programu (code segment) określa adres początku

segmentu używany w przypadku wszystkich dostępów do pamięci z

adresowaniem względnym za pomocą rejestru IP, tzn. pobierania rozkazów

(instructions fetch). Z punktu widzenia programisty rejestr CS wraz z

rejestrem IP tworzy licznik rozkazów mikroprocesora 8086 (CS:IP).

SS - rejestr segmentu stosu (stack segment) określa adres początku segmentu

używany w przypadku wszystkich dostępów do pamięci z adresowaniem

względnym za pomocą rejestru SP lub BP (o ile nie zadano inaczej za

pomocą specjalnego rozkazu) oraz jeśli zadano wykorzystanie tego rejestru

specjalnym rozkazem.

DS - rejestr segmentu danych (data segment) określa adres początku segmentu

używany w przypadku wszystkich dostępów do pamięci do danych (np. za

pomocą rejestrów BX, SI, DI lub za pomocą adresu podanego bezpośrednio

w rozkazie - o ile nie zadano inaczej za pomocą specjalnego rozkazu) oraz

jeśli zadano wykorzystanie tego rejestru specjalnym rozkazem.

ES - rejestr segmentu dodatkowego (extra segment) określa adres początku

segmentu używany w przypadku dostępów do pamięci do danych w

rozkazach łańcuchowych - działania na ciągach adresowanych za pomocą

rejestru DI, a ponadto jeśli zadano wykorzystanie tego rejestru specjalnym

rozkazem. Rejestry segmentowe mogą być argumentami wyłącznie rozkazów przesyłania MOV, PUSH i POP

- Rozkaz JMP jest rozkazem skoku bezwarunkowego, pozwalającym na

przeniesienie sterowania w obrębie ok. ±128 najbliższych bajtów (skok

wewnątrzsegmentowy krótki SHORT o kodzie dwubajtowym), w obrębie segmentu określonego zawartością rejestru CS (skok wewnątrzsegmentowy NEAR o trzybajtowym zwykle kodzie) oraz w obszarze całej (1 MB) przestrzeni adresowej pamięci mikroprocesora (skok międzysegmentowy FAR zwykle o pięciobajtowym kodzie). Adres skoku może być podany bezpośrednio w rozkazie (tej sytuacji dotyczą wcześniejsze uwagi o długości kodów rozkazowych), mówi się wówczas o skokach bezpośrednich. Rozkazy skokowe zawierające po kodzie operacji identyfikator miejsca, w którym znajduje się właściwy adres, do którego ma nastąpić przeniesienie sterowania nazywają się skokami pośrednimi. W przypadku, gdy

rozkaz skokowy w swym kodzie zawiera informację o ile należy zmienić licznik rozkazów aby osiągnąć miejsce docelowe skoku, rozkaz taki nosi nazwę skoku względnego

- Specyficznym rozkazem skoku warunkowego jest jednoargumentowy rozkaz pętli LOOP. Rozkaz ten służy zwykle do zamykania pętli programowej, w której licznikiem wykonań jest rejestr CX. Wykonanie polega na zmniejszeniu rejestru CX o 1 i zbadaniu wyniku, czy jest on różny od zera. Skok jest efektywny, gdy zawartość CX po zmniejszeniu jest różna od zera. Odmianami tego rozkazu są LOOPE i LOOPZ, w których dla efektywności skoku dodatkowo musi być spełniony warunek ZF=1, oraz LOOPNE i LOOPNZ, w których dla efektywności skoku dodatkowo musi być spełniony warunek ZF=0. Rozwinięcia skrótów mnemonicznych:

LOOP Loop on Count;

LOOPE Loop While Equal;

LOOPNE Loop While Not Equal;

LOOPNZ Loop While Not Zero;

LOOPZ Loop While Zero.

- Wśród rozkazów skoków warunkowych jeden - JCXZ - wykonywany jest nie

w zależności od wartości wskaźników, lecz w zależności od wyniku badania

zawartości rejestru CX: skok jest efektywny, gdy zawartość CX jest równa zeru.

- Sekwencja przerwania o numerze x w mikroprocesorze 8086 składa się z

następujących kroków:

- wykonanie działań odpowiadających rozkazowi PUSHF, czyli odłożenie na

stos zawartości rejestru znaczników F;

- wykonanie działań odpowiadających wykonaniu rozkazu CALL DWORD

PTR 0000H:(4*x), czyli:

- odłożenie na stos zawartości rejestru CS;

- odłożenie na stos zawartości rejestru IP;

- ładowanie do rejestru IP zawartości słowa o adresie 4*x, zaś do rejestru CS

słowa spod adresu 4*x+2;

- wyzerowanie flag IF i TF.

Sekwencja przerwania może zostać spowodowana sygnałem żądania przerwania wymuszanym sprzętowo, lub też zostać zainicjowana w wyniku wykonania jednoargumentowego rozkazu przerwania INT x. Argumentem rozkazu INT jest zawsze stałą (adresowanie natychmiastowe) o wartości równej numerowi żądanego przerwania, z zakresu <0..255>. Poza omawianą postacią rozkazu INT - np. INT 5, występuje postać bezargumentowa tego rozkazu: INT (tzw. breakpoint), wykonywana identycznie jak rozkaz INT 3; występuje ponadto jedyny rozkaz przerwania warunkowego INTO (przerwanie przy nadmiarze), bezargumentowy, wykonywany jak INT 4 jeśli OF=1, zaś nie powodujący żadnych działań jeśli OF=0.

Bezargumentowy rozkaz powrotu z przerwania IRET powoduje w

mikroprocesorze 8086 wykonanie sekwencji powrotu, czyli:

- zdjęcie ze stosu słowa do rejestru IP;

- zdjęcie ze stosu słowa do rejestru CS;

- zdjęcie ze stosu słowa do rejestru znaczników F.

-Następujące bezargumentowe rozkazy pozwalają manipulować stanem

wskaźnika CF (przeniesienia globalnego) w mikroprocesorze 8086:

CLC - polecający wyzerować CF;

STC - powodujący ustawienie CF w stan 1;

CMC - powodujący zmianę stanu CF na przeciwny.

W mniejszym zakresie można sterować stanami flag DF (kierunku dla

rozkazów łańcuchowych) oraz IF (maski przerwań), służą do tego bezargumentowe

rozkazy:

CLD - zerujący DF;

STD - ustawiający DF w stan 1;

CLI - zerujący IF;

STI - ustawiający IF w stan 1.

Rozkazem nie powodującym żadnego działania jest bezargumentowy rozkaz

NOP zajmujący 1 bajt w pamięci.

Istnieje bezargumentowy rozkaz stopu HLT wprowadzający mikroprocesor w

stan zatrzymania ("stopu"). W stanie stopu po wykonaniu rozkazu HLT procesor nie pobiera rozkazów, ale przyjmuje sygnały żądania przerwań zewnętrznych stan licznika rozkazów wskazuje na następny rozkaz po HLT. Sekwencja przerwania powoduje wyjście procesora ze stanu zatrzymania.

1 K oznacza 2^10, czyli 1024

1 M oznacza 2^20, czyli 1048576

1 G 1073741824

JA, JNBE CF=0 i ZF=0

JAE, JNB, JC CF=0

JB, JC, JNAE CF=1

JBE, JG, JNA, JNLE CF=0 lub ZF=0

JE, JZ ZF=1

JGE, JNL SF=OF

JL, JNGE SF?OF

JLE, JNG SF?OF lub ZF=1

JNE, JNZ ZF=0

JNO OF=0

JNP, JPO PF=0

JNS SF=0

JO OF=1

JP, JPE PF=1

JS SF=1.

nie mozna do segmentu pisac wartosci bezpośrednio:

mov ds, 0

ale mozna:

mov bx, 0

mov ds, bx



Wyszukiwarka

Podobne podstrony:
Nowa podstawa programowa WF (1)
1 Podstawy programowania dialogowego
nowa podstawa programowa sp
11-nkb~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
2-eukl~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
Zmiany w podstawie programowej w zakresie edukcji matematycznej, Wczesna edukacja, Materiały do prac
1-algo~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
c-zadania-w3, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, kol
Wychowanie w nowej podstawie programowej katechezy, szkoła, Rady Pedagogiczne, wychowanie, profilakt
PP temat6, Podstawy programowania
PODSTAWA PROGRAMOWA WYCHOWANIA PRZEDSZKOLNEGO
Laboratorium Podstaw Programowania 2
Podstawa programowa dla gimnazjum
Pytania na egzamin nowa podstawa programowa, sem I
Podstawy programowania (wykład III)
Podstawy Programowania Lab 1 dod
Podstawa programowa –?lów wychowania przedszkolnego oraz obszarów?ukacyjnych
Podstawa programowa z komentarzami Tom 8 WF

więcej podobnych podstron