[前頁] [次頁] [目次]


(2)ローカル変数、引数へのアクセス

 それでは、bc レジスタのフレームポインターによりローカル変数や引数にアクセスするところをしめします.

    @ local1 へのアクセス
    ld
    add
    ld
    inc
    ld
    ld
    hl,-002
    hl,bc
    a,(hl)
    hl
    l,(hl)
    h,a
    A arg2 へのアクセス
    ld
    add
    ld
    ld
    hl,006
    hl,bc
    l,(hl)
    h,0


    B local2 の要素2へのアクセス
    ld
    add
    inc
    inc
    ld
    ld
    hl,-005
    hl,bc
    hl
    hl
    l,(hl)
    h,0

(3)関数呼び出し、戻り時の処理

 関数を呼び出す時は、右側の引数から左に向かって順にスタックにプッシュした後、目的の関数を単にサブルーチンコールするだけです.呼び出された関数からリターンしてきた後、引数をプッシュした分だけスタックを開放します.引数は、型にかかわらず2バイトの大きさでプッシュしています.

    ........................................
    ld
    push
    ld
    push
    call
    pop
    pop
    hl,(arg2)
    hl
    hl,(arg1)
    hl
    func2
    af
    af
    ........................................
    func1()
    {
       ............................
       func2(arg1,arg2);
       ............................
    }


[前頁] [次頁] [目次]