Difference between revisions of "ASSEMBLER PASMO JP"

From Z80 Machines Wiki
Jump to: navigation, search
(IRP)
(LOCAL)
Line 206: Line 206:
  
 
===LOCAL===
 
===LOCAL===
 +
現在のブロックに対してローカルとして識別子をマークします。ブロックは、MACRO、REPT、IRP、またはPROCディレクティブである場合があり、ローカルambitは対応するENDMまたはENDPディレクティブで終了します。アンビットは、ブロックの先頭ではなく、LOCALディレクティブで始まります。注意してください。 同じ識別子の複数のローカル宣言が同じブロックで使用されている場合、最初の宣言のみが有効で、他の宣言は無視されます。
 +
 
===MACRO===
 
===MACRO===
 
===ORG===
 
===ORG===

Revision as of 06:27, 28 February 2020

Pasmo documentation. (C) 2004-2005 Julián Albo.

Use and distribution allowed under the terms of the GPL license.

Last revision date: 19-apr-2005

Current Pasmo version: 0.5.2

Index.

Introduction.

Pasmoは、マルチプラットフォームのZ80クロスアセンブラーであり、コンパイルと使用が簡単です。多くのZ80マシンとエミュレーターに適したいくつかの形式でオブジェクトコードを生成できます。 Pasmoは固定位置コードを生成します。リンカーで使用する再配置可能なオブジェクトファイルの作成には使用できません。 Pasmoは、いくつかのスタイルの数値および文字列リテラルをサポートし、最も使用されているディレクティブのいくつかの名前を提供することにより、いくつかの古いアセンブラで使用されている構文と互換性があります。 ただし、Pasmoでは、Z80ニーモニック、レジスタおよびフラグの名前とディレクティブは予約語であるため、一部のプログラムで競合するシンボル名の変更が必要になる場合があります。 Pasmoは、z80アセンブリコードに相当する8086を生成することもできます。バイナリ生成モードを使用してms-dosのCOMファイル、または--cmd生成モードを使用してCP / M 86のCMDファイルを作成できます。この機能は実験的なものであり、注意して使用してください。

Installation.

http://www.arrakis.es/~ninsesabe/pasmo/からPasmoをダウンロードします。 いくつかのバイナリ実行可能ファイルがWebで提供されます。プラットフォームがこれらの間にない場合、または最新バージョンが必要な場合は、ソースパッケージをダウンロードしてコンパイルする必要があります。 Windowsでコンパイルする場合は、提供されるMakefileでcygwinまたはmingwを使用できます。他のコンパイラでは、プロジェクト、ワークスペース、またはコンパイラやIDEが使用するものを作成する必要があります。 コンパイルするには、c ++言語(通常はg ++-somethingと呼ばれるパッケージ)を含むgccバージョン2.95以降が必要です。 他のコンパイラも使用できます。C++コンパイラは、修正がほとんどないかまったくない状態でコンパイルする必要があります。 バージョン0.5.2から、configureスクリプトが提供されます。通常の './configureを使用できます。作る; 「インストールする」手順。 また、テスト版および不安定版リリース用の公式Debianパッケージもあります。

Command line use.

Pasmoは、コマンドラインから次のように呼び出されます。 pasmo [オプション] file.asm file.bin [file.symbol [file.publics]] file.asmはソースファイル、file.binは作成されるオブジェクトファイル、file.symbolはオプションでシンボルテーブルが書き込まれるファイル、file.publicsはパブリックシンボルテーブルのファイルです。両方のシンボルファイル名は、生成しない場合は空の文字列にするか、標準出力に書き込むことができます。 --publicオプションを使用すると、これは別の方法で処理されます。以下を参照してください。 オプションは、次のゼロまたはそれ以上です。

Code generation modes.

Default mode.

d アセンブリの2回目のパスでデバッグ情報を表示します。 -1(数字の「1」) アセンブリの両方のパス中にデバッグ情報を表示します。 -8 --w8080と同じ -v 詳細モード。ファイルの読み込み、アセンブリの進行状況などに関する進行情報を表示します。 -I(大文字のi) INCLUDEおよびINCBINでファイルを検索するためのリストにディレクトリを追加します。 -B --bracketと同じ -E --equと同じ --86 Z80の代わりに8086コードを生成します。この機能は実験的です。


