Assembleur
6502
Editeur/assembleur 6502:
J'ai développé cette application sous Windows pour permettre de développer sur un Atari 800XL en assembleur !!!
En fait, il s'agit d'un programme exemple sur le cours développement en C sous Windows. Il s'agit aussi d'une base pour le développement de ce type de programme. L'application est donc loin d'être complète. Il y a quand même le minimum : Editeur et assembleur. Les fichiers générés pourront alors être chargés dans un émulateur 800XL !
Si cela vous intéresse, suivez moi !
Un site où trouver un assembleur 6502 en shareware:
http://www.ticalc.org/archives/files/fileinfo/15/1504.html
Ce programme tourne sous DOS. Il permet en fait d'assembler suivant différents types de microprocesseurs dont le 6502.
Pour l'utiliser, tapez tasm -65 -b nomdusource nomducible
Pour avoir de l'aide, tapez tasm
Vous obtiendrez ceci:
tasm -<nn> [-options] src_file [obj_file [lst_file [exp_file [sym_file]]]]
Option Flags defined as follows:
-<nn> Table (48=8048 65=6502 51=8051 85=8085 80=z80)
(68=6800 05=6805 70=TMS7000 96=8096)
(3210=TMS32010 3225=TMS32025)
-t<tab> Table (alternate form of above)
-a Assembly control (strict error checking)
-b Produce object in binary format
-c Object file written as a contigous block
-d<macro> Define macro
-e Show source lines with macros expanded
-f<xx> Fill entire memory space with 'xx' (hex)
-g<x> Obj format (0=Intel,1=MOSTech,2=Motorola,3=bin,4=IntelWord)
-h Produce hex table of the assembled code
-i Ignore case in labels
-l[al] Produce a label table in the listing[l=long,a=all]
-m Produce object in MOS Technology format
-o<xx> Define number of bytes per obj record = <xx>
-p<lines> Page the listing file
-q Quiet, disable the listing file
-r<kb> Set read buffer size (KB)
-s Write a symbol table file
-x<xx> Enable extended instruction set (if any)
Les instructions de l'assembleur:
.ORG adresse
Indique que le code sera à l'adresse adresse. Ce qui veut dire que tous les sautsabsolus utiliseront comme origine l'adresse $0600
label .EQU nombre
label .EQU nombre + nombre
Définition d'un label qui correspond en fait à un nombre qui peut être éventuellement une adresse. Ceci permettant une lecture plus facile du code.
Les labels pour des boucles: il suffit d'indiquer un nom de label en démarrant du bord le plus à gauche.
Il faut terminer son code assembleur par .END. Cette commande permettant normalement à l'assembleur d'indiquer que le fichier semble ok. L'absence du .END provoquant une alerte, fin de fichier atteint, mais absence de END (fichier corrompu ?).
Voici un exemple :
0001 |
0600 |
|
|
|
|
.ORG |
$0600 |
0002 |
0600 |
|
|
|
COULEUR |
.EQU |
$2C6 |
0003 |
0600 |
|
|
|
|
|
|
0004 |
0600 |
68 |
|
|
|
PLA |
|
0005 |
0601 |
A2 |
00 |
|
|
LDX |
#0 |
0006 |
0603 |
E8 |
|
|
LOOP |
INX |
|
0007 |
0604 |
8E |
C6 |
02 |
|
STX |
COULEUR |
0008 |
0607 |
D0 |
FA |
|
|
BNE |
LOOP |
0009 |
0609 |
60 |
|
|
|
RTS |
|
0010 |
060A |
|
|
|
|
.END |
|
0011 |
060A |
|
|
|
|
|
|
Pour définir un block de donnée:
message .DB "Salut"
ou
tableau .DB 10,20,30,40
Pour charger un registre avec la partie haute d'une adresse:
LDX ADRESSE/256
Avec la partie basse:
LDX ADRESSE&255
ADRESSE .DB "Texte"
Vous trouverez ici un tableau d'instructions de différents assembleurs