Za potrebe naše učne enote bomo definirali preprost računalnik s von Neumannovo arhitekturo. Njegova CPE bo imela en sam 8-bitni register R0
ter aritmetično-logično enoto, ki lahko sešteva in odšteva 8-bitne operande. Glavni pomnilnik bo velikosti 4096 (212) 8-bitnih pomnilniških besed. Za naslavljanje vseh pomnilniških besed bomo torej potrebovali 12 bitov. Programski števec (PC
), ki hrani naslov naslednjega ukaza v pomnilniku, mora biti zato prav tako 12-biten. Računalnik bo imel vhodno-izhodni sistem, na katerega bosta priklopljena samo tipkovnica in zaslon.
CPE bo imela zelo preprost nabor ukazov naslednjega formata:
Zgornji štirje biti (od 15 do vključno 12) so operacijska koda, medtem ko spodnjih 12 bitov (od bita 11 do 0) določa naslov v pomnilniku ali konstanto pri takojšnjem naslavljanju. Naslova registra R0 v ukazu ne potrebujemo, saj imamo en sam register.
Operande, ki v ukazih niso izrecno navedeni (v našem primeru register R0), imenujemo implicitni operandi, medtem ko je naslov v pomnilniku v našem primeru t.i. eksplicitni operand.
Poglej v Slovar slovenskega knjižnega jezika, kaj točno pomeni impliciten in ekspliciten.
Naš računalnik ima samo eno vhodno in izhodno enoto, pri večjem številu bi seveda ukaza IN
in OUT
tudi potrebovala naslov. Predlagaj format ukaza.
Naš računalnik bo poznal 10 ukazov, ki jih opisuje spodnja tabela (ukaz lahko klikneš in si ogledaš primer uporabe):
Ukaz | Op. koda | Opis |
---|---|---|
0000 |
Seštej vsebino R0 in vsebino pomnilniške besede z naslovom X ter rezultat shrani v R0 . |
|
0001 |
Odštej vsebino pomnilniške besede z naslovom X od R0 ter rezultat shrani v R0 . |
|
0010 |
Naloži vsebino pomnilniške besede z naslovom X v R0 . |
|
0011 |
Shrani vsebino R0 v pomnilniško besedo z naslovom X . |
|
0100 |
Če je vsebina R0 enaka 0, v programski števec vpiši naslov X . |
|
0101 |
Če je vsebina R0 različna od 0, v programski števec vpiši naslov X . |
|
0110 |
Če je vsebina R0 večja od 0, v programski števec vpiši naslov X . |
|
0111 |
V programski števec vpiši naslov X . |
|
1000 |
Preberi 8-bitno kodo znaka iz tipkovnice v R0 . |
|
1001 |
Zapiši 8-bitno kodo znaka v R0 na zaslon. |
|
1010 |
Prištej 12-bitno konstanto C k R0 . |
|
1011 |
Odštej 12-bitno konstanto C od R0 . |
|
1100 |
V R0 zapiši 0. |