{{ error }}

Output

{{ getChar(m) }}

CPU & Memory

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

{{ m | number:displayHex }} {{ m | number:displayHex }}

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 }}

Labels

Name Address Value
{{ name }} {{ value | number:displayHex }} {{ memory.data[value] | number:displayHex }} ('{{ getChar(memory.data[value]) }}')

Ukázkové programy

Opakování (s počítáním v registru)

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

Zvýšení čísla v paměti o jedna

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

Přepsání celé paměti

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