1

タイトルは基本そのままです。

オンとオフを切り替える必要があるライトがあります。どのライトにするかを指示するボタンがあります。そのため、ボタンが押されているか押されていないときに、そのライトのポート アドレスを含む変数を変更します。ライトをオンにするには、そのアドレスに $00 を格納する必要があります。例えば:

;**********************************************************
;LED1on subroutine
;
;   This will turn LED 1 on, and then return.

LED1on
        LDAA        #$00        ; Load $00 into accumulator a (the value to turn the light on)
        STAA        $PORTA      ; Store the loaded value into PORTA, PORTA is a MACRO that =$0000

        RTS                     ; Return to sender

だから私がやりたいのは、変数 PoSelect=$0000 を持つことです。そして、代わりにそれを使用してください。

;**********************************************************
;LED1on subroutine
;
;   This will turn LED 1 on, and then return.

LED1on
        LDAA        #$00        ; Load $00 into accumulator a (the value to turn the light on)
        STAA        PoSelect    ; PoSelect is a variable that contains a port address

        RTS

ただし、これは「accumulator a」の内容を変数 PoSelect に格納するだけです。私がやりたいことは、「アキュムレータ a」の内容を、変数 PoSelect に格納されているアドレスに格納することです。基本的に変数 PoSelect をポインターのように使用します。

それ、どうやったら出来るの???

4

1 に答える 1

2

これが HC11 であると仮定すると、次のようなインデックス付きアドレス指定を使用することができます。

LDX         PoSelect      ; load address from PoSelect to IX register
STAA        0,X           ; store contents of A register to the address in IX
于 2011-09-14T03:35:17.133 に答える