2011-09-14 8 views
1

タイトルは基本的にそれです。レジスタの内容をメモリ内の変数で指定されたアドレスに格納するにはどうすればよいですか?

私は、私がオンとオフを切り替える必要があるライトがあります。どの光を当てるべきかを指示するボタンがあります。ボタンが押されたか押されていない場合、私はそのライトのPORTアドレスを含む変数を変更します。ライトをオンにするには、そのアドレスに$ 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 

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

どうすればいいですか?

答えて

2

これがHC11であると仮定すると、あなたはindexed addressingを使用する場合があります、何かのように:

LDX   PoSelect  ; load address from PoSelect to IX register 
STAA  0,X   ; store contents of A register to the address in IX 
関連する問題