8. Architektura mikroprocesora Intel 8086

8.3. Architektura mikroprocesora 8086

Intel 8086 jest jednym z pierwszych mikroprocesorów 16-bitowych. Został wprowadzony do produkcji przez firmę Intel w roku 1980.

Układ mikroprocesora 8086 składa się z 2 pracujących niezależnie głównych części BIU (Bus Interface Unit) i części wykonawczej EU (Execution Unit). W BIU znajduje się bufor mieszczący kolejkę rozkazów o długości 6 bajtów.

Licznik rozkazów PC (Program Counter lub Program Pointer lub Instruction Pointer) jest 16-bitowy.

Pamięć operacyjna w systemie 8086 zorganizowana jest bajtowo, tzn. adresowany jest każdy bajt i ma maksymalną pojemność 1 MB tzn. 220 bajtów. Adres fizyczny (wystawiany na końcówkach szyny adresowej) ma 20 bitów.

Cztery 16-bitowe rejestry ogólnego przeznaczenia AX, BX,CX, DX mogą być traktowane jako pary rejestrów 8-bitowych, tzn.

AX=(AH,AL), BX=(BH,BL), CX=(CH,CL), DX=(DH,DL)

W naturalny sposób w mikroprocesorze 8086 można operować bajtami.

 

Rys 1. Architektura mikroprocesora Intel 8086. CS, DS, SS, ES to 16-bitowe rejestry segmentowe. Blok rejestrów ogólnego przeznaczenia to 16-bitowe rejestry AX, BX, CX, DX. Blok rejestrów wskaźnikowych i indeksowych to 16-bitowe rejestry SP, BP, SI, DI.

Układ 8086 zawiera osiem 16-bitowych rejestrów roboczych.

Pierwsza grupa tych rejestrów to 4 rejestry ogólnego przeznaczenia:

AX – rejestr akumulatora, mówimy krótko akumulator
BX – rejestr bazowy (base register)
CX - rejestr zliczający (count register), służy do zliczania liczby obiegów pętli
DX – rejestr danych (data register)

Druga grupa to rejestry indeksowe i wskaźnikowe:

SP – wskaźnik stosu (stack pointer)
BP – wskaźnik bazowy (base pointer)
SI – rejestr indeksowy źródła (source index register)
DI – rejestr indeksowy przeznaczenia (destination index register)

Grupa 4 rejestrów segmentowych to:

CS – rejestr segmentu programu (code segment register)
DS – rejestr segmentu danych (data segment register)
SS – rejestr segmentu stosu (stack segment register)
ES – rejestr segmentu dodatkowego

Rys. 2. Rejestry mikroprocesora 8086

 

Rys. 3. Rejestr znaczników FR (Flag Register) i usytuowanie znaczników w rejestrze FR; symbolem NU (ang. not used) oznaczone są niewykorzystane pozycje rejestru FR

Struktura 16-bitowego rejestru znaczników FR (ang. Flag Register) pokazana jest na rys.3. Znacznik (ang. flag lub status flag) to pozycja rejestru znaczników pozwalająca zapamiętać sytuację taką jak np. wystąpienie nadmiaru lub pozwalająca ustawić parametr taki jak DF (kierunek inkrementacji) decydujący o sposobie wykonania pewnych instrukcji. W słowie 16-bitowym mamy 9 znaczników o następującym znaczeniu:

  • OF - nadmiar w zapisie U2 (ang. overflow flag). OF = 1 oznacza wystąpienie nadmiaru
  • DF - kierunek inkrementacji (ang. direction flag), ustawiany jest rozkazem STD a zerowany rozkazem CLD. DF wskazuje czy zawartości rejestrów SI i DI mają być zwiększane o1 czy zmniejszane o1.
  • IF - znacznik włączający i wyłączający system przerwań (ang. interrupt flag) IF = 1 zezwala na przyjmowanie przerwań, IF = 0 oznacza brak zezwolenia na przyjmowanie przerwań
  • TF - znacznik pracy krokowej (ang. trap flag)
  • SF - znacznik znaku (ang. sign flag), SF = 0 liczba dodatnia, SF = 1 liczba ujemna
  • ZF - znacznik zera (ang. zero flag), ZF = 0 wynik różny od 0, ZF = 1 wynik równy 0
  • AF - przeniesienie pomocnicze (ang. auxiliary carry flag), jest to przeniesienie z bitu 3 na 4
  • PF - znacznik parzystości (ang. parity flag), PF = 0 liczba jedynek wyniku jest nieparzysta, PF = 1 liczba jedynek wyniku jest parzysta
  • CF - znacznik przeniesienia (ang. carry flag)