-
Постов
26 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные oleg st
-
-
Только что, ARV сказал:
В 90-е вовсю были TASM и MASM, так что атмеловский ассемблер застрял, наверное, в 70-ых... даже интеловский ассемблер под MCS51 уже имел такие же точно макросы, как и avr-as в ту пору...
согласен, наверное уже ничего и не будет ((
0 -
плохо, что аврасм в студии застрял 90х, а этот AVR-AS в комплект WinAVR весьма неплох. на нем можно делать суперские вещи
0 -
накрутить можно как угодно
0 -
ну макросы это не панацея, но штука полезная. тоже про стековые вспомнил для авр:
pushw Z; - сохр. рег. пару в стеке (r0...r30)
popw Z; извлеч
0 -
8 часов назад, AvrAsm сказал:
Начали активно макросы применять? Или что-то другое?
Когда расширяется инструментарий, уже видишь другие подходы написания, алго да и макросы помогают. Век живи век учись ))
0 -
8 минут назад, valentinovich сказал:
Напомнил. А я в те же времена, под К1801ВМ1 (БК с телевизором) и прочий "DEC", писал - и это было (по сравнению с другими ассемблерами) СЧАСТЬЕ.
да, мы программировали, как могли =)
теплые ламповые времена...
0 -
спектрум, перфоленту пропустил )
0 -
20 минут назад, AvrAsm сказал:
Суровые челябинские пацаны до сих пор пишут в текстовом редакторе от NortonCommandera и не испытывают никакого дискомфорта!
И директивы и т.п. их полностью устраивают.
я писал под Z80, на телевизоре горизонт 202 в качестве монитора - это было сурово )))
0 -
22 минуты назад, Гар сказал:
А зачем тебе это? Букв и цифр полно. Придумывай различные слова, сочетания цифр, пиши с метками как положено и не майся дурью.
эту проблему я решил и выложил макросы, кто хочет могут пользоваться. спасибо за помощь всем, кто помогал.
1 минуту назад, AvrAsm сказал:А что атмел в ассемблере поменял что стало хуже?
Вроде как разработали в прошлом столетии так до сих пор всё одно и тоже, нет?
в самом ассемблере менять ничего не надо, нужно изменить редактор, добавить и улучшить директивы, предпроцессорные команды, функции и тп, по сути, сделать ассемблер V3
0 -
много чего можно, тут нет смысла перечислять, в 14 году послал письмо атмелу с улучшениями, так они за это 200$ прислали, но так ничего и не поменялось - стало хуже!
0 -
спасибо ))), будет думать, но походу, развитие асма застряло в 90х и тут ничего не сделаешь.
0 -
выяснил, что макросы перехода не работают вложенные в другой макрос, при условии, что переход тоже в макросе!
упрощенный пример:
.macro RJPLO brlo @0 .endm .macro TEST_JP RJPLO sss sss: nop .endm TEST_JP
Error Undefined symbol: sss
есть идеи?
0 -
1 минуту назад, demiurg1978 сказал:
Здесь мы плавно пришли к следующему. Как только начинаешь писать на макроассемблере, пора переходить на си. Ассемблер хорош тем, что напрямую управляешь мк. Здесь все зависит только от тебя. Как успех, так и ошибки. Так же ассемблер хорош низким порогом вхождения. Я взял мк, почитал книги, написал свои первые шаги. И пошло.
я перешел на си, писал выше, но на асме пишу под мелкие мк типа тини13/10, и благодаря этому переходу мой асм стал лучше
0 -
этим модулем нельзя просто так взять и передать/принять любой сигнал. нужно кодировать сигнал а-ля PWM. скачайте пдф на HCS200, делать нужно так как там написано.
если использовать чинский пульт, то нужно писать хитрый алго, который будет синхронизироваться с каждым битом и вычислять % соотношения дутицикла. потому, как при удержании кнопки и передачи сигнала, проседает питание и плывет частота в реальном времени чуть ли не в несколько раз (у меня был похожий пульт от сиги чинской).
0 -
8 часов назад, demiurg1978 сказал:
Вы как то неправильно понимаете суть макросов. Макросами пишут какие либо повторяющиеся куски кода, но которые не перенести в подпрограммы. И макросы не уменьшают, а замещают код.
Я не говорил, что он уменьшает код, он уменьшает сам текст, это позволяет лучше воспринимать программу. Обычно простые замещалки пишу редко, как правило что-то проверяю ИФами и макрос становится уже типа умным. Это и есть макроассемблер, а непросто асм.
з.ы. метки нужно ставить всегда ! ))
0 -
Разбирать портянку час, если ее можно описать 5 строками, и решить проблему за 5 мин, взять за это котлету - лучшее удовлетворение , что можно получить.
Человек капал поле всю жизнь, а ему дают трактор для работы, а он, - "не, ерунда, лучше с лопатой"
Макросы и нужны, чтоб лопатой не махать. Этот инструмент встроен в среду, и не пользоваться им неумно.
На дядю нужно быстро писать и прострации не приемлемы, а писать нужно, не то что макросами, а целыми блоками и не своими )))
0 -
так эти макросы и нужны, чтоб меньше было ошибок и не зависать на час за монитором в прострации ))
0 -
да, можно, и будет подставляться jmp
короче.. суть вы уловили ))
0 -
5 часов назад, Геннадий сказал:
Можно сделать лаконичнее, применив переход противоположного условия на пару байт дальше, а следующей командой ставите тот же RJMP.
;например, вместо breq_куда-то далеко можно сделать так... brne PC+2 rjmp куда-то далеко
ну так макрос это и делает автоматом
.macro RJEQ ; Jump == Skip !=
.if jump_calc
breq @0
.else
brne lop
rjmp @0 lop:
.endif .endm0 -
зачем писать 2 строки, когда можно одну? у меня 75% заменено макросами, по опыту скажу, что скорость написания и понимания кода возросла в разы. почти си ))
вот еще:
STSW ram_addr,reg; любые регистровые пары(WORD) от r0...r30 грузит в ОЗУ или РСН (WORD) LDSW reg,ram_addr; ОЗУ или РСН (WORD) грузит в любые регистровые пары(WORD) от r0...r30
РСН или ОЗУ тоже автоматом.
на классике:
lds r16,ram_addr lds r17,ram_addr+1
еще сравнение 16-битной константы с ОЗУ 16бит, выглядит так:
CPMIW ram_addr,2500; сравнение RJSH loop; переход по >=
мне лично так удобно, я просто устал от лапной писанины )))
0 -
с вами согласен полностью, я сам на асме пишут давно и перешел на С, как и вы, и спецом придумал кучу С-подобных макросов, не для того чтобы писать дальше на асме, а для ускорения написания и спец задач для таких МК типа тини13,10,24. Хотя, в эпоху стм даже эти тини уже не актуальны, но мы в теме авр, так что это может кому и пригодится.
Чтобы макрос не увеличивал выхлоп, лучше его использовать как инструмент автоматизации и передачи параметров.
0 -
Смысл макросов заменить и расширить стандартные условные переходы breq и т.п. Эти переходы ограничены относительными прыжками от -63 до +64, если
нужно прыгнуть дальше, то эти макросы вам помогут, при дальнем прыжке будет подставлен rjmp, пример:
.org 200 cp r16,r17 RJEQ loop1; Jump == Skip != <<-- здесь будет обычный breq loop1 cp r18,r19 RJEQ loop2; Jump == Skip != <<-- тут макрос автоматически подставит конструкцию с дальним переходом brne + rjmp .org 250 loop1: nop .org 1000 loop2: nop
названия макросов писал в стиле авр асма, но вы можете придумать свои удобные названия.
0 -
может кому пригодится ))
; -- умные условные переходы -- #define jump_calc int(abs(PC-@0)) <= int(64-((PC-@0)<0));условие вычисления прыжка -63...+64 = True .macro RJEQ ; Jump == Skip != .if jump_calc breq @0 .else brne lop rjmp @0 lop: .endif .endm .macro RJNE ; Jump != Skip == .if jump_calc brne @0 .else breq lop rjmp @0 lop: .endif .endm .macro RJHI ; Jump > Skip <= .if jump_calc breq L0 brsh @0 L0: .else brlo lop breq lop rjmp @0 lop: .endif .endm .macro RJSH ; Jump >= Skip < .if jump_calc brsh @0 .else brlo lop rjmp @0 lop: .endif .endm .macro RJLO ; Jump < Skip >= .if jump_calc brlo @0 .else brsh lop rjmp @0 lop: .endif .endm .macro RJSL ; Jump <= Skip > .if jump_calc breq @0 brlo @0 .else breq lup brsh lop lup: rjmp @0 lop: .endif .endm
0 -
а точно, спасибо!
0
Как написать в ассемблере переход без меток?
в AVR
Опубликовано
4.19 глючноватая, писал где-то список багов, которые нашел, а 7-ка тоже с глюками, но привык