如何将寄存器的内容存储到内存中变量指定的地址?

时间:2011-09-14 02:09:26

标签: assembly microcontroller 68hc11

标题基本上就是它。

我有需要打开和关闭的灯。有一个按钮,指示它应该是哪个灯。因此,当按下或未按下按钮时,我修改包含该灯的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中。我想要做的是将'累加器a'的内容存储到存储在变量PoSelect中的地址中。基本上使用变量PoSelect就像一个指针。

我该怎么做?

1 个答案:

答案 0 :(得分: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