это так понимаю нухно только для парных регистров X,Y,Z?
т.к. в них нельзя загрузить число непосредственно через ldi?
вобще как в них загружается 16 битное число...? сам процесс интересует...
Код: Выделить всё
ldi YL, low(ADDR)
ldi YH, high(ADDR)
knyaz* писал(а):так а косвенная адресачия что это такое?
Код: Выделить всё
; прямая адресация
sts MEM, r12
; косвенная адресация
ldi XL. low(MEM)
ldi XH, high(MEM)
st X, r12
странный вы чел... что ж тут непонятного? косвенная адресация позволяет отделить код подпрограммы от привязки к конкретному адресу памяти. попробуйте сделать без косвенной адресации вывод строк (разных) по USART, например. будет у вас не программа, а монстр! а с косвенной адресацией все элементарно: пишите подпрограмму, которая выводит строку, адрес начала которой в X (или Y или Z), потом сколько угодно раз заносите в выбранную регистровую пару адрес начала строки и вызываете подпрограмму. а как красиво обращаться к массивам в ОЗУ без косвенной адресации - я даже и не могу придумать...knyaz* писал(а):чето не пойму зачем это... уже штук пять кник прочитал не как не могу понять что за сурьезнаячтука косвенная адресация и для чего она нужна...
Если не получится то посмотрите пример на стр. 6ipkin писал(а):Здравствуйте все.
пытаюсь работать с AT45DB161 (SO8) MEG-ой 64-ой
в упражнении 7.Вы можете посмотреть листинг компилятора - файл .lst - там код на АСМ будет привязан к коду на Си с комментариями.ipkin писал(а):это я видел там на Си а я на ассеблере пишу
Код: Выделить всё
ldi count,RamEnd
out SPL,countКод: Выделить всё
ldi r16, high(RAMEND)
out SPH,r16
ldi r16, low(RAMEND)
out SPL,r16Код: Выделить всё
;пауза r16 милисек для 4мГц
pause:
ldi r17,10
ldi r18,133
dec r18
brne PC-1
dec r17
brne PC-4
dec r16
brne PC-7
ret