これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド crasm です。
プログラム:
NAME
crasm - 6800/6801/6803/6502/65C02/Z80 用クロスアセンブラ
SYNOPSIS
クラズム [-または コードファイル] [-slx] asmファイル
マイクロプロセッサプログラムをアセンブルする asmファイル そして出力ファイルを生成します コードファイル インテル HEX 内
またはモトローラ S コード形式。 プログラムリストとシンボルテーブルもこの上で作成されます。
標準出力。 現在のバージョンの クラズム のためのプログラムを組み立てることができます 6800、 6801、
6803、 6502、 65C02、 および Z80 プロセッサー。 を呼び出すと完全なリストが出力されます。 クラズム
引数なし。
OPTIONS
-o コードファイル
出力ファイルの名前を指定します。 これがないと出力ファイルは生成されません
オプションを選択します。
-s 警告を無効にします。
-l 番組リストの出力を無効にします。
-x シンボルテーブルの出力を無効にします。
構文
アセンブリ プログラムの各行は、次のテンプレートのいずれかに従う必要があります。
括弧はオプションの部分を区切ります。
[;コメント]
ラベル = 表現 [;コメント]
[ラベル] ニモニック オペランド [;コメント]
コメントはセミコロン (;) を行末まで延長します。 ラベルは
最大 36 文字の英数字 (ピリオドとアンダースコアを含む) を含む識別子。
ラベルを数字で始めることはできません。 ニーモニックとオペランドのフィールドの形式は、
選択したマイクロプロセッサ上で。 いくつかのニーモニックはすべてのプロセッサに対して有効であり、
集まった人々に指示を与えるために使用されます。 これらは「擬似ニーモニック」として知られています。
ラベル
ラベルは以下を表す識別子です
— 絶対アドレス、
— 相対アドレス (位置に依存しないコード)、
— レジスター、
— レジスタのリスト、
— 特定のアドレスの特定のビット、
— またはニーモニック。
ほとんどのラベルは、最大 36 文字の英数字、ピリオド (.)または
アンダースコア (_)。 ラベルを数字で始めることはできません。 大文字と小文字は区別されません。
ピリオド (.) は、スコープが次のいずれかに限定されるローカル ラベルです。
それらが定義されているマクロ、または擬似ニーモニックで区切られたコードセグメントに
CODE or ダミー.
事前定義された「スター」ラベル (*) は現在のプログラム カウンタを表します。つまり、
次のアセンブリ コード命令がエンコードされるアドレス。 その他の事前定義済み
ラベルには、すべての擬似ニーモニック、マイクロプロセッサ固有のニーモニック、およびレジスタが含まれます。
名前。
定数
アセンブルされたものは、XNUMX 進数、XNUMX 進数、XNUMX 進数、
バイナリまたはアスキー。
┌─────────────────── ─────┐
│タイプ フォーマット 例 │
---------------------------------------------------------------------------------------------------------------- ─────┤
│XNUMX進数 DDDD 1234, 675, 12, 1ではない 0.12。 │
---------------------------------------------------------------------------------------------------------------- ─────┤
│XNUMX進数 $DDDD $fd12, 2AC, $0。 │
│ DDDDH 03H, 2日7時間, 0FC84Hではない FC84H。 │
│ 0XDDDD 0x03, 0x2AC, 0Xfc84。 │
---------------------------------------------------------------------------------------------------------------- ─────┤
│XNUMX進数 DDDDQ 377Q, 012412Q。 │
---------------------------------------------------------------------------------------------------------------- ─────┤
│バイナリ %DDDD %01110110, %1100。 │
│ DDDDB 01110110B, 1100B。 │
│ 0BDDDD 0b1100 │
---------------------------------------------------------------------------------------------------------------- ─────┤
│アスキー 'CCCC' 'A', 「AB」, '"', '\ n', '\''。 │
│ "CCCC" "\ t", "\"", 「ああ」。 │
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ─────┘
式
ラベルと同様に、式は絶対アドレスを表すことができます (腹筋)、相対アドレス
位置に依存しないコード (REL)、レジスター (REG)、またはレジスタのリスト (登録リスト)、または
特定のアドレスの特定のビットへの参照 (ビースペック).
次の演算子は式で認識されます。
┌─────────────────── ──────┐
│構文 結果 説明 │
---------------------------------------------------------------------------------------------------------------- ──────┤
│ 腹筋{腹筋} ビースペック ビットリファレンス、例: ピア{3} │
│ アドレス(腹筋) 腹筋 ビット参照からのアドレス │
│ 少し(腹筋) 腹筋 ビット参照からのビット番号 │
---------------------------------------------------------------------------------------------------------------- ──────┤
│ - 腹筋 腹筋 XNUMXの補数 │
│ ~ 腹筋 腹筋 XNUMXの補数 │
---------------------------------------------------------------------------------------------------------------- ──────┤
│ 腹筋 << 腹筋 腹筋 左シフト │
│ 腹筋 >> 腹筋 腹筋 右シフト │
---------------------------------------------------------------------------------------------------------------- ──────┤
│ 腹筋 | 腹筋 腹筋 ビット単位または │
│ 腹筋 & 腹筋 腹筋 ビット単位と │
│ 腹筋 ^ 腹筋 腹筋 ビットごとの XOR │
---------------------------------------------------------------------------------------------------------------- ──────┤
│ 腹筋 * 腹筋 腹筋 掛け算 │
│ 腹筋 * 腹筋 腹筋 部門 │
---------------------------------------------------------------------------------------------------------------- ──────┤
│ 腹筋 + 腹筋 腹筋 追加 │
│ REL + 腹筋 REL 追加 │
│ 腹筋 - 腹筋 腹筋 引き算 │
│ REL - 腹筋 REL 引き算 │
│ REL - REL 腹筋 引き算 │
---------------------------------------------------------------------------------------------------------------- ──────┤
│ REG - REG 登録リスト レジスタ範囲 │
│ 登録リスト \ REG 登録リスト 登録リスト │
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ──────┘
この表には、演算子が優先順位の高い順にリストされています。 括弧を使用すると、
曖昧さを避けてください。 式全体が次のように囲まれると警告が生成されます。
括弧で囲まれており、マイクロプロセッサのアドレス指定モードと混同される可能性があります。
例:
(基本+$12) >> 8 & 0xff00
「A」-80H
(ベース+0x12)
最後の例では、括弧が必要ではなかったために警告が発生します。
マイクロプロセッサのアドレス指定モードを提案します。
すべての算術式は 32 ビットで評価されます。 算術演算のオーバーフロー
静かに。 その後、算術値はマイクロプロセッサによって暗示されるサイズに切り捨てられます。
プロセッサーのニーモニック。 この切り詰めにより、警告メッセージが表示される場合があります。
例: 以下のすべての命令
(6502) イーダ #$ 1234
(6800) だぁ $1234,x
(Z80) ld (ix+0C2H),b
警告を引き起こす
>>> 警告: オペランド オーバーフロー
ただし式
$1123454 * 1298992
静かに溢れ出す。
疑似記憶術
次の疑似ニーモニックは常に認識されます。
CPU CPU名
選択されたマイクロプロセッサのタイプを示します。 これはマイクロコマンドの前に表示される必要があります。
プロセッサ固有の命令。 可能な値は、 CPU名 リストされているときに
呼び出します クラズム 引数なしで。 現在のリストには以下が含まれます 6800、 6801、 6803、 6502、
65C02、 および Z80
出力 ビンフォーマット
出力ファイルの形式を示します。 口論 ビンフォーマット 値を取ることができる スコア
Motorola の S コードを使用して出力ファイルを生成する場合、または HEX Intel の Hex 用
フォーマット。 デフォルトは、選択したマイクロプロセッサによって異なります。
CODE
ローカルラベルの範囲を区切って、プログラムセクションを導入します。
ダミー ローカルレーベルの範囲を限定し、唯一の偽のプログラムセクションを導入します。
その効果は、コードを生成せずにラベルを定義することです。
ラベル 等 表現
ラベル = 表現
ラベルの値を定義する ラベル。 これらのディレクティブを使用して定義されたラベルは、
プログラムの後半で再定義されます。
[ラベル] DB 表現[、...、表現]
指定されたデータ バイト (8 ビット) を挿入します。
[ラベル] DW 表現[、...、表現]
指定されたデータワード (16 ビット) を挿入します。 バイト順序は、
選択されたマイクロプロセッサ。
[ラベル] DL 表現[、...、表現]
指定されたデータ長 (32 ビット) を挿入します。 バイト順序は、
選択されたマイクロプロセッサ。
[ラベル] DDB 表現[、...、表現]
指定された16バイト(XNUMXビット)を挿入します。 バイトオーダーはその逆です
選択されたマイクロプロセッサの通常のバイト順序。
[ラベル] ASC 文字列定数
文字列の ASCII 表現を挿入します。 文字列定数 . 文字列は次のようにする必要があります
二重引用符で区切ります。 C のエスケープ シーケンス \r, \n, \t, \0, \', \", \\
認識されています。
[ラベル] DS カウント式,[valexpr]
インセレ カウント式 値を含むバイト valexpr。 デフォルト値はゼロです。
[ラベル] アライメント EVEN
[ラベル] アライメント ODD
プログラムカウンタを偶数または奇数にするためにヌルバイトを挿入します。
IF コンデクス
...
ELSE
...
終了
条件付きアセンブリ: If 式 コンデクス ゼロ以外の場合は、見つかった行を処理します
間に IF と ELSE 疑似記憶術。 それ以外の場合は、見つかった行を処理します
間に ELSE と 終了 疑似記憶術。 条件付きアセンブリ命令
入れ子にすることができます。 の ELSE 部分は省略可能です。
ラベル MACRO
...
ENDM
新しいニーモニックを定義する ラベル の間にあるすべての命令に相当します。
MACRO および ENDM 疑似記憶術。 マクロの呼び出しでは、次のリストを指定できます。
カンマ区切りのオペランド。 文字列 \1, \2、 ... \N マクロで
定義は、指定されたオペランドに置き換えられます。 文字列 \0 is
指定されたオペランドの数に置き換えられます。
出口
この疑似ニーモニックは、マクロ定義内でマクロを終了するために使用できます。 これ
条件付きアセンブリの擬似ニーモニックと組み合わせて使用すると便利です。
インクルード ファイル名
アセンブラに指定されたファイルを強制的に処理させる ファイル名 現時点で。
LIST ON
LIST オフ
リストの作成を有効または無効にします (デフォルトはオンです)。
クリスト ON
クリスト オフ
の非アクティブなブランチのリストの作成を有効または無効にします。
条件付きアセンブリ構造 (デフォルトはオンです。)
アイリスト ON
アイリスト オフ
含まれるファイルのリストの作成を有効または無効にします (デフォルトはオフです)。
MLIST ON
MLIST オフ
マクロ展開のリストの作成を有効または無効にします (デフォルトは
オフ。)
NAM タイトル
名前を入力してください タイトル リストページのヘッダー用。
ページ
新しいリストページを開始します。
ページ コラム,行
リストページのサイズを指定します。
スキップ 数
スキップ 数 ライン。
フェイル メッセージ
エラーメッセージを生成する メッセージ.
実施例
これは小さな 6502 プログラムです。
CPU 6502
COUT = $fded ; ディスプレイ a 文字
* = $300 ; 組み立てる at $300
コード
pstring レディ #0
.1 イーダ メッセージ、y
ベク .2
jsr COUT
INY
.2 ブネ .1
RTS
メッセージ ASC "この is メッセージ "
コード
CREDITS
レオン・ボットー、1987年XNUMX月。
onworks.net サービスを使用してオンラインで crasm を使用する