Чт июл 05, 2012 22:52:23
.dseg
array : .byte 80
nm : .byte 1
Чт июл 05, 2012 23:42:59
ldi XL, LOW(array) ; заргузить адрес array в Х поинтер
ldi XH, HIGH(array)
lds R16, num ; загрузить индех в R16
add XL, R16 ; вычислить адрес элемента в RAM
clr R16
adc XH, R16 ; Х = адрес
ld R16, X ; чтение элемента array в R16
st X, R16 ; запись R16 в массив
Пт июл 06, 2012 06:23:54
ldi YL, low(array) ; заргузить адрес array в Y
ldi YH, high(array)
ldd r16, Y+num ; чтение из num
std Y+num, r16 ; сохранение в num
Сб июл 07, 2012 09:36:47
Вот такой способ еще есть
Сб июл 07, 2012 17:20:15
Если поискать по форуму, то несколько раз найдётсяSer60 писал(а):
- Код:
ldi XL, LOW(array) ; заргузить адрес array в Х поинтер
ldi XH, HIGH(array)
lds R16, num ; загрузить индех в R16
add XL, R16 ; вычислить адрес элемента в RAM
clr R16
adc XH, R16 ; Х = адрес
lds XL, num ; загрузить индех в XL
clr XH ; Подготовить XH к вычислениям
subi XL, LOW( -array ) ; Вычесть минус_число это всё равно что прибавить плюс_число, младшая школа
sbci XH, HIGH( -array ) ; Х = адрес
Сб июл 07, 2012 17:21:38
Ну да. Не покатит.YS писал(а):Хм. А прокатит? По-моему, такие конструкции
ldd r16, Y+num
вычисляются препроцессором.
Сб июл 07, 2012 22:29:42
Вс июл 08, 2012 01:17:42
ILYAUL писал(а):Так по условию задачки он и есть константа.
Ср июл 11, 2012 12:51:03
sx386 писал(а):Как можно прочитать и записать 'nm' элемент массива 'array' ?
num - номер элемента
- Код:
.dseg
array : .byte 80
nm : .byte 1
Ср июл 11, 2012 22:31:04
аэтот элемент объявлен как самостоятельная метка в ОЗУ - по сему запись и /или чтение из него возможно любым доступным способом, вполоть до:
lds Rn, nm
sts nm,Rn ; где Rn любой из регистров (R0-R31)
Чт июл 12, 2012 06:44:16
Чт июл 12, 2012 10:36:06
Пт июл 13, 2012 06:17:30
Пт июл 13, 2012 06:50:37