Acesta este comanda crasm care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
crasm - Cross assembler pentru 6800/6801/6803/6502/65C02/Z80
REZUMAT
crasm [-sau fişier cod] [-slx] asmfile
Asamblați programul microprocesorului asmfile și produc fișierul de ieșire fişier cod în Intel HEX
sau în format Motorola S Code. O listă de programe și un tabel de simboluri sunt, de asemenea, produse pe
ieșire standard. Versiunea actuală a crasm poate asambla programe pentru 6800, 6801,
6803, 6502, 65C02, și Z80 procesoare. Lista completă este tipărită atunci când invocați crasm
fara argumente.
OPŢIUNI
-o fişier cod
Specificați numele fișierului de ieșire. Niciun fișier de ieșire nu este produs fără acest lucru
opțiune.
-s Dezactivați avertismentele.
-l Dezactivați ieșirea listei de programe.
-x Dezactivați ieșirea tabelului de simboluri.
SINTAXĂ
Fiecare linie a programului de asamblare ar trebui să urmeze unul dintre următoarele șabloane, unde
parantezele delimitează părțile opționale.
[;comentariu]
etichetă = expresie [;comentariu]
[etichetă] mnemonic operand [;comentariu]
Comentariile sunt introduse prin punct și virgulă (;) și se extind până la capătul liniei. Etichetele sunt
identificatori care conțin până la 36 de caractere alfanumerice (inclusiv punct și liniuță de subliniere).
Etichetele nu pot începe cu o cifră. Formatul câmpului mnemonic și operanzi depinde
pe micro-procesorul selectat. Câteva mnemonici sunt valabile pentru toate procesoarele și sunt
folosit pentru a da directive celor adunaţi. Acestea sunt cunoscute ca „pseudo-mnemonici”.
etichete
Etichetele sunt identificatori care reprezintă
- o adresă absolută,
— o adresă relativă (cod independent de poziție),
- un registru,
- o listă de registre,
— un anumit bit la o anumită adresă,
— sau un mnemonic.
Majoritatea etichetelor sunt compuse din cel mult 36 de caractere alfanumerice, puncte (.) Sau
subliniere (_). Etichetele nu pot începe cu o cifră. Sunt insensibile la majuscule.
Etichete care încep cu punct (.) sunt etichete locale al căror domeniu de aplicare este fie limitat la
macro în care sunt definite, sau la segmentul de cod delimitat de pseudo-mnemonici
COD or DUMMY.
Eticheta „stea” predefinită (*) reprezintă contorul programului curent, adică
adresa la care va fi codificată următoarea instrucțiune de cod de asamblare. Altele predefinite
etichetele includ toate pseudo-mnemonicile, mnemonicile specifice microprocesorului și registrul
nume.
constante
Asamblatul recunoaște constantele numerice exprimate în zecimal, hexazecimal, octal,
binar sau ascii.
┌───────────────────────────────────────────────── ─────────┐
│Tip Format Exemple │
├───────────────────────────────────────────────── ─────────┤
│zecimală dddd 1234, 675, 12, 1, Dar nu 0.12. │
├───────────────────────────────────────────────── ─────────┤
│hexazecimal $dddd $fd12, 2 dolari AC, $0. │
│ ddddH 03H, 2da7H, 0FC84H, Dar nu FC84H. │
│ 0Xdddd 0x03, 0x2AC, 0Xfc84. │
├───────────────────────────────────────────────── ─────────┤
│octal ddddQ 377Q, 012412Q. │
├───────────────────────────────────────────────── ─────────┤
│binar %dddd % 01110110, % 1100. │
│ ddddB 01110110B, 1100B. │
│ 0Bdddd 0b1100 │
├───────────────────────────────────────────────── ─────────┤
│ascii 'cccc' 'A', „AB”, '"', '\n', '\''. │
│ "cccc" „\t”, "\"", "a'b". │
└───────────────────────────────────────────────── ─────────┘
Expresii
La fel ca etichetele, expresiile pot reprezenta o adresă absolută (abs), o adresă relativă pentru
cod independent de poziție (rel), un registru (reg), sau o listă de registre (inregistrare), sau a
referință la un anumit bit la o anumită adresă (bspec).
Următorii operatori sunt recunoscuți pe expresii.
┌───────────────────────────────────────────────── ──────────┐
│Sintaxă Rezultat Descriere │
├───────────────────────────────────────────────── ──────────┤
│ abs{abs} bspec referință de biți, de ex pia{3} │
│ ADDR(abs) abs adresa de la o referință de bit │
│ PIC(abs) abs numărul de biți dintr-o referință de biți │
├───────────────────────────────────────────────── ──────────┤
│ - abs abs complement a doi │
│ ~ abs abs complementul cuiva │
├───────────────────────────────────────────────── ──────────┤
│ abs << abs abs schimbare la stânga │
│ abs >> abs abs schimbare la dreapta │
├───────────────────────────────────────────────── ──────────┤
│ abs | abs abs pe biți sau │
│ abs & abs abs pe biți și │
│ abs ^ abs abs pe biți xor │
├───────────────────────────────────────────────── ──────────┤
│ abs * abs abs înmulțire │
│ abs * abs abs diviziune │
├───────────────────────────────────────────────── ──────────┤
│ abs + abs abs adaos │
│ rel + abs rel adaos │
│ abs - abs abs scădere │
│ rel - abs rel scădere │
│ rel - rel abs scădere │
├───────────────────────────────────────────────── ──────────┤
│ reg - reg inregistrare interval de înregistrare │
│ inregistrare \ reg inregistrare lista de înregistrări │
└───────────────────────────────────────────────── ──────────┘
Tabelul listează operatorii în ordinea descrescătoare a priorității. Parantezele pot fi folosite pentru
evita ambiguitățile. Un avertisment este generat atunci când o expresie întreagă este înconjurată cu
paranteză și poate fi confundată cu un mod de adresare cu microprocesor.
Exemple:
(bază + 12 USD) >> 8 & 0xff00
„A”-80H
(bază+0x12)
Ultimul exemplu provoacă un avertisment deoarece parantezele nu au fost necesare și ar putea
sugerează un mod de adresare cu microprocesor.
Toate expresiile aritmetice sunt evaluate pe 32 de biți. Operațiile aritmetice depășesc
în tăcere. Valorile aritmetice sunt apoi trunchiate la dimensiunea implicată de micro-
mnemonicul procesorului. Această trunchiere poate provoca un mesaj de avertizare.
Exemple: toate instrucțiunile următoare
(6502) lda # 1234 $
(6800) ldaa 1234 USD, x
(Z80) ld (ix+0C2H),b
provoca un avertisment
>>> AVERTISMENT: operand revărsare
Cu toate acestea expresie
$1123454 * 1298992
se revarsă în tăcere.
Pseudo-mnemonică
Următoarele pseudo-mnemonice sunt întotdeauna recunoscute.
Procesor cpuname
Indică tipul de microprocesor selectat. Aceasta trebuie să apară înainte de anu micro-
instrucțiuni specifice procesorului. Valorile posibile ale cpuname sunt listate când dvs
invoca crasm fara argumente. Lista actuală include 6800, 6801, 6803, 6502,
65C02, și Z80
REZULTATE binformat
Indică formatul fișierului de ieșire. Argument binformat poate lua valori SCODE
pentru producerea unui fișier de ieșire folosind codul S Motorola sau HEX pentru Intel Hex
format. Valoarea implicită depinde de micro-procesorul selectat.
COD
Delimitați domeniul de aplicare al etichetelor locale și introduceți o secțiune de program.
DUMMY Delimitați sfera etichetelor locale și introduceți o secțiune de program fals a cărei talpă
efectul este de a defini etichete fără a genera cod.
etichetă EQU expresie
etichetă = expresie
Definiți valoarea etichetei etichetă. Etichetele definite folosind aceste directive pot fi
redefinit mai târziu în program.
[etichetă] DB expresie[,...,expresie]
Introduceți octeții de date specificați (8 biți).
[etichetă] DW expresie[,...,expresie]
Introduceți cuvintele de date specificate (16 biți). Ordinea octetilor depinde de
microprocesorul selectat.
[etichetă] DL expresie[,...,expresie]
Introduceți datele lungi specificate (32 biți). Ordinea octetilor depinde de
microprocesorul selectat.
[etichetă] DDB expresie[,...,expresie]
Introduceți octeții dubli specificati (16 biți). Ordinea octetilor este opusul
ordonarea obișnuită a octetilor pentru microprocesorul selectat.
[etichetă] ASC stringconstant
Introduceți reprezentarea ascii a șirului stringconstant . Coarda trebuie să fie
delimitate de ghilimele duble. Secvențele de evadare C \r, \n, \t, \0, \', \", și \\
sunt recunoscute.
[etichetă] DS countexpr,[valexpr]
Introduce countexpr octeți cu valoare valexpr. Valoarea implicită este zero.
[etichetă] ALINIA CHIAR
[etichetă] ALINIA ODD
Introduceți un octet nul pentru a face contorul programului par sau impar.
IF condexpr
...
ELSE
...
ENDC
Asamblare condiționată: Dacă expresie condexpr este diferit de zero, procesați liniile localizate
între IF si ELSE pseudo-mnemonice. În caz contrar, procesează liniile localizate
între ELSE si ENDC pseudo-mnemonice. Instrucțiuni de asamblare condiționată
poate fi imbricat. The ELSE o parte poate fi omisă.
etichetă MACRO
...
ENDM
Definiți un nou mnemonic etichetă echivalent cu toate instrucțiunile situate între
MACRO și ENDM pseudo-mnemonice. Invocările macrocomenzii pot specifica o listă de
operanzi separați prin virgulă. Secvențele de caractere \1, \2, ... \N în macro
definiția sunt înlocuite cu operanzii furnizați. Secvența de caractere \0 is
înlocuit cu numărul de operanzi furnizați.
EXITM
Acest pseudomnemonic poate fi folosit în interiorul unei definiții macro pentru a ieși din macro. Acest
este utilă împreună cu pseudo-mnemonicii de asamblare condiționată.
INCLUDE nume de fișier
Forțați asamblatorul să proceseze fișierul numit nume de fișier la punctul actual.
LISTA ON
LISTA OFF
Activați sau dezactivați producerea unei înregistrări (prestabilit este activat.)
CLIST ON
CLIST OFF
Activați sau dezactivați producerea unei liste pentru ramurile inactive ale a
construcție de asamblare condiționată (implicit este activată.)
ILIST ON
ILIST OFF
Activați sau dezactivați producerea unei liste pentru fișierele incluse (implicit este dezactivat.)
MLIST ON
MLIST OFF
Activați sau dezactivați producerea unei liste pentru extinderile macro (prestabilit este
oprit.)
NAM titlu
Furnizați numele titlu pentru antetul paginilor de listare.
PAGINĂ
Începeți o nouă pagină de înregistrare.
PAGINĂ coloane,rânduri
Specificați dimensiunea unei pagini de listare.
OCOLIRE număr
Sări număr linii.
FAIL mesaj
Generați un mesaj de eroare mesaj.
EXEMPLU
Iată un mic program 6502:
cpu 6502
cout = $fded ; afișa a caracter
* = $300 ; asambla at $300
cod
pstring ldy #0
.1 lda mesaj,y
beq .2
jsr cout
uri
.2 do .1
RTS
mesaj asc "Acest is il mesaj "
cod
CREDITE
Leon Bottou, septembrie 1987.
Utilizați crasm online folosind serviciile onworks.net