置き場 ヘッダーのない生のバイナリ形式でオブジェクトファイルを生成します。 --hex Intel HEX形式のオブジェクトファイルを生成します。 --prl CP / M PRL形式のオブジェクトファイルを生成します。 --cmd CP / M 86 CMD形式のオブジェクトファイルを生成します。 -タップ .tap形式のオブジェクトファイルを生成します。 --tzx オブジェクトファイルを.tzx形式で生成します。 --cdt .cdt形式のオブジェクトファイルを生成します。 -タプバス --tapと同じですが、コードの前にBasicローダーを追加します。 --tzxbas --txzと同じですが、コードの前に基本ローダーを追加します。


cdtbas --cdtと同じですが、コードの前に基本ローダーを追加します。 --plus3dos PLUS3DOS形式のオブジェクトファイルを生成します。 --amsdos Amsdos形式のオブジェクトファイルを生成します。 --msx MSX形式のオブジェクトファイルを生成します。 - 公衆 file.symbol名を使用して、パブリックシンボルテーブルのみが生成されます。このオプションを使用する場合、file.symbolは指定しないでください。 - 名前 ヘッダーを使用する形式でヘッダーに入れる名前。指定しない場合、オブジェクトファイル名が使用されます。 -エラー エラー出力ではなく標準出力にエラーメッセージを送信します(オプションのエラーを除く)。

なし 識別子の大文字と小文字を区別しません。 - 地方 自動ローカルモードを使用します。このモードでは、「_」で始まるラベルはすべてローカルです。詳細については、ラベルに関する章を参照してください。 - ブラケット ブラケットのみのモードを使用します。このモードでは、括弧は式でのみ有効です。インダイレクションには括弧を使用する必要があります。

--equ シンボルを事前定義します。事前定義されたシンボルは、EQUで定義されたものと同様の方法で処理されます。 black.asmのサンプルファイルには、いくつかの可能な用途が例示されています。構文は次のとおりです。 '--equ label = value' labelは有効なラベル名で、pasmo構文で有効な形式の数値定数でなければなりません。 part = valueはオプションです。指定しない場合、割り当てられる値はFFFF 16進数です。 --w8080 8080に相当するものがないZ80命令が使用されたときに警告を表示します。 Z80アセンブラー構文を使用して、8080プロセッサー用のプログラムを簡単に作成できます。

コード生成のオプションが指定されていない場合、デフォルトで--binが使用されます。 -dオプションはpasmo自体をデバッグすることを目的としていますが、asmコードでエラーを見つけるのにも役立ちます。使用すると、情報は標準出力に表示されます。 --errオプションを使用しない限り、エラーメッセージはエラーouptutに送られます。

--bin mode.

--binモードは、ヘッダーなしで使用される最初の位置から生成されたコードをダンプするだけです。このモードは、コードの先頭でORG 100Hディレクティブを使用することを想定したCP / MまたはMSX COMファイルの直接生成、または他のプログラムでINCBINされるコードブロックの生成に使用できます。

--hex mode.

--hexモードは、Intel HEX形式のコードを生成します。この形式は、LOADまたはHEXCOM CP / Mユーティリティで使用でき、バイナリ形式よりも簡単に送信でき、一部のPROMプログラミングツールでも使用できます。

--prl mode.

prl形式は、Digital Research CP / Mオペレーティングシステムのいくつかのバリアントで使用されます。 pasmoでは、CP / M Plusで使用するRSXファイルの作成のみがサポートされています。MP/ Mシステムは、実際にテストされているかエミュレートされていないため、MP / MでのPRLファイルの使用はサポートされていません。

--cmd mode.

--cmdオプションは、CP / M 86の8080メモリモデルを使用してCP / M 86 CMDモードを生成します。--86オプションと組み合わせて使用​​すると、最小限のCP / M 80ソースからCP / M 86実行可能ファイルを簡単に生成できます。変更。

--tap mode.

--tapオプションは、コードブロックを含むタップファイルを生成します。ロード位置はコードの先頭に設定されているため、LOAD "" CODE命令でBasicからロードできます。

--tzx mode.

--tapと同じですが、tapの代わりにtzx形式を使用します。

