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