Jump to content
oleg st

Как написать в ассемблере переход без меток?

Recommended Posts

Posted (edited)

привет, как написать переход не используя меток в ассемблере, помню, что на пиках так можно было, но нужно для аврок.

как было на пиках:

goto $+1

nop

как сделать так же для авр:

rjmp ???

Edited by oleg st

Share this post


Link to post
Share on other sites

rjmp pc + 1


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Вебинар «МЭМС-датчики ST для работы со звуком – новые возможности» (28.10.2020)

28 октября все желающие приглашаются для участия в вебинаре, посвященном семейству МЭМС-датчиков STMicroelectronics для акустических приложений. Предметом детального рассмотрения на вебинаре станут микрофоны, их топологии применения и возможности. Вы услышите о новых мультирежимных широкодиапазонных микрофонах с нижним портом и PDM-интерфейсом для систем с батарейным питанием.

Подробнее

Без меток никак. Забудьте. Размер у команд одно или два слова. Если переход длинный, то легко ошибиться. Каждую команду смотреть, сколько она слов занимает.

Пример. LDI 1 слово. STS два слова.

На ассемлере писать без меток - это выстрелить себе в ногу.

Share this post


Link to post
Share on other sites

STM32L562E-DK – первая отладочная платформа ST на ядре ARM Cortex-M33

STMicroelectronics представляет демонстрационно-отладочную платформу на базе ядра Cortex-M33 – STM32L562E-DK. Данная платформа основана на микроконтроллере нового семейства – STM32L5. STM32L562E-DK позволяет разработчику в полной мере раскрыть и опробовать новые возможности микроконтроллеров STM32L5 с тщательно проработанным функционалом для обеспечения высокого уровня безопасности и защиты.

Подробнее

Еще один вариант:

ldi r16,adr

push r16

ret

 


Я не раздаю удочки. Я продаю рыбу.

Share this post


Link to post
Share on other sites

Тест уровня кондуктивной помехи электронного устройства

Электромагнитная совместимость (ЭМС) является важным параметром электронных устройств, особенно это актуально в современном мире, насыщенном разнообразными гаджетами. Специалисты компании Mornsun подготовили видеоролик по тестированию одной из составляющих ЭМС – кондуктивной помехи.

Подробнее

2 часа назад, солар сказал:

Еще один вариант

Это не вариант, ибо ваш adr и есть метка.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

По большому счету и рс+смещ тоже метка. Ее прелесть в том, что компилятор сам ее рассчитает. (Да кто бы кому рассказывал.)


Я не раздаю удочки. Я продаю рыбу.

Share this post


Link to post
Share on other sites

Ни хрена подобного, повторяю. Длина команд разная. Хочешь выстрелить себе в ногу вперёд. Хотя бы в симуляторе накидай команды с различной длиной и намеренно ошибку. Поймёшь.

Глухое зацикливание. RJMP PC+O Это допустимо. Если ты точно знаешь длину каждой команды допустимо. Но это все таки выстрел в ногу, внёс изменения и привет.

Share this post


Link to post
Share on other sites
Posted (edited)
2 часа назад, demiurg1978 сказал:

Глухое зацикливание. RJMP PC+O Это допустимо. Если ты точно знаешь длину каждой команды допустимо. Но это все таки выстрел в ногу

Подводя черту: выстрел в ногу - допустимо. Точка. :) 

Edited by ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
Posted (edited)

Крайне редко, но всё же иногда люблю вместо метки использовать PC+-

Как правило если много переходов в одном месте и на небольшие "расстояния" нужны.

Лень эти метки выдумывать. Да и текст они засоряют изрядно.

Часть кода где это использую обрамляю комментариями соотв. или в виде макроса оформляю.

И уже в макросе комментарии.

Если лень считать смещение, то сначала компилирую с реальной меткой и уже по листингу выясняю нужное +-.

Edited by AvrAsm

Share this post


Link to post
Share on other sites
2 часа назад, ARV сказал:

Подводя черту: выстрел в ногу - допустимо. Точка. :) 

Вы что то хотели сказать. Говорите.

Share this post


Link to post
Share on other sites

Я сказал: можно применять всё, что можно применять. В том числе и относительные переходы.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
Posted (edited)

Допустимо только rjmp pc+0 либо просто rjmp pc. Всё остальное рас*****яйство. Только Метки. Лень метку написать, переходи на яву. Си. Ассемблер не терпит рас пи здяйства

Edited by demiurg1978

Share this post


Link to post
Share on other sites
13 минут назад, demiurg1978 сказал:

Только Метки

А как же быть с вычисляемыми переходами?


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Не учите плохому. Метки. Точка. Иначе пресловутый человеческий фактор. На будущее. Приводите конкретные примеры.

Share this post


Link to post
Share on other sites
13 минут назад, Геннадий сказал:

А вычисляются они не по меткам?

Вычисляемый переход потому и вычисляемый, что не по меткам.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

А может у ТС как раз и стоит задача максимально усложнить понимание и возможность вносить изменения в код.

Share this post


Link to post
Share on other sites

Для этого есть ещё более продвинутый метод - писать в машинных кодах. :D

Share this post


Link to post
Share on other sites
1 час назад, Lexter сказал:

Для этого есть ещё более продвинутый метод - писать в машинных кодах. :D

Вы не поняли: написание в машинных кодах затрудняет не разбор кода, а написание кода. Ведь ассемблер это и есть машинный код, только более просто записанный.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
Posted (edited)

Если в сразу в маш. кодах писать, то это уже будет скорее прошивка а не исходник.

А так, вроде и текст и мнемоника есть, а без 100 гр. и не разберёшься. 

 

9 часов назад, ARV сказал:

Вычисляемый переход потому и вычисляемый, что не по меткам.

А дайте пример вычисляемого перехода.

Или Вы про ijmp, icall ?

Edited by AvrAsm

Share this post


Link to post
Share on other sites
44 минуты назад, AvrAsm сказал:

Или Вы про ijmp, icall ?

Угу. В других платформах и иные есть.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Вычисляемый - это когда сидишь считаешь, сколько слов занимает каждая команда. 

Share this post


Link to post
Share on other sites

Это частный случай, а общий - это когда адрес перехода вычисляется каким-то выражением.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
57 минут назад, demiurg1978 сказал:

Вычисляемый - это когда сидишь считаешь...

Точнее будет : сидишь - вычисляешь!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...