O projekcie słów kilka

Program stworzony w ramach powyższego projektu jest symulacją rozkazów MOVE oraz EXCHANGE dla mikroprocesora Intel 8086. Symuluje on przesłanie zawartości pomiędzy dwoma rejestrami z puli : {AX, BX, CX, DX}, jak i również umieszczanie wartości w owych rejestrach; manualnie bądź przyznanych losowo. Prezentuje on również tryby adresowania rejestrowy, jak i również natychmiastowy.
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.