--cdt mode.

--cdtオプションは、コードブロックを含むcdtファイルを生成します。ロード位置はコードの先頭に設定され、開始アドレスはソースで指定された開始点(存在する場合)であるため、RUN ""を使用して実行できますそれまたはLOAD ""をロードします。

--tapbas mode.

--tapbasオプションを使用すると、基本ローダーとオブジェクトコードを含むコードブロックの2つの部分でタップファイルが生成されます。基本ローダーは、コードの初期アドレスの前にCLEARを実行し、コードをロードして、エントリポイントが定義されている場合に実行します(ENDディレクティブを参照)。そうすれば、エミュレータでコードを直接起動したり、実際のSpectrumで使用するためにテープに転送したりできます。

--tzxbas mode.

--tzxbasモード --tapbasと同じですが、tapではなくtzx形式を使用します。

--cdtbas mode.

--tapbasと同じですが、tapの代わりにcdt形式を使用し、Spectrum Basicの代わりにLocomotive Basicローダーを使用します。

--plus3dos mode.

Spectrum +3ディスクで使用されるplus3dos形式のオブジェクトファイルを生成します。このファイルは、LOAD "filename" CODE命令を使用してBasicからロードできます。

--amsdos mode.

ディスクファイル上のAmstrad CPCが使用するAmsdosヘッダーを含むオブジェクトファイルを生成します。生成されたファイルは、ソースでエントリポイントが指定されている場合、LOAD "filename"、addressでBasicからロードするか、RUN "filename"で実行できます(ENDディレクティブを参照)。

--msx mode.

MSX BasicのBLOADで使用するヘッダー付きのオブジェクトファイルを生成します。

Symbol table.

生成されるシンボルテーブルには、プログラムで使用されるすべての識別子が含まれます。ローカルは、-publicオプションを使用しない限り、使用順に8桁の16進数として表されます。その場合、PUBLICディレクティブで指定されたシンボルのみがリストされます。 シンボルテーブル形式は、EQUディレクティブのリストです。そうすれば、別のソースに含めることで、複数のブロックで構成されるプログラムを作成できます。

Source code format.

Generalities.

ソースコードファイルは、使用するプラットフォームの有効なテキストファイルである必要があります。たとえば、windowsのpasmoでのUNIXテキストファイルの使用はサポートされておらず、結果は未定義です(たとえば、pasmoのビルドに使用されるコンパイラによって異なる場合があります)。垂直タブまたはフォームフィード文字を含むファイルを使用した結果も未定義です。 すべての後;行内はコメントです(もちろん、;は文字列リテラルの一部です)。複数行のコメントはありません。代わりにIF 0 .... ENDIFを使用できます(ただし、INCLUDEを参照)。 文字列リテラルは、文字セット変換なしでオブジェクトファイルに書き込まれます。その後、プラットフォームでpasmoが実行されていた異なる意味を持つ任意のキャラクターの使用は、宛先マシンを回避する必要があり、キャラクターのコードが代わりに使用される場合があります。また、非ASCII互換文字セットを使用するマシンでPasmoを使用することは困難であり、utf-8で記述されたソースは望ましくない結果をもたらす可能性があることも意味します。これは、Pasmoの将来のバージョンで変更される可能性があります。

行は10進数で始まり、その後にブランクが続く場合があります。この番号はアセンブラによって無視され、古いアセンブラとの互換性のために許可されています。エラーで報告される行番号は、これではなくファイル内の行の連続番号です。 空白は、文字列リテラルおよび語彙要素を分離する場合にのみ意味があります。任意の数のブランクは、1と同じ意味を持ちます。演算子とオペランドの間に空白を入れることはできますが、同じ文字に接頭辞として他の意味がある場合(たとえば、「$」と「%」)を除いて、必須ではありません。

Literals.

Numeric literals.

String literals.

Identifiers.

File names.

Labels.

Directives.

Pasmoでサポートされているディレクティブのリスト(アルファベット順)。

.ERROR

行がアクティブに使用されている場合、つまり、マクロが展開されている場合はマクロで、現在の分岐が取得されている場合はIFで、アセンブリ中にエラーを生成します。ディレクティブに続くすべてのテキストは、エラーメッセージとして使用されます。

.SHIFT

MACRO引数をシフトします。マクロに関する章を参照してください。

.WARNING

.ERRORと同じですが、エラーを生成する代わりに警告メッセージを出力します。 DB バイトを定義します。引数は、文字列リテラルまたは数値式のコンマ区切りリストです。文字列リテラルはオブジェクトコードに挿入され、数値式の結果は単一バイトとして挿入され、必要に応じて切り捨てられます。

DEFB

DEFB DEFine Byte、DBと同じ。

DEFL

DEFL ラベルを定義します。ラベルを前に付ける必要があります。引数は数値式である必要があり、結果はラベルに割り当てられます。使用されるラベルは、他のDEFLディレクティブで再定義できます。


DEFM

DEFineメッセージ、DBと同じ。

DEFS

DSと同じスペースを定義します。

DEFW

DEFW DWと同じ。

DS

DS スペースを定義します。 1つまたは2つのコンマ区切りの引数を取ります。最初または唯一の引数は、定義するスペースの量(バイト単位)です。 2番目は、0が使用される場合にスペースを埋めるために使用される値です。

DW

DW Wordを定義します。引数は、数値式のコンマ区切りリストです。各数値式は2バイトのワードとして評価され、結果はZ80ワード形式のコードに挿入されます。

ELSE

IF参照。

END

アセンブリを終了します。このディレクティブの後のすべての行は無視されます。引数がある場合、数値式として評価され、結果はプログラムのエントリポイントとして設定されます。エントリポイントを設定した結果は、使用するコード生成の種類によって異なりますが、この場合でもドキュメント作成に使用できます。

ENDIF

IF参照。

ENDM

マクロを終了します。マクロに関する章を参照してください。

ENDP

PROCブロックの終了をマークします。PROCを参照してください。

EQU

等しいラベルを前に付ける必要があります。引数は数値式である必要があり、結果はラベルに割り当てられます。使用されるラベルは再定義できません。

EXITM

マクロを終了します。マクロに関する章を参照してください。

IF

条件付きアセンブリ。引数は数値式である必要があります。0の結果はfalse、それ以外はtrueとみなされます。引数がtrueの場合、IFセクションの終わりまたはELSEディレクティブが検出されるまで次のコードがアセンブルされ、そうでない場合は無視されます。 ELSEディレクトリが存在する場合、引数がtrueであれば次のコードは無視され、falseであればアセンブルされます。 IFセクションは、ENDIFまたはENDMディレクティブで終了します(最後のケースでは、ENDMにも通常の効果があります)。 IFはネストできます。その場合、各ELSEおよびENDIFは対応するIFでのみ有効になりますが、ENDMは保留中のIFセクションをすべて終了します。

INCLUDE

ファイルを含めます。引数で使用される規則については、ファイル名の章を参照してください。ファイルが読み取られ、結果は、ファイルがINCLUDE行ではなく現在のファイルにコピーされた場合と同じです。 含まれるファイルには、INCLUDEディレクティブなどが含まれる場合があります。 INCLUDEディレクティブはアセンブリフェーズの前に処理されるため、IFディレクティブを使用して条件付きで異なるファイルを含めることはできません。

INCBIN

バイナリを含む。バイナリファイルを含めます。バイナリファイルを読み取り、生成されたコードの現在の位置にコンテンツを挿入します。引数で使用される規則については、ファイル名の章を参照してください。

IRP

引数を置換するコードのブロックを繰り返します。マクロに関する章を参照してください。

LOCAL

現在のブロックに対してローカルとして識別子をマークします。ブロックは、MACRO、REPT、IRP、またはPROCディレクティブである場合があり、ローカルambitは対応するENDMまたはENDPディレクティブで終了します。アンビットは、ブロックの先頭ではなく、LOCALディレクティブで始まります。注意してください。 同じ識別子の複数のローカル宣言が同じブロックで使用されている場合、最初の宣言のみが有効で、他の宣言は無視されます。

MACRO

ORG

PROC

PUBLIC

REPT

Operators.

Generalities.

Table of precedence.

List of operators.

Macros.

Generalities.

Directives.

.SHIFT

ENDM

EXITM

IRP

MACRO

REPT

About suggestions and possible improvements.

Tricks.

Bugs.

Epilogue.