MC 68000
Jak jistě víte, procesor, který je ve vašem ST instalován, se jmenuje MOTOROLA 68000 (tedy jestliže nemáte Falcona nebo TT ). I když informací a manuálu, kde byste se mohli dočíst něco o programování MC 68000, vyšlo již mnoho, tak i my jsme se rozhodli vám v tomto směru pomoci a v několika následujících číslech vám popíšeme, jak na tomto procesoru programovat.
Nejhlavnější instrukcí tohoto procesoru je příkaz MOVE. Podstata spočívá v doslovném anglickém překladu - přesuň, přemísti. Pomocí MOVE můžete přesouvat data mezi pamětí a procesorovými registry, pamětí a stavovým registrem atd.
Teď však již k jednotlivým možnostem:
MOVE - Přemístění dat ze zdroje do cílového místa
Syntaxe v Asembleru:
MOVE.s <ea>,<eac>
s - (B, W ,L) značí s jakou délkou dat je možno pracovat. ( Pozor, toto už bude platit u každého příkazu. ) Délky operátoru máme buď byte, word ( slovo ) nebo long word ( dlouhé slovo ).
V tomto případě je povolena délka dat byte, word, long word
ea - efektivní adresu, tj. adresu nějaké části paměti
eac - efektivní adresa cílová, tj. adresu nějaké části paměti, kam se mají data přnést.
Jak to napsat v asembleru:
MOVE.L 30000,40000 - přenese z adresy 30000 na adresu 40000 dlouhé slovo
MOVE.W 30000,40000 - přenese z adresy 30000 ma adresu 40000 slovo, tj. 2 byte
Pomocí tohoto příkazu můžete přenášet také data na datové registry. Těchto datových registrů je 8 ( D0 - D7 ).
Např.:
MOVE.L 30000,D0 - přenese dlouhé slovo z adresy 30000 do registru D0
MOVE.L D7,30000 - přenese dlouhé slovo z D7 na adresu 30000.
MOVEA - Přenos adres
Syntaxe asembleru: MOVEA.s <ea>,An
An - označuje adrsový registr, těch je také 8 ( A0 - A7 ), A7 však prosím nepoužívejte - jeho význam bude vysvětlen později
s - může být word, long word
Výsledek při použití tohoto příkazu je v podstatě stejný jako u MOVE, avšak s touto instrukcí lze pracovat i s adresovými registry.
Příklad:
MOVEA.L 30000,A5 - přenese obsah adresy 30000 do registru A5.
MOVEA.L A3,30000 - přenese obsah registru A3 na adresu 30000.
MOVEM - přenos více registrů
Syntaxe asembleru:
MOVEM.s <seznam registrů>, <ea>
s - word, long word
Příkaz se používá, jestliže si přejeme přenést více než jeden registr.
Příklad:
MOVEM.L A0-A2/A5/D0-D7,30000 - přemístí obsah registru A0,A1,A2,A5,D0,D1,D2,D3,D4,D5,D6,D7 na adresu 30000. MOVEM.L 30000, A0-A5 - přemístí se data od adresy 30000 do registrů A0, A1, A2,A3, A4, A5.
Tyto přesuny probíhají následujícím způsobem. Jako ukázku si vezmu MOVE.L 30000, A0-A5.
Z adresy 30000 do registru A0
Z adresy 30004 do registru A1
Z adresy 30008 do registru A2
Z adresy 30012 do registru A3
Z adresy 30016 do registru A4
Z adresy 30020 do registru A5
To by asi pro dnešek stačilo; příště se podíváme na další možnosti příkazu MOVE a vysvětlíme si, jak pracovat s adresováním pomocí registrů.
HEAD
BORDER
Pro lidi znalé strojového kódu je zde program BORDER.S, který vám umožní zvýšit počet řádku na barevné obrazovce na 274. BORDER můžete spustit z DESKTOPu tak, že rozjedete soubor BORDER.TOS.
Celý zdrojový kód je okomentovám v češtině, a proto není nutné k němu říkat něco více.
HEAD