我正在学习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)所以我如何指定要读取的数组中的索引?
由于
答案 0 :(得分:0)
我刚刚在R24和R25中添加了HIGH和LOW,现在正在工作..在模拟器中我看到从数组中读取的值:
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