「as-z80 での関数記述」の編集履歴(バックアップ)一覧はこちら
as-z80 での関数記述 - (2009/02/15 (日) 15:46:30) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
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 のラップ例
呼び出し先のラベルは 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 で呼び出し元にリターンするという書き方