Obsah
Já vím, já vím… Není to nic nového, ale mě to baví. Pokud byste někdo hledali online assembler pro staré osmibitové procesory, tak je tady.
ASM80 je online editor / assembler / emulátor pro osmibitové procesory.
ASM80 ukládá soubory ve vašem prohlížeči. Nenajdete je tedy ani na svém disku, ani na serveru. Pokud s nimi chcete pracovat mimo IDE, můžete si celý pracovní prostor (workspace) stáhnout jako ZIP soubor. V budoucnu přibude možnost ukládat si pracovní prostory a soubory na serveru.ASM80 pro práci nevyžaduje přihlašování ani zakládání účtu.
1. Konvence
Assembler rozlišuje typ procesoru podle přípony:
Přípona | Procesor |
---|---|
.a80 | Intel 8080 / 8085 |
.z80 | Zilog Z80 |
.a65 | MOS 6502 |
Pokud nepozná typ podle přípony, zkouší najít pseudoinstrukci „.cpu“
Po úspěšném překladu souboru filename.ext (např. pokus.a80) vzniknou soubory filename.ext.hex a filename.ext.lst (pokus.a80.hex a pokus.a80.lst), které obsahují přeložený kód ve formátu INTEL HEX a listing překladu.
Assembler nerozlišuje mezi velkými a malými písmeny, interně si názvy instrukcí i návěští překládá na velká písmena. Název návěští smí obsahovat znaky A-Z, 0-9, – a _.
2. Instrukce pro preprocesor
Instrukce pro preprocesor začínají vždy tečkou. Provedou se ještě před parsováním zdrojového textu.
Pseudoinstrukce | Význam |
---|---|
.include filename | Vloží obsah jiného souboru do tohoto místa. |
.macro macro_name | Označuje začátek definice makra. Tyto definice nelze vnořovat. |
.rept počet | Zopakuje instrukce od tohoto místa až po .endm tolikrát, kolik říká parametr |
.endm | Konec definice makra / smyčky REPT |
2.1. Makra
Makro se definuje pomocí pseudoinstrukcí .macro a .endm. Parametry jsou číslovány od 1 a odkazovány pomocí zápisu %%1, %%2, %%3, …
.macro decadd adi %%1 daa .endm ; Ukázka použití decadd $22
Výsledný kód je:
0000 ; Ukázka použití **MACRO UNROLL - DECADD 0000 87 22 ADI $22 0001 27 DAA
3. Pseudoinstrukce
Slouží k ovlivnění běhu překladače nebo pro vložení obsahu do výsledného kódu. Některé z nich lze z důvodu zpětné kompatibility používat bez úvodní tečky, ty jsou v následující tabulce uvedené bez tečky (ale lze použít i tečkovanou verzi).
Pseudoinstrukce | Význam |
---|---|
db (alias: defb) | Vložení bajtů. Umožňuje DB čísel i řetězců. Lze použít syntaxi 10 DUP (123) – N krát zopakuje to, co je v závorce. |
dw (alias: defw) | Vložení slov. Lze použít syntaxi 10 DUP (123) – N krát zopakuje to, co je v závorce. |
ds (aliasy: defm,defs) | Vložení prázdného místa |
org addr | Nastavení počáteční adresy překladu |
.ent addr | Nastavení adresy, od které se kód spustí v emulátoru. Použití např.: .ent $ |
equ (alias: =) | Přiřazení hodnoty návěští. Např. VIDRAM equ $4000 |
.if cond | Podmínka – blok instrukcí až po .endif se vloží pouze tehdy, pokud podmínka platí (výraz je nenulový) |
.ifn cond | Podmínka – blok instrukcí až po .endif se vloží pouze tehdy, pokud podmínka neplatí (výraz je nulový) |
.endif | Ukončuje blok s podmínkou. Pozor! Podmínky nelze vnořovat! |
4. Výrazy a čísla
Assembler z důvodu kompatibility umožňuje zápis v různých formátech. Decimální čísla se zapisují bez jakéhokoli prefixu či postfixu (10,42,-5). Hexadecimální v několika různých tvarech – s prefixy 0x nebo $ či s postfixem h: 0x12AB, $12AB nebo 12ABh jsou ekvivaletní zápisy. Binární konstanty se zapisují pomocí prefixu „%“ nebo postfixem „b“: 01001b / %01001
Parser v assembleru zvládne i složitější matematické výrazy se závorkami apod. Lze použít operátory +, -, *, /, % (modulo), # (modulo – alias k % kvůli komaptibilitě) a další. Ve výrazech lze použít návěští v roli proměnných. Lze použít i pseudoproměnnou $, která obsahuje aktuální hodnotu čítače adres.
5. Emulátor
IDE obsahuje jednoduchý emulátor procesorů 8080 a 6502 (Z80 je v přípravě). Stiskem F10 proběhne překlad a spustí se emulátor. Můžete krokovat instrukce po jedné nebo po 50 a můžete měnit obsah registrů (změna obsahu paměti zatím není implementována)
Dotazy a připomínky
K posílání dotazů a připomínek slouží ikona otazníku v pravém horním rohu. Upozorňuju předem, že ASM80 funguje pouze v moderních prohlížečích (IE9 a novější, Firefox, Chrome).
Demo
Pomocí následujících odkazů si můžete do svého pracovního prostoru přidat připravené zdrojové kódy:
- Monitor PMI-80 – výpis pochází ze stránek NOSTALCOMP PMI-80
- SNAKE 6502 – jednoduchá hra, pocházející ze stránky Easy6502.
Další demokódy budou následovat. Máte-li nějaký námět nebo nabídku, pošlete mi jej, díky.
Roadmap
(nikoli v pořadí důležitosti)
- emulace Z80
- Emulátory počítačových sestav (PMI-80, BOB-85, TEMS 80-03 a další)
- Podpora procesorů 680x
- Možnost uložit si soubory z prohlížeče na serveru, přidat k nim dokumentaci, zveřejnit je jako knihovny
- otevřené API pro vytváření dalších emulačních modulů