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

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

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

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

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

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


 
Опции темы
Непрочитано 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,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Ассемблер

$ - деньги
+2 женщины
Все ж логично
Easyrider83 вне форума  
Непрочитано 19.05.2015, 21:47  
avp94
Почётный гражданин KAZUS.RU
 
Аватар для avp94
 
Регистрация: 26.01.2007
Сообщений: 3,123
Сказал спасибо: 61
Сказали Спасибо 1,153 раз(а) в 624 сообщении(ях)
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.RU
 
Регистрация: 29.01.2005
Адрес: Воронеж
Сообщений: 1,384
Сказал спасибо: 24
Сказали Спасибо 243 раз(а) в 182 сообщении(ях)
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.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
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
Сказал спасибо: 36
Сказали Спасибо 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, время: 02:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot