Насчет умножения на 2
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено BLACKEAGLE 20 мая 2003 г. 01:33
В ответ на: Ответ: LPM Rx,Z работает у меня не правильно отправлено Retex 19 мая 2003 г. 23:01

Ассемблерный Program Counter обычно имеет такой же шаг, что и память программ (Flash) - в АВР это слово, или 2 байта - следовательно, КОМАНДЫ адресуются пословно. Константы же, располагаемые в памяти программ, доступны командами LPM побайтно. Каждой метке в сегменте CODE ассемблер присваивает текущее значение Program Counter, измеряемое в словах. Для того, чтобы получить адрес байта, и необходимо ЧИСЛЕННОЕ ЗНАЧЕНИЕ метки в сегменте CODE умножить на 2.

Если это раздражает, можно завести себе байтовый сегмент после последней команды и класть туда все константы начиная с ORG (LASTCOMMAND+2)*2. Тогда умножать не придется, но проявятся различные темные стороны разных ассемблеров. Так штаа...

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru