- Asemblerski jezik, simulacija jednostavnog 32-bitnog procesora
- Arhitektura je slična procesoru micro:bita
- 16 registara, 1kB memorije
- 17 naredbi, labele i komentari
- Izravno podržane osnovne funkcije micro:bita; rad s pinovima i ekranom micro:bita
- Jednostavno se proširi ili prilagodi željama korisnika
- Pogodno za upoznavanje s osnovama rada procesora i asemblerskog programiranja
Zapisuje broj u registar. Izravno, ili iz drugog registra.
mov r10 30 # zapisuje 30 u registar r10
mov r11 r9 # zapisuje broj iz registra r9 u registar r11
Zapisuje znak u registar, tj. njegovu brojčanu ASCII vrijednost.
movc r0 P # zapisuje vrijednost 80 u registar r0
Dohvaća podatak iz memorije.
ldr r0 a0 # dohvaća podatak iz memorijske adrese a0 u registar r0
Sprema podatak u memoriju.
str a0 r0 # sprema podatak iz registra r0 u memorijsku adresu a0
Zbrajanje.
add r2 r0 r1 # r2 = r0 + r1
Oduzimanje.
sub r2 r0 r1 # r2 = r0 - r1
Skoči na naredbu označenu labelom.
jmp zbrajanje # skoči na naredbu označenu labelom zbrajanje
Skoči na naredbu označenom labelom, samo ako je zadnja operacija rezultirala nulom.
jmpz zbrajanje # ako je zadnja operacija rezultirala nulom, skoči na naredbu zbrajanje
Čita digitalnu vrijednost pina i sprema ju u registar.
pdr r0 p0 # r0 = p0 (D)
Zapisuje digitalnu vrijednost kao izlaz pina.
pdw p0 1 # p0 = 1
pdw p0 r0 # p0 = r0
Čita analognu vrijednost pina i sprema ju u registar.
par r0 p0 # r0 = p0 (A)
Zapisuje analognu vrijednost kao izlaz pina.
paw p0 r0 # p0 = r0
Provjerava je li gumb pritisnut.
btn p0 bA # p0 = 1 ako je gumb A pritisnut, 0 inače
Ispisuje vrijednost registra na zaslon micro:bita.
lmw r0 # ispisuje se vrijednost registra r0
Ispisuje vrijednost registra na zaslonu micro:bita, kao znak (ASCII).
lmwc r0 # ispisuje se vrijednost registra r0, kao znak
Naredba koja ništa ne radi. Zapravo, uspava program u idućih 100 ms.
nop # ništa se ne događa u idućih 100 ms
Završava izvođenje programa.
halt # program uspješno prekida s izvođenjem
mov r0 3
mov r1 4
mov r2 1
l2: add r3 r0 r3
sub r1 r1 r2
jmpz l1
jmp l2
l1: str a0 r3
halt
mov r0 1
l1: btn r1 bA
sub r1 r1 r0
jmpz l2
btn r1 bB
nop
sub r1 r1 r0
jmpz l3
nop
jmp l1
l2: add r2 r2 r0
lmw r2
nop
jmp l1
l3: btn r1 bA
sub r1 r1 r0
jmpz l4
btn r1 bB
nop
sub r1 r1 r0
jmpz l5
nop
jmp l3
l4: add r3 r3 r0
lmw r3
nop
jmp l3
l5: add r4 r4 r2
sub r3 r3 r0
jmpz l6
jmp l5
l6: lmw r4
halt
Datoteka CPPU.py sadrži izvršni kod simulatora. Napisan je u MicroPythonu za micro:bit i najbolje je koristiti ga razvojnom okruženju Mu. Otvorite datoteku i na označeno mjesto unesete asemblerski kod programa. Ako ćete pisati složenije programe, zbog memorijskog ograničenja MicroPythona, možda će micro:bit javiti grešku manjka memorije. Tada je najbolje izbaciti dijelove simulatora koji u programu nisu korišteni. Za drugi sam primjer to napravio u datoteci Primjer.py. Budući da takva dorada simulatora nije za svakoga, prilagođavam Mu da izravno podrži ovaj simulator. Ako se pokaže zanimanje, složit ću i lekcije za upoznavanje rada procesora i asemblersko programiranje.