Tutorial di base per D64ASM
di
pubblicato il 10-03-2012 alle 20:12 (3487 Visite)
Eccomi di nuovo con le indicazioni per utilizzare il mio assembler D64ASM (nella versione attuale, la 47).
Buon divertimento.
=======
Simboli
=======
Un simbolo è un nome univoco che deve iniziare con un carattere alfabetico o un _ e che continua con altri caratteri alfabetici, numerici o _
Può rappresentare un indirizzo (a 16 bit) quando usato come
LABEL
o un valore simbolico se usato con il simbolo
=
di assegnazione come in
SYMB = 1
=====
Direttive
=====
.ORG <numexp>
Imposta l'indirizzo attuale nel Program Counter.
Il parametro (obbligatorio) è una espressione numerica con valore intero a 16 bit senza segno che indica un indirizzo da $0000 a $FFFF
Esempio: .ORG $C000
.INCLUDE "filename"
Indica un nuovo file sorgente da assemblare a partire da questo punto.
Il parametro obbligatorio, di tipo costante stringa, indica il file del sorgente da includere.
L'assemblaggio continua con la prima linea del nuovo file e riprende dalla linea seguente l'INCLUDE
Esempio: .INCLUDE "Defs.Inc"
.DB <numexp>[,<numexp> ...]
Genera una serie di valori numerici di un byte
(8 bit, da 0 a 255 o da -128 a 127) uguali al risultato delle singole espressioni separate da virgola.
Almeno una espressione è obbligatoria.
Esempio: .DB $10, $20, $30
.DW <numexp>[,<numexp> ...]
Genera una serie di valori numerici di una word
(16 bit, da 0 a 65535 o da -32768 a 327677) uguali al risultato delle singole espressioni separate da virgola.
Almeno una espressione è obbligatoria.
Esempio: .DW $1000, $2000, $3000
.DD <numexp>[,<numexp> ...]
Genera una serie di valori numerici di una doppia word
(32 bit, da 0 a 4294967295 o da -2147483648 a 2147483647) uguali al risultato delle singole espressioni separate da virgola.
Almeno una espressione è obbligatoria.
Esempio: .DD $10000000, $20000000, $30000000
.ASCII "stringa"
Genera la sequenza di valori ASCII della stringa costante passata come parametro.
La stringa è obbligatoria.
Esempio: .ASCII "COMMODORE 64"
.ASCIS "stringa"
Genera la sequenza di valori ASCII della stringa costante passata come parametro;
nell'ultimo valore il bit 7 è posto a 1.
La stringa è obbligatoria.
Esempio: .ASCIS "RUN"
.ASCIZ "stringa"
Genera la sequenza di valori ASCII della stringa costante passata come parametro;
viene aggiunto un byte (0 binario) alla fine.
La stringa è obbligatoria.
Esempio: .ASCIZ "PRESS PLAY ON TAPE"
.END
Senza parametri, interrompe l'assemblaggio del file sorgente corrente, ignorando le restanti linee.
Esempio: .END
========
Opcode 65XX
========
Tutti gli opcode sono riconosciuti con la seguente sintassi per i modi di indirizzamento (esempi)
CLC Implicito
ASL A Accumulatore
LDA #$20 Immediato
LDA $30 Pagina Zero
LDA $30,X Pagina Zero + registro X
LDA $30,Y Pagina Zero + registro Y
LDA $3000 Assoluto
LDA $3000,X Assoluto + registro X
LDA $3000,Y Assoluto + registro Y
LDA ($20,X) Indicizzato Indiretto
LDA ($20),Y Indiretto Indicizzato
JMP ($1000) Indiretto
BNE LABEL Relativo