V řadě případů je operand instrukce specifikován 3-mi nebo 6-ti bity. Pokud je jen tříbitový, jedná se o registr. Pokud je 6-ti bitový, jedná se o informaci adresním módu a registr.
+---+---+---+---+---+---+ | Mode | Reg | +---+---+---+---+---+---+
V poli Reg je číslo registru. Registry jsou číslovány od R0 až do R7. Registr R7 má zvláštní postavení mezi registry, je to čítač instrukcí PC, je to tedy ukazatel do paměti na další instrukci.
Mode | Name | Syntax | Effect |
---|---|---|---|
000 | Register | Rn | op≡Rn |
001 | Register Deferred | (Rn) | op≡mem[Rn] |
010 | Autoincrement | (Rn)+ | op≡mem[Rn]; inc Rn |
011 | Autoincrement Deferred | @(Rn)+ | op≡mem[mem[Rn]]; inc Rn |
100 | Autodecrement | -(Rn) | dec Rn; op≡mem[Rn] |
101 | Autodecrement Deferred | @-(R) | dec Rn; op=mem[mem[Rn]] |
110 | Index | x(Rn) | x=mem[PC]; inc PC; op=mem[x+Rn] |
111 | Index Deferred | @x(Rn) | x=mem[PC] inc PC; op≡mem[mem[x+Rn]] |
Ponechání čítače instrukcí mezi běžnými registry nám poskytuje další adresní módy. Není třeba zavádět nové operace, protože žádaného výsledku dosáhneme použitím vybraného adresního módu společně s registrem R7. Pro tato použití je zavedena nová syntaxe.
Pokud potřebujeme načíst do vybraného registru, například R0 přímou hodnotu, zapíšeme to
MOV 23,R0
Tato instrukce zabírá v programu dvě slova a jedná se vlastně o použití registru R7 s autoinkrementací (mód 010).
MOV (R7)+, R0 DW 23 NOP
Technicky to znamená že se přečtě obsah slova na adrese kam ukazuje R7, což je slovo následující za aktuální instrukcí MOV. Tento obsah se uloží do registru R0. Poté se R7 zvětší o 2 což zajistí že bude ukazovat na instrukci nacházející se za přečteným literálním slovem, tedy na instrukci NOP.
Mode | Name | Syntax | Effect |
---|---|---|---|
010 | Immediate | #n | op≡mem[PC]; inc PC |
011 | Absolute | @#n | op≡mem[mem[PC]]; inc PC |
110 | Relative | n | x=mem[PC]; inc PC; op≡mem[x+PC] |
111 | Relative Deferred | @n | x=mem[PC]; inc PC; op=mem[mem[x+PC]] |
Procesor nemá mezi registry žádný zásobníkový ukazatel. Ono ho ani není třeba. Jako zásobník se dá totiž vzhledem k bohatým adresním módům použit libovolný registr. Bývá zvykem jako zásobník použivat rgeistr R6. Operace PUSH a POP nad zásobníkem se dají zapsata takto:
; PUSH R0 MOV R0,-(R6) ; POP R1 MOV (R6)+, R1
Instrukce návratu z podprogramu se pak dá zapsat takto:
; RETURN
MOV (R6)+, R7