Czym właściwie jest procesor 8086?
Procesor Intel 8086 to 16-bitowy mikroprocesor składający się z dwóch współpracujących ze sobą jednostek:
- wykonawczej (EU)
- interfejsowej (BIU)
W skład jednostki wykonawczej której to część symuluje obecny projekt, wchodzi rejestr znaczników który to dostarcza nam informacje na temat wyniku ostatniej operacji wykonanej przez jednostkę arytmetyczno-logiczną, jak również rejestry ogólnego przeznaczenia na których to się dzisiaj skupimy.
Rejestry to elementy elektroniczne, mogące przechowywać informacje w pamięci wewnętrznej procesora. Do tych ogólnego przeznaczenia zaliczamy m. in.:
Rejestry wskaźnikowe i indeksowe:
* SP (Stack Pointer) - adres ostatnio zapisanego słowa na stosie
* BP (Base Pointer) - adresowanie danych w segmencie stosu
* SI (Source Index) - dwuargumentowe operacje łańcuchowych do przetrzymywania adresu źródła danych
* DI (Destination Index) - w czasie dwuargumentowych operacji łańcuchowych do przetrzymywania adresu przeznaczenia danych.
Rejestry arytmetyczne – wykorzystane w symulatorze:
* AX (Accumulator) - najczęściej służy do wykonywania działań matematycznych na liczbach całkowitych,
* BX (Base) - najczęściej wykorzystywany po przechowywania adresu pamięci w adresowaniu pośrednim,
* CX (Counter) - najczęściej używany do określania ilości powtórzeń pętli,
* DX (Data) - najczęściej przechowywanie części argumentu lub wyniku operacji
Procesor Intel 8086 może posługiwać się kilkoma różnymi trybami adresowania. Są to sposoby na przesyłanie danych z rejestrów do pamięci lub w odwrotnym kierunku, bądź też między rejestrami.
Jednym z rodzajów adresowania jest adresowanie rejestrowe, które to symuluje omawiany program. Przesyłamy w nim po prostu wartość z jednego rejestru do drugiego.
Np. MOV AX, BX - prześlij do rejestru AX wartość rejestru BX
          XCHG AX, BX - prześlij wartość rejestru AX do rejestru BX, oraz z rejestru BX wartość do AX.