|
|
  |
Макросы ассемблер AVR, ай нид хэлп |
|
|
|
Sep 1 2010, 20:46
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Конечно. Например, длинный условный переход: Код .macro rjeq brne PC+2 rjmp @0 .endm p.s. если я правильно понял суть вашего вопроса.
Сообщение отредактировал x736C - Sep 1 2010, 20:49
|
|
|
|
|
Sep 2 2010, 05:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Блин, думал об одном, написал о другом. Возможно ли каким-то образом вместо @0, @1, @2 использовать названия таблиц? Код ldi ZH,high(@0); ldi ZL,low(@0); Спасибо
Сообщение отредактировал Alt.F4 - Sep 2 2010, 05:27
|
|
|
|
|
Sep 2 2010, 11:09
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата Ваш пример почти один в один Код .MACRO SUBI16; Start macro definition subi @1,low(@0); Subtract low byte sbci @2,high(@0); Subtract high byte .ENDMACRO; End macro definition .CSEG; Start code segment SUBI16 0x1234,r16,r17; Sub.0x1234 from r17:r16 Похоже конечно, но не то.
Сообщение отредактировал Alt.F4 - Sep 2 2010, 11:10
|
|
|
|
|
Sep 2 2010, 14:55
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Попробуйте поправить так: Код .macro ldiw ldi @0L,low(@1) ldi @0H,high(@1) .endm Вызывайте так: Код ldiw Z,imm P. S. Толком так и не понял, чего конкретно вы хотите реализовать.  UPD: Ошибку скорее всего выдает потому, то неправильно передаете параметры макросу. Скорее всего регистр 8-битный. Приведите, пожалуйста, код вызова макроса. Регистр тут ни при чем, это я оговорился. Но все-таки, вызов макроса хотелось бы увидеть.
Сообщение отредактировал x736C - Sep 2 2010, 14:28
|
|
|
|
|
Sep 2 2010, 16:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Код ldi @0L,low(@1) ldi @0H,high(@1) Еее, вот так работает! Я вот только въехать не могу, почему вес программы не уменьшается. К примеру: было 3 подпрограммы по 10 строк, сейчас один макрос и 3 подпрограммы по 2 строки. А объем занимаемой памяти тот же =(( з.ы. кончились 2048Байт блин, а еще столько надо написать...
|
|
|
|
|
Sep 2 2010, 16:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Цитата Емче контроллера в этом корпусе нет? У производителя вроде как есть attiny4313 (у меня attiny2313), а так нету лучше с 20pin + UART. Буду наверное убирать функционал + еще раз пересматривать код. Правда сначала допишу до конца  ... з.ы. и почему макросы не могут заменить функции, было бы так удобно. А то можно легко запутаться с огромным количеством ссылок на подпрограммы...
Сообщение отредактировал Alt.F4 - Sep 2 2010, 17:54
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|