PASMO TEST

From Z80 Machines Wiki
Jump to: navigation, search

ディレクティブ

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番目のオペランドに、というように。