Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по ASM51, Проверка условия и LJMP. 
:(
    Опции темы
bagira
Дата 15.1.2004, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: 1
Всего: 123



Подскажите, пожалуйста, что делать в такой ситуации:

Имеется давно мною разработанная, проверенная и полгода работающая в условиях производства программа на ASM51 для 51-го микропроцессора. У разработчиков электроники появились изменения в схеме, в соответствии с которыми надо изменить и программу.
Для меня желательно внести в код изменений по минимуму.

Имеется несколько отдельных циклов, работающих почти идентично, но с небольшими отличиями. Каждый цикл - состоит из внешнего и внутреннего, вложенных один в другой. В каждом цикле (во внутреннем) идет обращение к одной и той же процедуре, скажем, W1.

И вот теперь надо добавить в каждый цикл проверку одного условия. Если условие выполняется, то продолжать обычный ход цикла, если не выполняется, то нужно отправиться на одну и ту же метку (используется LJMP, т.к. метка дальняя).

Как правильнее поступить:

1. Внести проверку условия в каждый цикл отдельно?
(т.е. число вносимых изменений=числу циклов). Тогда - не будет ли ошибкой выход по LJMP из двойного цикла?

2. Добавить проверку условия в описание самой процедуры W1 (т.е. всего один раз). В этом случае - правомерно ли делать в описании процедуры уход LJMP на метку, расположенную уже не в процедуре, а в основной программе?




--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
PILOT
Дата 15.1.2004, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



1. будет работать... и это главное... но может не так изящно...
2. не правомерно, но если освободить Pop-ом адрес возврата, очень даже ничего будет работать
если ты заходишь в процедуру, то контроллер запоминает в стеке адрес возврата и, значит если ты уходишь из процедуры (навсегда), ты должен четко отслеживать все опирации со стеком. Если стек больше не используется ничем в пределах данной процедуры (т.е. цикл сам выполняется в основном цикле программы а не в прерывании), то вполне можно просто после проверки условия и его выполнения просто очистить стек.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
bagira
Дата 15.1.2004, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: 1
Всего: 123



PILOTIK, то есть очистить стек нужно внутри самой процедуры перед выходом из нее?

А как конкретно это сделать? Просто мне ни разу не приходилось выходить из процедуры безвозвратно, не завершив ее.



--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
PILOT
Дата 15.1.2004, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Проверка условия и в случае совпадения:
Pop Acc
Pop Acc
LJmp Label

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
bagira
Дата 16.1.2004, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: 1
Всего: 123



Спасибо, PILOTIK!



--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
PILOT
Дата 16.1.2004, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Спасибо на бутерброде не булькает smile.gif

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.4800 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.