2011-09-14 3 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 변수에 저장된 주소에 '누산기 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 
관련 문제