as-z80 での関数記述

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

WRTVRM のラップ例

呼び出し先のラベルは C のヘッダに書いた名前に _ を付けたものにする

引数はスタックに積まれる
この関数では
SP+0 リターンアドレス(L)
SP+1 リターンアドレス(H)
SP+3 nAddress(L)
SP+4 nAddress(H)
SP+5 nParam
という順で格納されてコールされる

この例では返値がないが、8 ビット返値は A レジスタに 16 ビット返値は HL レジスタに入れてリターンする

;------------------------------------------------------------------------------
; WRTVRM.
; extern void msxBiosWriteVRAM( u16 nAddress, u8 nParam );
;------------------------------------------------------------------------------
_msxBiosWriteVRAM:
	ld		hl,#2	;skip return addr.
	add		hl,sp
	ld		e,(hl)
	inc		hl
	ld		d,(hl)
	inc		hl
	ld		a,(hl)
	ex		de,hl
	jp		WRTVRM

この例では WRTVRM 内の ret で呼び出し元にリターンするという書き方
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。