Страница 1 из 1

Как прочитать константу из памяти?

Добавлено: Вт фев 17, 2009 16:01:36
Pooher
Есть массив:

Код: Выделить всё

MIN1N:
.db 0,254,257,260,263,266,269,272,275,278,281
Как прочитать числа до FF понятно

Код: Выделить всё

      ldi tmp, LOW(MIN1N*2)       
		mov ZL, tmp
		ldi tmp, High(MIN1N*2)
		mov ZH, tmp	
		lpm channelNumber, Z
А как быть с числами больше 255?
Можно сделать так?:

Код: Выделить всё

      ldi tmp, LOW(MIN1N*2)       
		mov ZL, tmp
		ldi tmp, High(MIN1N*2)
		mov ZH, tmp	
		lpm 
В таком случае константа загружается в Z или в R0?

Добавлено: Вт фев 17, 2009 16:30:05
ARV

Код: Выделить всё

LPM   R0, Z+
LPM   R1, Z+
//R1:R0 содержит двухбайтное число (R1 - ст.байт), указатель Z готов к загрузке следующего

Добавлено: Вт фев 17, 2009 17:21:35
Pooher
А можно так:

Код: Выделить всё

LPM   EEADRL, Z+ 
LPM   EEADRH, Z 
?

Добавлено: Вт фев 17, 2009 17:25:33
Pooher
Вот я дурень! :oops:
Мог бы и сам догадаться, что число большее 255 занимает две ячейки

Добавлено: Вт фев 17, 2009 18:15:25
ARV
Pooher писал(а):А можно так:

Код: Выделить всё

LPM   EEADRL, Z+ 
LPM   EEADRH, Z 
?
нет

Добавлено: Вт фев 17, 2009 20:07:22
Pooher
EEADRL(H) - это РОН!
Просто назвал некорректно.
Извиняюсь.
Можно использовать другие регистры, кроме r01 и r1?

Добавлено: Вт фев 17, 2009 21:45:20
smac
Pooher писал(а):EEADRL(H) - это РОН!
Просто назвал некорректно.
Извиняюсь.
Можно использовать другие регистры, кроме r01 и r1?
Можно любые, кроме r30 и r31 (в принципе эти тоже можно, но поскольку они и есть указатель Z, то за резульат операции я бы не поручился :) ).

Добавлено: Ср фев 18, 2009 09:36:45
Pooher
Всем спасибо.
В WMLABе уже проверил, всё работает.