Navigátorposledních 10 z diskuze |
Assembler 3. část - Začínáme s příkazy (LDA,LDX,LDY,STA,STX,STY,RTS)1. RegistryStrojový kod na Commodore 64 má pouze 3 registry. Nejpouživanější registr se
nazývá AKUMULATOR neboli registr A. Základní použití registru
A je toto : LDA #$10, což znamená, že do registru A načteme
hodnotu 10 (hexadecimálně.) . V turboassembleru (dále jen tass.) můžeme použít
ještě i syntax LDA #16 (hezadecimálně #$10) nebo LDA
%00001000. (binárně). Opačnou instrukcí je instrukce STA (STX,STY). Příkaz STA (Store
Axxumulator) uloží obsah akumulátoru (LDA) na patřičné místo v paměti C64. Tip 1 Standartně se obrazovka nachází na adresách $0400 - $07e7. Obrazovka má 40 znaků na řádku a 24 řádků. Schéma obrazovky znakové je v obrázku. Každý znak obrazovky má ale i svoji barevnou adresu. Barevná RAM video obrazovky se nachází od adres $d800 - $dbe7 Mapa obrazovky (VIDEO RAM)
Mapa barevné obrazovky (COLOR RAM) Výše uvedený prográmek vypíše na obrazovku malé zelené "v". Pro následující
pokusy si budeme hrát pouze s videoram, protože na té se naše hračičky okamžitě
projeví a můžeme si výsledek okamžitě kontrolovat.
2. Ostatní způsoby načítání dat a adresacePříkazy pro načítání a ukládání dat budeme probírat zároveň. První způsob načítání dat jsme probrali. Je to "natvrdo" ukládání hodnot do registrů. Když budeme chtít zjistit obsah určité adresy v paměti, použijeme příkaz LDA $adresa. Tento způsob je možný použít v tass i jako LDA adresa, kde "adresa" je ukazatel na label. Ukázka níže: Program načte hodnotu z adresy $a000 a uloží na obrazovku. Druhá část programu
načte hodnotu z "adresy" hodnota a uloží opět na obrazovku.
Další použití jak načítat data a ulkádat jsou následující: Syntax LDA $adresa,X ... nebo LDA $adresa,Y funguje tak, že k adrese se přičte hodnota X (Y) a čte se z této adresy. Můžete si zkusit měnit hodnotu X ve zdrojovém kódu a uvidíte, co se děje. Tento samý syntax platí i pro nultou sránku.
Není možno použít STX $adresa,X nebo STY $adresa,Y a obráceně. Příkaz s ,X nebo ,Y je možno použít jen pro STA !! 3. Nepřímé adresováníNepřímé adresování je nesložitější co se týče pochopení, avšak neučínnější, co se týče programování. Někteří programátoři jiných platforem (ZX Spectrum, ATARI) dokonce chápou použití nulté stránky jako "satisfakci" za málop registrů. Díky nepřímému adresování má commodore 64 obrovské možnosti adresace. Důležité je, že tento způsob adresování je na málo "taktů" (později) ... tudíž rychlé. Program pracuje následovně. 1. Na adresu $fa a $fb se uloží adresa $0400 v pořadí spodní bajt (LO-BYTE) a horní bajt (HI-BYTE) adresy. Důležité je pochopit, že používáme-li nepřímou adresaci s nultou stránkou, je nutnost mít adresu uloženou v paměti LO a pak HI byte. (výpis z monitoru)
příkaz STA ($fa),y uloží data tak, že z adresy FA a jedné
po ní následující (FB) složí adresu a s touto poté pracuje.
Tímto získáme spodní a horní byte adresy "TEST" a pracujeme s ní
podobně jako s STA .... 4.Tabulka možných zápisů příkazů
5. RTS - Return to subroutinePříkaz RTS je zakončení programu nebo podprogramu. Použití je valmi jasné a jednoduché. |
Poslední recenzereakce na článkyTOP 10 HRY
|