Easyelectronics.ru

Электроника для всех
Текущее время: 16 фев 2019, 13:08

Часовой пояс: UTC + 5 часов




Начать новую тему Ответить на тему  [ Сообщений: 89 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Ассемблер STM8
СообщениеДобавлено: 26 дек 2012, 04:27 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками открываю эту тему, и сразу же имеется вопрос:
как осуществить вычитание с переносом байта(константы) из слова с помощью sub и sbc?
Дело в том что пока я гружу в аккумулятор байт, т.к. sub и sbc работают только с аккумулятором, флаг переноса теряется. В результате получаю сложение слова с инвертированным байтом. Пока выкрутился так:
Код:
   ld xh,a
   subw x,#$003c

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 28 дек 2012, 09:55 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
casus писал(а):
Дело в том что пока я гружу в аккумулятор байт, т.к. sub и sbc работают только с аккумулятором, флаг переноса теряется.
А почему именно вы так решили?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 29 дек 2012, 17:06 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Цитата:
А почему именно вы так решили?

Вложение:
LD_SUB.JPG
LD_SUB.JPG [ 26.01 Кб | Просмотров: 14863 ]

Из мануала.
Флаг смотрел в дебагере, при выполнении LD он снимается, хотя в мануале про это ничего нет.

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 29 дек 2012, 23:27 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
casus писал(а):
Цитата:
А почему именно вы так решили?

Вложение:
LD_SUB.JPG

Из мануала.
Флаг смотрел в дебагере, при выполнении LD он снимается, хотя в мануале про это ничего нет.

В руководстве видно, что инструкция LD изменяет только флаги Z и N, флаг C не меняется. Так что вопрос остается: каким образом вы увидели изменение флага C после выполнения инструкции LD?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 30 дек 2012, 01:33 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Код:
   ld a,xl
   sub a,#$3C
   ld xl,a
   ld a,xh
   sbc a,#0
   ld xh,a

Прошу прощения, похоже это я гдето тупил, сейчас все чотко рабтает

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 30 дек 2012, 10:17 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5331
А как же быть с вашим постулатом, уважаемый ?
casus писал(а):
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками ...


У вас пальпация опережает мыслительные функции?
Дайте угадаю, предыдущие, терзаемые вами МК были исключительно AVR ?
Скачайте по этой ссылке http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/PROGRAMMING_MANUAL/CD00161709.pdf
PM0044: STM8 CPU programming manual .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 30 дек 2012, 14:17 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Код:
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками ...
Если знаете ответ напишите его, мануалы уже перечитаны
PM0044
стр.61(73)
Mnemo SRLW, Description: Shift word right arithmetic - сдвиг оказался логическим

Mnemo JRF, Description: Nener Jump - это описание как понять можно?

и в чем разница между JRT и JRA?

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 30 дек 2012, 15:54 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5331
casus писал(а):

стр.61(73)
Mnemo SRLW, Description: Shift word right arithmetic - сдвиг оказался логическим

Типичная опечатка. Мнемоника указывает именно на логический сдвиг.

casus писал(а):

Mnemo JRF, Description: Nener Jump - это описание как понять можно?

Никогда не переходить. Что заглушки не имеют право на существование?

casus писал(а):

и в чем разница между JRT и JRA?


А где здесь ошибка? Что неужели не прыгают?
Другое дело - зачем их обе задокументировали...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 30 дек 2012, 16:48 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
casus писал(а):
Код:
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками ...
Если знаете ответ напишите его, мануалы уже перечитаны
PM0044
стр.61(73)
Mnemo SRLW, Description: Shift word right arithmetic - сдвиг оказался логическим

Mnemo JRF, Description: Nener Jump - это описание как понять можно?

и в чем разница между JRT и JRA?

Не знаю как у вас, а у меня а руководстве черным по белому написано: Shift Right Logical Word
А что касается инструкций JRT и JRA, то разницы между ними нет. Другое дело, что обычно для этих используется мнемоника JR. И тогда никаких не возникает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 30 дек 2012, 17:37 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5331
Bill писал(а):
Не знаю как у вас, а у меня а руководстве черным по белому написано: Shift Right Logical Word


Он про сводную таблицу:

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 30 дек 2012, 17:43 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
dosikus_2 писал(а):
Он про сводную таблицу:

Спасибо! Понял. Просто я в сводную таблицу не заглядывал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 31 дек 2012, 01:42 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Как и в каких случаях используется директива JRF? Эта команда для меня абсолютно новая, можете разъяснить?

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 31 дек 2012, 02:04 
Заглядывает иногда

Зарегистрирован: 30 окт 2012, 22:35
Сообщения: 58
casus писал(а):
Как и в каких случаях используется директива JRF? Эта команда для меня абсолютно новая, можете разъяснить?

Считай, что это полный аналог команды NOP.
И вот тут про нее немного есть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 31 дек 2012, 04:14 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Спасибо, похоже это самый ленивый камень. Больше я нигде не видел комбинацию:
NOP - ниче не делать, JRF - никуда не ходить :) Всех с наступающим!!!

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 02 янв 2013, 00:24 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Всех с праздником! После отладки пришло время оптимизации кода с целью уменьшения процессорного времени и объема, программа в основном работает с ОЗУ, но меня немного смущает постоянная загрузка/выгрузка в аккумулятор, и появилось желание избавиться от такого рода операций использовав указатель стека. Из мануала видно что операторы работают как с аккумулятором так и с указателем стека. Кто работал со стеком в качестве операнда, и какие могут быть грабли? Мне известно про него только то что содержимое стека не должно отличаться после входа в прерывание и до выхода из него. Буду благодарен если подкинете пару примеров.

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 02 янв 2013, 02:35 
Старожил
Аватара пользователя

