Narsil

MOTOROLA

↑

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