/ / Read Array Value от SRAM AVR Assembler - масиви, монтаж, AVR

Прочетете стойността на масива от SRAM AVR Assembler - масиви, монтаж, avr

Аз IM обучение AVR асемблер и би искал да попитамкак да прочета конкретна стойност от масив? Тук е моят код, който работи много добре и тя съхранява цифров масив в SRAM ... сега как например бих могъл да чета стойност 6 от цифров масив?

.include    "m328pdef.inc"

.DSEG
digit:  .Byte 9         ; Segment Digit
.CSEG
.ORG    0x0000
rjmp    _Reset

_Reset:
ldi     yl,byte1(RAMEND)
out     SPL,yl
ldi     yh,byte2(RAMEND)
out     SPL+1,yh
sbiw    yl,32

; Digit Store To SRAM
ldi     XH, HIGH(digit)
ldi     XL, Low(digit)
ldi     R16, 0x3F           ; Digit 0
st      X+, R16
ldi     R16, 0x06           ; Digit 1
st      X+, R16
ldi     R16, 0x5B           ; Digit 2
st      X+, R16
ldi     R16, 0x4F           ; Digit 3
st      X+, R16
ldi     R16, 0x66           ; Digit 4
st      X+, R16
ldi     R16, 0x6D           ; Digit 5
st      X+, R16
ldi     R16, 0x7D           ; Digit 6
st      X+, R16
ldi     R16, 0x07           ; Digit 7
st      X+, R16
ldi     R16, 0x7F           ; Digit 8
st      X+, R16
ldi     R16, 0x6F           ; Digit 9
st      X+, R16

; Digit Read From SRAM
ldi     XH, HIGH(digit)     ; load X = address of digit array
ldi     XL, Low(digit)      ; ...high Byte also

add     XH, R24             ; add the array index
Adc     XL, R25             ; ...And add 0 To propagate the carry
ld      R26, X

rjmp _Reset

Така че в този пример в симулатор трябва да се получи за четене 6 в моя цифров масив, че трябва да ми стойност: 0x7D, ако бих искал да чета стойност 9 в масив трябва да получа 0x6F.

Аз успех пише масив за SRAM и четене е само първият индекс (0x3F), така как мога да specifiy какво индекс в масива да чета?

Благодаря

Отговори:

0 за отговор № 1

Току-що добави HIGH и LOW в R24 и R25 и сега работи .. в симулатора виждам стойност чете от масив:

ldi     XH, HIGH(digit)     ; load X = address of digit array
ldi     XL, Low(digit)      ; ...high Byte also

ldi     R24, HIGH(6)        ; Read index 6 value from digit array High Byte
ldi     R25, Low(6)         ; Read index 6 value from digit array Low Byte

add     XH, R24             ; add the array index
Adc     XL, R25             ; ...And add 0 To propagate the carry
ld      R26, X