Pamięć programu, licznik rozkazów

Pamięć programu (ang. program memory), zgodnie z nazwą, jest przeznaczona do zapisywania programu realizowanego przez mikrokomputer. Maksymalna pojemność pamięci programu wynosi 4096(4K) słów. Organizacyjnie pamięć programu jest podzielona na dwa tomy (ang. banks) po 2048 (2K) słów i na strony (ang. pages) po 256 słów:
                Adres
---------------- 4095    +---------------+
Wewnątrz układu   ...    |               | Tom 1 (DBF=1)
8050              ...    |               |
                  ...    |               |
                 2048    |               |
---------------- 2047    +---------------+
Wewnątrz układu   ...    |               | Tom 1 (DBF=0)
8049, 8749        ...    |               |
                  ...    |               |
                 1024    |               |
---------------- 1023    +---------------+
Wewnątrz układu   ...    |               | Strona 2
8048, 7848        ...    |               |
                  ...    |               |
                  512    |               |
----------------  511    +---------------+
                  ...    |               | Strona 1
                  ...    |               |
                  ...    |               |
                  256    |               |
----------------  255    +---------------+
                  ...    |               | Strona 0
                  ...    |               |
                  ...    |               |
                    8    |               |
                    7    +---------------+ <- Początek programu obsługi
                    6    |               |    przerwania z układu
                    5    |               |    czasowo-licznikowego
                    4    |               |
                    3    +---------------+ <- Początek programu obsługi
                    2    |               |    przerwania zewnętrznego /INT
                    1    |               |
                    0    +---------------+ <- Start programu po zerowaniu

Wyróżnia się tu trzy miejsca o adresach:
0 - od którego rozpoczyna się wykonywanie programu po wyzerowaniu mikrokomputera (RESET),
3 - od którego rozpoczyna się wykonywanie programu obsługi przerwania zewnętrznego (INT),
7 - od którego rozpoczyna się wykonywanie programu obsługi przerwania z układu czasowo-licznikowego.

W pamięci programu mogą być umieszczone dane (stałe). Dostęp do nich (pobranie do akumulatora) jest możliwy tylko za pomocą specjalnych rozkazów MOVP (pobranie danej ze strony bieżącej, tzn. tej, na której jest umieszczony rozkaz MOVP) lub MOVP3 (pobranie danej ze strony trzeciej). W obu przypadkach adresowanie na stronie jest pośrednie (zawartością akumulatora). Poza tym stałe dane mogą być umieszczone w pamięci programu jako argumenty bezpośrednie rozkazów. Część pamięci programu znajduje się wewnątrz układu mikrokomputera i stanowi wewnętrzną pamięć programu (ang. resident program memory lub internal program memory). Jest to zawsze pamięć stała (typu ROM lub EPROM).

Pozostała część przestrzeni adresowej (4096 słów minus wielkość pamięci wewnętrznej) może być wykorzystana przez dołączenie do układu zewnętrznej pamięci programu (ang. external program memory). Może to być pamięć dowolnego typu, ale w praktycznych systemach stosuje się w zasadzie wyłącznie EPROM. Sposób dołączenia zewnętrznej pamięci programu opisano w kolejnym rozdziale. Podział pamięci programu na część wewnętrzną i zewnętrzną jest niezauważalny od strony programowej.

Pamięć programu jest adresowana przez 12-bitowy licznik rozkazów (ang. program counter) - PC:

Najbardziej znaczący jego bit - PC11-wskazuje numer tomu pamięci, bity od 8 do 11 wyznaczają numer strony, natomiast bity od 0 do 7 określają adres na stronie. W czasie zerowania systemu (RESET) licznik rozkazów jest zerowany.

Konwecjonalny licznik rozkazów to 11 mniej znaczących bitów. Ich zawartość zwiększa się o 1 w czasie cyklu pobrania z pamięci programu. Najbardziej znaczący bit może być zmieniony tylko w wyniku wykonania rozkazów skoku JMP lub skoku do podprogramu CALL; przepisuje się do niego zawartość wskaźnika tomu (ang. memory bank flag) - DBF. Wskaźnik tomu może być ustawiany za pomocą specjalnych rozkazów SEL MB. Wspomniane wyżej rozkazy skoków mają adres 11-bitowy, co umożliwia skoki w obrębie ostatnio ustawionego tomu. Dopiero stosując sekwencję z rozkazem SEL MB, można uzyskać skok do dowolnego miejsca pamięci. Pozostałe rozkazy skoków (w tym wszystkie warunkowe) zmieniają tylko osiem mniej znaczących bitów licznika rozkazów - są więc wykonywane w obrębie bieżącej strony.

Powrót