Как сохранить содержимое регистра по адресу, указанному переменной в памяти? - PullRequest
1 голос
/ 14 сентября 2011

Название в основном это.

У меня есть огни, которые мне нужно включать и выключать. Есть кнопка, которая определяет, какой свет должен быть. Поэтому, когда кнопка нажата или не нажата, я изменяю переменную, которая содержит адрес 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. По сути, используя переменную PoSelect, как указатель.

Как мне это сделать ???

1 Ответ

2 голосов
/ 14 сентября 2011

Предполагая, что это HC11, вы можете использовать индексированную адресацию , что-то вроде:

LDX         PoSelect      ; load address from PoSelect to IX register
STAA        0,X           ; store contents of A register to the address in IX
...