Зарегистрирован: 17 апр 2010, 08:38
Сообщения: 4874
Откуда: Усинск, республика Коми
Если содержимое стека будет отличаться, то ничего не взорвется. Оно не должно отличаться, чтобы не сбивалась последовательность выполнения программы, и возврат всегда происходил на следующую команду после вызова процедуры. Однако, история знает примеры, когда в подпрограмме специально меняется содержимое стека, чтобы по программе ret вернуться не в место вызова подпрограммы. Но если на это решиться, то следует учитывать, что это требует особой внимательности и тщательных расчетов.

_________________
хаос это непознанный порядок


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 03 янв 2013, 10:01 
Старожил
Аватара пользователя

Зарегистрирован: 22 мар 2010, 21:38
Сообщения: 1623
Откуда: Нижний Тагил
BigLeha писал(а):
Однако, история знает примеры, когда в подпрограмме специально меняется содержимое стека, чтобы по программе ret вернуться не в место вызова подпрограммы. Но если на это решиться, то следует учитывать, что это требует особой внимательности и тщательных расчетов.

На Speccy постоянно так делали. Иногда просто меняли указатель стека после распаковки очередного блока кода и делали ret.

_________________
Электроника для модельных железных дорог. DCC и разные чудеса с ним.
XpressNet не так уж и страшно, как казалось на первый взгляд...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 03 янв 2013, 21:04 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Неужели использовать указатель стека для ветвлений удобно? Возможно таким образом дизассемблирование усложняли..

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 03 янв 2013, 21:22 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 3002
Откуда: Винница
OneginForte писал(а):
На Speccy постоянно так делали. Иногда просто меняли указатель стека после распаковки очередного блока кода и делали ret.

В нынешние времена за такое принято... канделябром, хотя решение изящное... ;)
В последний раз встречал такое для перенаправления вектора прерывания в зависимости от обстоятельств его возникновения (это было для 51, но не столь существенно).Суть в том, что адрес перехода загонялся в переменную, а её в обработчике прерывания заталкивали в стек и делали ret. Получалось очень компактно.

_________________
Китайская комплектация - европейское качество!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 05 янв 2013, 19:42 
Старожил
Аватара пользователя

Зарегистрирован: 22 мар 2010, 21:38
Сообщения: 1623
Откуда: Нижний Тагил
Katz писал(а):
Суть в том, что адрес перехода загонялся в переменную, а её в обработчике прерывания заталкивали в стек и делали ret. Получалось очень компактно.

И из прерывания возвращались совсем не туда, откуда приходили :) Нехитрые способы обойти дизассемблер-трассировщик. А прятать было что, во времена Demo's и Gift's.

_________________
Электроника для модельных железных дорог. DCC и разные чудеса с ним.
XpressNet не так уж и страшно, как казалось на первый взгляд...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 13 янв 2013, 23:13 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 3002
Откуда: Винница
В том случае как раз можно было отследить, откуда и куда. В общем-то это было прерывание от таймера, который занимался миганием и бибиканьем в устройстве телефонного назначения, в зависимости от текущего режима работы бибикало и мигало оно по-разному. Но вот в том же устройстве встретил подпрограммку подсчёта CRC, заканчивающуюся двумя кряду dec SP - и тут уже башню снесло по полной. ;)

_________________
Китайская комплектация - европейское качество!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 15 янв 2013, 16:59 
Заглядывает иногда

Зарегистрирован: 03 дек 2012, 17:12
Сообщения: 127
Всем привет!

кто-нить совмещать пробовал Си и Асм в одном файле с помощью #pragma SRC,
а то что-то не получилось ошибку выдал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 25 янв 2013, 22:08 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 323
Откуда: Новый Уренгой
Подскажите, кто-нибудь сталкивался с вычислением тригонометрических функций на ассемблере? Как это делается? Леплю навигацию для лазерной пушки против комаров, табличные значения в этом случае не годятся..

_________________
кодю на асме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 25 янв 2013, 22:45 
Старожил
Аватара пользователя

Зарегистрирован: 17 апр 2010, 08:38
Сообщения: 4874
Откуда: Усинск, республика Коми
Вот тут посмотреть надо ;)

_________________
хаос это непознанный порядок


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблер STM8
СообщениеДобавлено: 25 янв 2013, 23:11 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5331
casus писал(а):
Леплю навигацию для лазерной пушки против комаров,.


Жесть. Взял на заметку...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 89 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Eddy_Em, sed_alex


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB