Difference between revisions of "PASMO TEST"
(→DW) |
(→DS) |
||
Line 145: | Line 145: | ||
:DEFW [[#directive_dw|DW]]と同じ。 | :DEFW [[#directive_dw|DW]]と同じ。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= オペレーター概要 = | = オペレーター概要 = |
Latest revision as of 20:59, 12 December 2020
Contents
ディレクティブ
Pasmoでサポートされているディレクティブのリスト(アルファベット順)。
.ERROR
行がアクティブに使用されている場合、つまり、マクロが展開されている場合はマクロで、現在の分岐が取得されている場合はIFで、アセンブリ中にエラーを生成します。ディレクティブに続くすべてのテキストは、エラーメッセージとして使用されます。
[訳注sample:align.asm]
; (C) 2004 Julian Albo ; This code may be freely used. ;-------------------------------------------------------------------- ; Sample of macro that can be used to align the current position to ; a multiple of some number, like the align and aligndata directives ; of some oher assemblers. ;-------------------------------------------------------------------- align macro n local newpos, oldpos oldpos equ $ newpos equ (oldpos + n - 1) / n * n if newpos < oldpos .error Align out of memory endif . . .
.SHIFT
- MACRO引数をシフトします。マクロに関する章を参照してください。
[訳注sample:tmacro.asm]
. . . pushmany macro reg rept -1 if nul reg exitm endif push reg .shift endm endm . . .
.WARNING
- .ERRORと同じですが、エラーを生成する代わりに警告メッセージを出力します。
DB
- バイトを定義します。引数は、文字列リテラルまたは数値式のコンマ区切りリストです。文字列リテラルはオブジェクトコードに挿入され、数値式の結果は単一バイトとして挿入され、必要に応じて切り捨てられます。
DEFB
- DEFB DEFine Byte、DBと同じ。
[訳注sample:hellocpm.asm]
; hellocpm.asm ; (C) 2004 Julian Albo. ; This code may be freely used. ; Simple hello world for cp/m, showing the use of some ; pasmo options to adapt cp/m programs for cp/m 86 or ; ms-dos. ; Assembly with: ; - For cp/m: ; pasmo hellocpm.asm HELLOCPM.COM ; - For cp/m 86: ; pasmo --86 --cmd --equ CPM86 hellocpm.asm HELLOCPM.CMD ; - For ms-dos: ; pasmo --86 --equ MSDOS hellocpm.asm HELLOCPM.COM ; This macro allows to easily adapt the program to run ; in ms-dos or cp/m 86, using the --86 option and, in ; the case of cp/m 86, the --cmd option. ; The MSDOS is really not needed, ms-dos can handle ; call 5 use, but under dosemu this does not work, ; I still don't know why. Defining MSDOS it runs in any ; dos clone. BDOS_CALL macro if defined CPM86 db 0CDh, 0E0h ; int 0E0h, bdos call in cp/m 86 else if defined MSDOS db 088h, 0CCh ; mov ah, cl db 0CDH, 021h ; int 0CDh, ms-dos call. else call 5 ; endif ; endif endm ; BDOS_CALL . . .
DEFL
- DEFL ラベルを定義します。ラベルを前に付ける必要があります。引数は数値式である必要があり、結果はラベルに割り当てられます。使用されるラベルは、他のDEFLディレクティブで再定義できます。
[訳注sample:defb.adm]
. . . proc local n n defl 0 rept 20 ds n n defl n + 1 endm endp
DEFM
- DEFineメッセージ、DBと同じ。
DEFS
- DSと同じスペースを定義します。
DEFW
- DEFW DWと同じ。
オペレーター概要
すべての数値は、必要に応じて2の補数またはトラクティングを使用して、符号なしの16ビットとして取得されます。論理演算子は、trueの場合はFFFF hexを返し、falseの場合は0を返します。引数の0はfalseで、その他の値はtrueです。 括弧を使用して、式の一部をグループ化できます。また、許可または要求するz80命令でインダイレクションを表現するためにも使用されます。これにより、インダイレクションが許可されている場所で括弧で囲まれた式を使用すると、いくつかのエラーが発生する可能性があります。 Pasmoは、いくつかのヒューリスティックを使用して、式を正しく解釈できるようにしますが、完全にはほど遠い状態です。
括弧のみのモード[訳注:—bracketオプション]を使用すると、括弧は式をグループ化するという独自の意味を持ち、間接指定には括弧が必要であるため、あいまいさが解消されます。
短絡評価:&&および||演算子と条件式は短絡されています。これは、演算子の1つを評価する必要がない場合、エラーを生成せずに未定義のシンボルまたは0による除算を含めることができることを意味します(ただし、正しい構文が必要です)。条件式では、これは成立しない分岐に適用されます。&&演算子では、最初のオペランドがfalseの場合は2番目のオペランドに、||では最初のオペランドが真の場合、2番目のオペランドに、というように。