и там есть такой фрагмент кода:
Код: Выделить всё
ReadArray:
ldi ZH,High(MyArray*2) ;загрузка адреса 0-го
ldi ZL,Low(MyArray*2) ;элемента в рег. пару Z
ldi Temp1,0
add ZL,Temp ;прибавление
adc ZH,Temp1 ;внутр. адреса
lpm ;загрузка из ПЗУ
mov Temp1,R0 ;копирование
out PortB,Temp1 ;вывод в порт
inc Temp ;увелич. внутр. адреса
rjmp ReadArray ;в начало циклаИ возникли следующие вопросы:
1)Так и не понял, почему адрес массива нужно умножать на два. Не мог бы кто-нибудь объяснить понятнее?
2)Команда lpm. Насколько я понял, загруженные данные из ПЗУ попадают в регистр R0. Но как узнать, какие именно данные загрузятся?
3)
Код: Выделить всё
add ZL,Temp ;прибавление
adc ZH,Temp1 ;внутр. адресаДля чего нужна команда adc, если r младшей части можно просто прибавить temp и получить нужный адрес?
Заранее спасибо!