as-z80 での関数記述

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 で呼び出し元にリターンするという書き方

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年02月15日 15:46
ツールボックス

下から選んでください:

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