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

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

Добавлено: Пн окт 12, 2009 21:32:59
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. логично поставить вопрос так, "как перебирать ячейки памяти в цикле, без прибегания к прямой адресации"

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

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

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

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

Добавлено: Пн окт 12, 2009 22:09:29
mistic
ARV писал(а): смотрите в сторону LD temp, X+

Спасибо. а не могли бы вы подсказать синтаксис?

Добавлено: Пн окт 12, 2009 22:13:28
Pooher
Что Вы имеете в виду под словом "Синтаксис"?
Загружаем в XL:XH адрес ячейки, LD tmp, X+ - Загрузить в tmp содержимое ячейки с адресом X , а затем инкрементировать X.

Добавлено: Пн окт 12, 2009 22:46:04
mistic
Мне непонятно, как можно получить прямой адрес ячейки, заданной косвенно...

Добавлено: Вт окт 13, 2009 00:14:31
mistic
Наконец-то разобрался. Всем спасибо, вопрос снят.

Добавлено: Вт окт 13, 2009 07:41:31
SII
Ну и про терминологию. Выражение "компилятор ассемблера" использовать не принято, говорят либо "транслятор ассемблера", либо просто "ассемблер", ну а сам процесс преобразования программы из языка ассемблера в машинный код -- либо трансляцией, либо ассемблированием. Термин "компилятор" используется применительно к языкам высокого уровня.