Компилятор ассемблера, общий вопрос.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
mistic
Родился
Сообщения: 9
Зарегистрирован: Пт авг 07, 2009 02:13:53
Откуда: Ростов-на-Дону

Компилятор ассемблера, общий вопрос.

Сообщение mistic »

Решил освоить AWR, и, как следствие, разобраться с ассемблером
Пытаюсь написать прошивку для AWR, простые часы.
В "обучалке" есть подробное описание.
Но вот есть в коде такой момент:

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

              lds Temp1,Digit+1    ;и .т.д
              ldi Temp,0b00001101
              out PortD,Temp
              rcall Decoder
              out PortB,Temp1
              rcall Delay1
.....

              lds Temp1,Digit+4
              ldi Temp,0b00000111
              out PortD,Temp
              rcall Decoder
              out PortB,Temp1
              rcall Delay1


так вот, у меня 6 разрядов, и програма получается громозкой.
логично использовать циклы. что касается вывода в порт D, тут понятно как цикл организовать, а вот с портом B проблема...
в строке

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

lds Temp1,Digit+4


используется хитрое Digit+4, так вот, как можно указать там ячейку, без использования прямой адресации во всей программе?
Т.е. я хочу менять это значение в цикле.

P.S. логично поставить вопрос так, "как перебирать ячейки памяти в цикле, без прибегания к прямой адресации"
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Компилятор ассемблера, общий вопрос.

Сообщение ARV »

mistic писал(а):логично поставить вопрос так, "как перебирать ячейки памяти в цикле, без прибегания к прямой адресации"
логичный ответ на логичный вопрос: используйте КОСВЕННУЮ адресацию :) смотрите в сторону LD temp, X+

P.S. Раз уж вы решили что-то осваивать, то начните с того, что же такое вы осваиваете :) AVR - но не AWR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
mistic
Родился
Сообщения: 9
Зарегистрирован: Пт авг 07, 2009 02:13:53
Откуда: Ростов-на-Дону

Re: Компилятор ассемблера, общий вопрос.

Сообщение mistic »

ARV писал(а): смотрите в сторону LD temp, X+

Спасибо. а не могли бы вы подсказать синтаксис?
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

Что Вы имеете в виду под словом "Синтаксис"?
Загружаем в XL:XH адрес ячейки, LD tmp, X+ - Загрузить в tmp содержимое ячейки с адресом X , а затем инкрементировать X.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
mistic
Родился
Сообщения: 9
Зарегистрирован: Пт авг 07, 2009 02:13:53
Откуда: Ростов-на-Дону

Сообщение mistic »

Мне непонятно, как можно получить прямой адрес ячейки, заданной косвенно...
Аватара пользователя
mistic
Родился
Сообщения: 9
Зарегистрирован: Пт авг 07, 2009 02:13:53
Откуда: Ростов-на-Дону

Сообщение mistic »

Наконец-то разобрался. Всем спасибо, вопрос снят.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

Ну и про терминологию. Выражение "компилятор ассемблера" использовать не принято, говорят либо "транслятор ассемблера", либо просто "ассемблер", ну а сам процесс преобразования программы из языка ассемблера в машинный код -- либо трансляцией, либо ассемблированием. Термин "компилятор" используется применительно к языкам высокого уровня.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»