Registers / Flags
A | B | C | D | IP | SP | Z | C | F |
---|---|---|---|---|---|---|---|---|
{{ cpu.gpr[0] | number:displayHex }} |
{{ cpu.gpr[1] | number:displayHex }} |
{{ cpu.gpr[2] | number:displayHex }} |
{{ cpu.gpr[3] | number:displayHex }} |
{{ cpu.ip | number:displayHex }} |
{{ cpu.sp | number:displayHex }} |
{{ cpu.zero | flag }} | {{ cpu.carry | flag }} | {{ cpu.fault | flag }} |
RAM
Clock speed:
Instructions:
Show
Hide
View:
Hex
Decimal
Register addressing:
A:
Show
Hide
B:
Show
Hide
C:
Show
Hide
D:
Show
Hide
Execution time: {{ cpu.executionTime }}
Name | Address | Value |
---|---|---|
{{ name }} | {{ value | number:displayHex }} | {{ memory.data[value] | number:displayHex }} ('{{ getChar(memory.data[value]) }}') |
Do registru a
uložíme nulu.
Příkazem inc
(increase) tuto hodnotu zvýšíme o jedna.
Výsledek porovnáme (cmp
, compare) s číslem 10.
Pokud je výsledek menší, opakujeme poslední dva kroky.
mov a, 0 cyklus: inc a cmp a, 10 jb cyklus hlt
Pomocí příkazu db
máme v paměti, úplně na konci programu, uložené číslo 5.
Ve výpisu paměti ho vidíme na prvním řádku, v desátém sloupci.
Na tuto adresu je nastavená značka cislo
, takže odkazem [cislo] se můžeme podívat na obsah této paměťové buňky.
Nejdřív si ji zkopírujeme do registru a
, zvýšíme o jedničku příkazem inc
a výsledek pak zkopírujeme zpátky do paměťové buňky [cislo].
mov a, [cislo] inc a mov [cislo], a hlt cislo: db 5
Tohle je škaredý, ale přesto funkční a zajímavý program.
Nejdřív do registru a
uložíme poslední adresu v paměti, totiž 255.
Na tuto adresu uložíme písmeno 'A'.
Obsah registru a
snížíme o jedna příkazem dec
(decrease).
Druhý a třetí příkaz pak opakujeme bez omezení.
mov a, 255 opakuj: mov [a], 'A' dec a jmp opakuj
by Marco Schweighauser (2015) | MIT License | Blog