I když jistě existuje mnoho příruček různé kvality o tom, jak programovat na počítači Atari ve assembleru, chtěl bych pomoci těm, kteří se k tomu ještě stále neodhodlali. Proto jsem se rozhodl napsat tento článek. Upozorňuji předem, že mi nejde o vytvoření nějaké učebnice, ale o rady začátečníkům, kteří už o assembleru něco tuší a chybí jim podrobnější vysvětlení.
Myslím si, že nejefektivnějším způsobem bude, když vždy předložím nějaký jednoduchý prográmek a důkladně ho okomentuji.
Pro názvy instrukcí budu používat MNEMO KÓDY (=symbolické názvy instrukcí) shodné s MAC65, neboť je to nejpoužívanější (a jistě nejvýkonnější) překladač assembleru.
Úvod: Nejpodstatnější je zvyknout si na to, že veškeré operace se provádějí pomocí někrerého ze tří registrů. A .. akumulátor X .. indexový registr X Y .. indexový registr Y Každý z těchto registrů má 8 bitů a můžeme je tedy naplňovat hodnotami 0 až 255. Kromě těchto registrů máte k dispozici ještě 256 míst nulté stránky paměti (adresa $0000 až $00FF), které umožňují provádět velice užitečné věci.
Analogie s BASICem:
Pozn. Pouze vy sami si určujete velikost rozsahu té či oné proměnné. Podle toho byste s touto proměnnou měli zacházet.
Př.: Potřebujete 3 prom. v rozsahu 0 až 99, dále pak 2 proměnné 0 až 1000.
Řešení: Pro 1.,2. a 3. proměnnou je nutno vyhradit 3 byte (1 byte pro každou z nich). Skutečný rozsah bude sice 0 až 255, ale to je nejmenší možný rozsah, který je větší než požadovaný. Pro 4. a 5. proměnnou je nutné vyhradit 4 byte (2 byte pro každou z nich). Skutečný rozsah bude sice 0 až 65635, ale to je rovněž nejmenší možný rozsah, který je větší než požadovaný.
U 2-bytových proměnných zjistíme hodnotu následujícím způsobem: HODNOTA=Obsah1Byte+Obsah2byte*256
Upozornění: Pro volbu místa proměnných používejte zásadně jen taková, která jsou volná a nepoužívá je žádný jiný program, který je (a nebo má být) přítomen v paměti během spuštění vašeho programu (Tím myslím DOS a pod.). Umístění a využívaná paměť jednotlivých programů bývá většinou obsažena v jejich popisech, manuálech atd.