Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Ассемблер

Непрочитано 19.05.2015, 21:32  
nikvas
Временная регистрация
 
Регистрация: 04.08.2013
Сообщений: 51
Сказал спасибо: 22
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nikvas на пути к лучшему
По умолчанию Ассемблер

Программисты, подскажите пожалуйста, что значит строчка в ассемблере
goto $+2 ;непонятно именно ( $+2) ранее в программе $ нигде не определен
Реклама:

Последний раз редактировалось nikvas; 19.05.2015 в 22:07.
nikvas вне форума  
Непрочитано 19.05.2015, 21:35  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Ассемблер

$ - деньги
+2 женщины
Все ж логично
Easyrider83 вне форума  
Непрочитано 19.05.2015, 21:47  
avp94
Почётный гражданин KAZUS.RUN
 
Аватар для avp94
 
Регистрация: 26.01.2007
Сообщений: 3,116
Сказал спасибо: 61
Сказали Спасибо 1,151 раз(а) в 623 сообщении(ях)
avp94 на пути к лучшему
По умолчанию Re: Ассемблер

Сообщение от Easyrider83 Посмотреть сообщение
$ - деньги
+2 женщины
Все ж логично
Никак нет. В данном контексте женщины должны быть -2.
avp94 вне форума  
Непрочитано 19.05.2015, 21:48  
nikvas
Временная регистрация
 
Регистрация: 04.08.2013
Сообщений: 51
Сказал спасибо: 22
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nikvas на пути к лучшему
По умолчанию Re: Ассемблер

Женщины, за деньги? Это не смешно, а по делу?
nikvas вне форума  
Непрочитано 19.05.2015, 22:07  
otest
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.01.2005
Адрес: Воронеж
Сообщений: 1,384
Сказал спасибо: 24
Сказали Спасибо 245 раз(а) в 183 сообщении(ях)
otest на пути к лучшему
По умолчанию Re: Ассемблер

По делу 2 шага вперёд. Забудь про этот "сленг" и пиши всегда goto "metka".
otest вне форума  
Сказали "Спасибо" otest
nikvas (19.05.2015)
Непрочитано 19.05.2015, 22:14  
nikvas
Временная регистрация
 
Регистрация: 04.08.2013
Сообщений: 51
Сказал спасибо: 22
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nikvas на пути к лучшему
По умолчанию Re: Ассемблер

Сообщение от otest Посмотреть сообщение
По делу 2 шага вперёд. Забудь про этот "сленг" и пиши всегда goto "metka".
Я разбираю чужую программу (учусь)
nikvas вне форума  
Непрочитано 19.05.2015, 22:15  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Ассемблер

Сообщение от nikvas Посмотреть сообщение
по делу
goto $+2 это goto текущий адрес+2. Лучше пользоваться метками, в ПИК18 $+2 это переход на следующий адрес, а не через один как ожидалось.
STM32F0 вне форума  
Сказали "Спасибо" STM32F0
nikvas (19.05.2015)
Непрочитано 19.05.2015, 22:33  
nikvas
Временная регистрация
 
Регистрация: 04.08.2013
Сообщений: 51
Сказал спасибо: 22
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nikvas на пути к лучшему
По умолчанию Re: Ассемблер

Всем спасибо!!! Все понял.
nikvas вне форума  
Непрочитано 20.05.2015, 12:24  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Ассемблер

Сообщение от nikvas Посмотреть сообщение
что значит строчка в ассемблере
goto $+2
Или jmp PC+2 в ассемблере АВР.
Чревато. Например:
breq PC+2
rjmp label1

нормально работает: если не ноль, перейти на метку.
Потом программа развивается, ассемблер вдруг пишет, что label1 слишком далеко, короткий переход не катит. Легко! вместо rjmp пишем jmp. И вляпываемся в очень неприятную ситуацию: jmp занимает 2 адреса, а не 1 как rjmp. И PC+2 прыгает на 2 слово команды jmp, где лежит кусок адреса метки. Он и выполняется.

Другой случай, когда вместо команды пишется макрос. В тексте красиво: PC+2 перепрыгивает команду. На деле - запрыгиваем на 2-ю команду макроса.

Такое очень трудно выловить. Поэтому к подобным переходам надо относиться очень осторожно.
makakus вне форума  
Непрочитано 20.05.2015, 14:59  
Vlad_Petr
Прописка
 
Аватар для Vlad_Petr
 
Регистрация: 06.03.2010
Сообщений: 2
Сказал спасибо: 35
Сказали Спасибо 27 раз(а) в 19 сообщении(ях)
Vlad_Petr на пути к лучшему
По умолчанию Re: Ассемблер

Причина внедрения метки такого вида проста. В большой программе получается много меток. Цифровые имена меток неинформативны. Текстовые (смысловые) надо выдумывать. А ежели это метка "местного значения"(та точка, куда ссылка, совсем рядом) и смысл перехода очевиден без комментария, то оказался очень удобен синтаксис вида $ +(-) сколько-то байт.
Сообщение от makakus Посмотреть сообщение
Или jmp PC+2 в ассемблере АВР.
Потом программа развивается, ассемблер вдруг пишет, что label1 слишком далеко, короткий переход не катит. Легко! вместо rjmp пишем jmp. И вляпываемся в очень неприятную ситуацию: jmp занимает 2 адреса, а не 1 как rjmp. И PC+2 прыгает на 2 слово команды jmp.......
Такое очень трудно выловить. Поэтому к подобным переходам надо относиться очень осторожно.
Я для себя брал за правило: Только для переходов короче, чем ДО ближайшей буквенной метки или какого другого ветвления. Тогда таких фокусов не возникает. Некоторые ассемблеры сами выдают ошибку если метка вида $+(-)N адресует ДАЛЬШЕ чем ближайшая "Label". Разумная предосторожность.

Последний раз редактировалось Vlad_Petr; 20.05.2015 в 15:29.
Vlad_Petr вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Algorithm Builder бесплатный графический ассемблер для AVR avr123-nm-ru Микроконтроллеры, АЦП, память и т.д 56 28.07.2014 20:19
Из Hex в ассемблер и потом в СИ 1864961 Цифровые сигнальные процессоры 12 14.02.2012 16:59
Кросс ассемблер 8080/85 joogorden Микроконтроллеры, АЦП, память и т.д 18 11.07.2011 15:59
Ассемблер PIC AnB Микроконтроллеры, АЦП, память и т.д 12 01.07.2005 03:07


Часовой пояс GMT +4, время: 14:29.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.