Ini ialah perintah crasm yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
crasm - Penghimpun silang untuk 6800/6801/6803/6502/65C02/Z80
SINOPSIS
kekejangan [-atau fail kod] [-slx] asmfile
Pasang program mikropemproses asmfile dan menghasilkan fail output fail kod dalam Intel HEX
atau format Kod Motorola S. Penyenaraian atur cara dan jadual simbol juga dihasilkan pada
keluaran standard. Versi semasa bagi kekejangan boleh memasang program untuk 6800, 6801,
6803, 6502, 65C02, and Z80 pemproses. Senarai penuh dicetak apabila anda memanggil kekejangan
tanpa hujah.
PILIHAN
-o fail kod
Nyatakan nama fail output. Tiada fail output dihasilkan tanpa ini
pilihan.
-s Lumpuhkan amaran.
-l Lumpuhkan output penyenaraian program.
-x Lumpuhkan output jadual simbol.
SISTEM
Setiap baris program pemasangan hendaklah mengikut salah satu templat berikut, di mana
kurungan mengehadkan bahagian pilihan.
[;komen]
label = ungkapan [;komen]
[label] mnemonik operan [;komen]
Komen diperkenalkan dengan koma bertitik (;) dan lanjutkan ke hujung baris. Label adalah
pengecam yang mengandungi sehingga 36 aksara abjad angka (termasuk noktah dan garis bawah).
Label tidak boleh bermula dengan digit. Format medan mnemonik dan operan bergantung
pada pemproses mikro yang dipilih. Beberapa mnemonik adalah sah untuk semua pemproses dan adalah
digunakan untuk memberi arahan kepada yang dipasang. Ini dikenali sebagai "pseudo-mnemonik".
label
Label ialah pengecam yang mewakili
- alamat mutlak,
— alamat relatif (kod bebas kedudukan),
- daftar,
- senarai daftar,
— bit tertentu pada alamat tertentu,
- atau mnemonik.
Kebanyakan label terdiri daripada paling banyak 36 aksara abjad angka, noktah (.) Atau
garis bawah (_). Label tidak boleh bermula dengan digit. Mereka tidak peka huruf besar-besaran.
Label bermula dengan noktah (.) ialah label tempatan yang skopnya sama ada terhad kepada
makro di mana ia ditakrifkan, atau kepada segmen kod yang dihadkan oleh pseudo-mnemonik
KOD or dummy.
Label "bintang" yang dipratakrifkan (*) mewakili kaunter program semasa, iaitu,
alamat tempat arahan kod pemasangan seterusnya akan dikodkan. Lain yang dipratentukan
label termasuk semua mnemonik pseudo-mnemonik, mnemonik khusus pemproses mikro dan daftar
nama.
Malang
Yang dipasang mengenali pemalar berangka yang dinyatakan dalam perpuluhan, perenambelasan, perlapanan,
binari, atau ascii.
┌───────────────────────────────────────────────── ─────────┐
│Jenis format Contoh │
├───────────────────────────────────────────────── ─────────┤
│perpuluhan DDDD 1234, 675, 12, 1, Tetapi tidak 0.12. │
├───────────────────────────────────────────────── ─────────┤
│heksadesimal $DDDD $fd12, $2AC, $0. │
│ DDDDH 03H, 2da7H, 0FC84H, Tetapi tidak FC84H. │
│ 0XDDDD 0x03, 0x2AC, 0Xfc84. │
├───────────────────────────────────────────────── ─────────┤
│oktal DDDDQ 377Q, 012412Q. │
├───────────────────────────────────────────────── ─────────┤
│perduaan %DDDD % 01110110, % 1100. │
│ DDDDB 01110110B, 1100B. │
│ 0BDDDD 0b1100 │
├───────────────────────────────────────────────── ─────────┤
│ascii 'cccc' 'A', 'AB', '"', '\ n', '\''. │
│ "cccc" "\t", "\"", "a'b". │
└───────────────────────────────────────────────── ─────────┘
Ungkapan
Seperti label, ungkapan boleh mewakili alamat mutlak (abs), alamat relatif untuk
kod bebas kedudukan (rel), daftar (reg), atau senarai daftar (senarai semula), atau
merujuk kepada bit tertentu pada alamat tertentu (bspec).
Pengendali berikut diiktiraf pada ungkapan.
┌───────────────────────────────────────────────── ──────────┐
│Syntax Hasilnya Penerangan Produk │
├───────────────────────────────────────────────── ──────────┤
│ abs{abs} bspec rujukan sedikit, cth pia{3} │
│ ADDR(abs) abs alamat dari rujukan sedikit │
│ BIT(abs) abs nombor bit daripada rujukan bit │
├───────────────────────────────────────────────── ──────────┤
│ - abs abs pelengkap dua │
│ ~ abs abs pelengkap seseorang │
├───────────────────────────────────────────────── ──────────┤
│ abs << abs abs syif kiri │
│ abs >> abs abs anjakan kanan │
├───────────────────────────────────────────────── ──────────┤
│ abs | abs abs bitwise atau │
│ abs & abs abs bitwise dan │
│ abs ^ abs abs bitwise xor │
├───────────────────────────────────────────────── ──────────┤
│ abs * abs abs pendaraban │
│ abs * abs abs pembahagian │
├───────────────────────────────────────────────── ──────────┤
│ abs + abs abs tambahan │
│ rel + abs rel tambahan │
│ abs - abs abs penolakan │
│ rel - abs rel penolakan │
│ rel - rel abs penolakan │
├───────────────────────────────────────────────── ──────────┤
│ reg - reg senarai semula julat daftar │
│ senarai semula \ reg senarai semula daftar daftar │
└───────────────────────────────────────────────── ──────────┘
Jadual menyenaraikan pengendali mengikut urutan keutamaan yang berkurangan. Kurungan boleh digunakan untuk
mengelakkan kekaburan. Amaran dijana apabila keseluruhan ungkapan dikelilingi
kurungan dan boleh dikelirukan dengan mod pengalamatan pemproses mikro.
Contoh:
(asas+$12) >> 8 & 0xff00
'A'-80H
(asas+0x12)
Contoh terakhir menyebabkan amaran kerana kurungan tidak diperlukan dan mungkin
cadangkan mod pengalamatan mikropemproses.
Semua ungkapan aritmetik dinilai pada 32 bit. Operasi aritmetik melimpah
secara senyap. Nilai aritmetik kemudiannya dipotong kepada saiz yang tersirat oleh mikro-
mnemonik pemproses. Pemangkasan ini mungkin menyebabkan mesej amaran.
Contoh: semua arahan berikut
(6502) lda $ 1234
(6800) ldaa $1234,x
(Z80) ld (ix+0C2H),b
menimbulkan amaran
>>> AMARAN : Operan limpahan
Walau bagaimanapun ungkapan
$1123454 * 1298992
melimpah senyap.
Pseudo-mnemonik
Pseudo-mnemonik berikut sentiasa diiktiraf.
CPU cpuname
Menunjukkan jenis pemproses mikro yang dipilih. Ini mesti muncul sebelum anu mikro-
arahan khusus pemproses. Nilai yang mungkin bagi cpuname disenaraikan apabila anda
sembah kekejangan tanpa hujah. Senarai semasa termasuk 6800, 6801, 6803, 6502,
65C02, and Z80
OUTPUT binformat
Menunjukkan format fail output. Hujah binformat boleh mengambil nilai SKOD
untuk menghasilkan fail output menggunakan kod S Motorola, atau HEX untuk Hex Intel
format. Lalai bergantung pada pemproses mikro yang dipilih.
KOD
Hadkan skop label tempatan dan perkenalkan bahagian program.
dummy Hadkan skop label tempatan dan perkenalkan bahagian program palsu yang satu-satunya
kesannya adalah untuk menentukan label tanpa menjana kod.
label EQU ungkapan
label = ungkapan
Tentukan nilai label label. Label yang ditakrifkan menggunakan arahan ini boleh
ditakrifkan semula kemudian dalam program.
[label] DB ungkapan[,...,ungkapan]
Masukkan bait data yang ditentukan (8 bit).
[label] DW ungkapan[,...,ungkapan]
Masukkan perkataan data yang ditentukan (16 bit). Pesanan bait bergantung pada
pemproses mikro terpilih.
[label] DL ungkapan[,...,ungkapan]
Masukkan panjang data yang ditentukan (32 bit). Pesanan bait bergantung pada
pemproses mikro terpilih.
[label] DDB ungkapan[,...,ungkapan]
Masukkan bait berganda yang ditentukan (16 bit). Susunan bait adalah bertentangan dengan
pesanan bait biasa untuk pemproses mikro yang dipilih.
[label] ASC stringconstant
Masukkan perwakilan ascii rentetan stringconstant . Rentetan mestilah
dibatasi oleh petikan berganda. Urutan pelarian C \r, \n, \t, \0, \', \", dan \\
diiktiraf.
[label] DS countexpr,[valexpr]
Sisipkan countexpr bait dengan nilai valexpr. Nilai lalai ialah sifar.
[label] ALIGN BANYAK
[label] ALIGN ODD
Masukkan bait nol untuk menjadikan pembilang program genap atau ganjil.
IF kondexpr
...
ELSE
...
TAMAT
Perhimpunan bersyarat: Jika ungkapan kondexpr bukan sifar, proses baris yang terletak
antara IF dan juga ELSE pseudo-mnemonik. Jika tidak, proses baris yang terletak
antara ELSE dan juga TAMAT pseudo-mnemonik. Arahan pemasangan bersyarat
boleh bersarang. The ELSE bahagian boleh ditinggalkan.
label MAKRO
...
ENDM
Tentukan mnemonik baharu label bersamaan dengan semua arahan yang terletak di antara
MAKRO and ENDM pseudo-mnemonik. Seruan makro boleh menentukan senarai
operan dipisahkan koma. Urutan watak \1, \2... \N dalam makro
definisi digantikan dengan operan yang dibekalkan. Urutan watak \0 is
digantikan dengan bilangan operan yang dibekalkan.
KELUAR
Mnemonik pseudo ini boleh digunakan dalam definisi makro untuk keluar dari makro. ini
berguna bersama dengan pseudo-mnemonik pemasangan bersyarat.
TERMASUK nama fail
Paksa pemasang memproses fail bernama nama fail pada titik semasa.
SENARAI ON
SENARAI OFF
Dayakan atau lumpuhkan pengeluaran penyenaraian (lalai dihidupkan.)
CLIST ON
CLIST OFF
Dayakan atau lumpuhkan pengeluaran penyenaraian untuk cawangan tidak aktif a
binaan pemasangan bersyarat (lalai dihidupkan.)
Ilist ON
Ilist OFF
Dayakan atau lumpuhkan pengeluaran penyenaraian untuk fail yang disertakan (lalai dimatikan.)
MLIS ON
MLIS OFF
Dayakan atau lumpuhkan pengeluaran penyenaraian untuk pengembangan makro (lalai ialah
padam.)
NAM tajuk
Berikan nama tajuk untuk pengepala halaman penyenaraian.
PAGE
Mulakan halaman penyenaraian baharu.
PAGE lajur,baris
Tentukan saiz halaman penyenaraian.
SKIP nombor
Langkau nombor garis.
GAGAL mesej
Hasilkan mesej ralat mesej.
CONTOH
Berikut ialah program 6502 kecil:
cpu 6502
cout = $fded ; memaparkan a watak
* = $300 ; memasang at $300
kod
pstring ldy #0
.1 lda mesej, y
beq .2
jsr cout
yang lain
.2 buat .1
rts
mesej asc "Ini is yang mesej "
kod
KREDIT
Leon Bottou, September 1987.
Gunakan crasm dalam talian menggunakan perkhidmatan onworks.net