"Rejestry i flagi"
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 pascalu.
Rejestry to:
AX - accumulator register - rejestr akumulatora
BX - base register - rejestr bazowy
CX - counter register - rejestr licznika
DX - data register - rejestr danych
Wszystkie powyższe
rejestry są 16-bitowe - czyli dwubajtowe. Do
każdego z nich jest dostęp przez podrejestry - np. dla AX
istnieją rejestry AH i AL (AH=higher - wyższy bajt ax, AL=lower
- niższy bajt AX).
Analogicznie - bx posiada BH i BL, CX - CH i CL, DX - DH i DL.
Oczywiście rejestry *H i *L są ośmiobitowe - jednobajtowe.
Procesor zawiera także rejestry segmentów.
Rejestry segmentów to:
CS - Code Segment - segment kodu - określa segment pamięci, w którym znajduje się wykonywany program.
DS - data segment - segment danych - określa segment pamięci, w którym znajdują się dane aktualnie wykonywanego programu.
SS -stack segment - segment stosu - segment, w którym znajduje się stos.
ES - extra segment - używany do operacji na łańcuchach pamięci.
W przypadku tych rejestrów
nie istnieją już podrejestry z ich starszym i młodszym bajtem.
Jakkolwiek wszystkie te segmenty mogą być modyfikowane, to
jednak modyfikacji wartości CS, DS i SS dokonuje się w
zaawansowanym programowaniu - dla niedoświadczonych
programistów takie modyfikacje mogą oznaczać tylko kłopoty.
Trzecią grupę rejestrów stanowią pointers - wskaźniki.
Wykaz wskaźników:
IP - instruction pointer - wskaźnik wykonywanej instrukcji a ściślej - jej przesunięcia w segmencie CS
SP - stack pointer - wskaźnik dna stosu - ściślej - jego przesunięcia w segmencie SS.
BP - base pointer - wskaźnik bazowy.
Podobnie jak w przypadku segmentów, wartości rejestrów *P - za wyjątkiem BP - są modyfikowane wyłącznie przez procesor, lub przez program na wysokim szczeblu zaawansowania.
Przedostatnią grupę stanowią indeksy, do których należą:
SI - source index - index źródłowy
DI - destination index - index docelowy
Indeksy używane są do transferu bloków pamięci, ale mogą być bez konsekwencji używane również do innych celów.
Ostatnim rejestrem jest rejestr flag procesora. Jest to rejest 16 bitowy a każda flaga zajmuje 1 bit - może więc być aktywna, lub nieaktywna. Flagi to:
AF, CF, DF, IF, OF, PF, SF, TF, ZF.
Najogólniej mówiąc flagi określają aktualny stan procesora, mają też jednak istotne znaczenie przy instrukcjach skoku warunkowego, którymi zajmiemy się później.
Copyright by Grzegorz Złotowicz
Form and Graphics: Michał Stanek