"Rejestry i flagi"


R
ejestry 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:

  1. AX - accumulator register - rejestr akumulatora

  2. BX - base register - rejestr bazowy

  3. CX - counter register - rejestr licznika

  4. 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:

  1. CS - Code Segment - segment kodu - określa segment pamięci, w którym znajduje się wykonywany program.

  2. DS - data segment - segment danych - określa segment pamięci, w którym znajdują się dane aktualnie wykonywanego programu.

  3. SS -stack segment - segment stosu - segment, w którym znajduje się stos.

  4. 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:

  1. IP - instruction pointer - wskaźnik wykonywanej instrukcji a ściślej - jej przesunięcia w segmencie CS

  2. SP - stack pointer - wskaźnik dna stosu - ściślej - jego przesunięcia w segmencie SS.

  3. 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żą:

  1. SI - source index - index źródłowy

  2. 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.

 

Powrót do spisu treści kursu

 


Copyright by Grzegorz Złotowicz
Form and Graphics: Michał Stanek

Pytanie komentarz do Autora