nywane na odpowiadających sobie parach bitów — tak więc, mnożenie przez 0 (dokładniej 00000000) oznacza wymnożenie każdego bitu akumulatora przez 0 — w efekcie jego wyzerowanie). W komórce 0101H jest pamiętany kod operacji dodawania do akumulatora argumentu bezpośredniego. Przymiotnik „bezpośredni” informuje, że wartość operandu (argumentu) jest zawarta bezpośrednio w rozkazie. Jak wiemy, wszelkie przetwarzane dane są zapisywane w pamięci. Pobranie takiej informacji z pamięci (czy zapisanie do niej) wymaga określenia adresu komórki pamięci, co nazywamy krótko adresowaniem pamięci. Z tablicy 16.3 wynika, że operand bezpośredni został ulokowany w komórce pamięci o adresie 0102H. W komórce 0101H jest kod tej operacji, której argumentem jest operand bezpośredni z komórki 0102H. Po pobraniu kodu tej operacji licznik rozkazów jest ustawiany na wartości 0102H, czyli natychmiast wskazuje adres operandu. Taki sposób adresowania pamięci danych został więc nazwany adresowaniem natychmiastowym.
Zawartości komórek pamięci do adresu 0106H chyba nie wymagają komentarza.
Natomiast należy zwrócić uwagę, że instrukcja „pamiętaj zawartość akumulatora w komórce o adresie 0200H” (STA 200H) zajmuje w pamięci trzy kolejne komórki. W pierwszej jest zapisany kod rozkazu (kod operacji STA), w drugiej młodszy bajt, a w trzeciej starszy bajt adresu komórki pamięci, w której ma zostać zapisany wynik (w takiej kolejności są zapisywane wszystkie dane dwubajtowe). Zatem adres komórki pamięci znajduje się bezpośrednio za komórką z rozkazem (jej kodem). Taki sposób adresowania pamięci nazywamy więc adresowaniem bezpośrednim.
Z powyższego przykładu widać, że instrukcje asemblera |iP 8080 mogą być 1-, 2- i 3-bajtowe (zajmować w pamięci 1, 2 lub 3 komórki). W tym miejscu należy więc zmodyfikować (podany wcześniej) opis cyklu rozkazowego. Dokładnie tak, jak to opisano wcześniej, jest realizowany rozkaz zerowania akumulatora. To znaczy: licznik rozkazów PC ma stan 0100H, pobrany jest rozkaz, zwiększony stan licznika rozkazów o 1, czyli ustawiony na adresie kolejnej operacji PC = 0101H. Po wykonaniu operacji jest wykonywany kolejny cykl rozkazowy.
W przypadku jednak wykonania operacji zapisanej w komórce 0101H cykl ten wygląda już nieco inaczej. Zostaje pobrany kod operacji spod adresu PC = 0101H i układ sterujący zwiększa licznik rozkazów o 1, PC = 0102H, ale nie jest to adres kolejnego rozkazu. Kod pobranego rozkazu jest dekodowany w układzie sterowania i wykonywany. Jego wykonanie wymaga pobrania zawartości kolejnej komórki pamięci. Operacja ta jest powiązana ze zwiększeniem licznika rozkazów o 1 i teraz licznik jest ustawiony już na adresie kolejnego rozkazu. Tak więc każde odwołanie do pamięci programu (a nie tylko pobranie kodu operacji) zwiększa licznik rozkazów o 1.
Zwróćmy uwagę, że przy adresowaniu natychmiastowym nie występuje podział na pamięć programu i pamięć danych. Ma to bardzo niekorzystne skutki praktyczne. Chcąc bowiem zmienić dane (sumowane liczby), musimy od nowa zapisać nasz program lub zmienić zawartość konkretnych komórek pamięci, których ad-
316