Аз 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