Easyelectronics.ru • Просмотр темы - Ассемблер STM8

Easyelectronics.ru

Электроника для всех
Текущее время: 14 авг 2018, 13:29

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

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

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

_________________
vk.com/casusnur


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

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


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

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

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

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

_________________
vk.com/casusnur


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

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

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

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

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


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

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

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

_________________
vk.com/casusnur


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

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4802
А как же быть с вашим постулатом, уважаемый ?
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
Сообщения: 297
Откуда: Новый Уренгой
Код:
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками ...
Если знаете ответ напишите его, мануалы уже перечитаны
PM0044
стр.61(73)
Mnemo SRLW, Description: Shift word right arithmetic - сдвиг оказался логическим

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

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

_________________
vk.com/casusnur


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

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4802
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
Сообщения: 613
Откуда: Челябинск
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
Сообщения: 4802
Bill писал(а):
Не знаю как у вас, а у меня а руководстве черным по белому написано: Shift Right Logical Word


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

Изображение


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

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

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


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

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

_________________
vk.com/casusnur


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

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

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


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

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

_________________
vk.com/casusnur


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

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

_________________
vk.com/casusnur


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

Зарегистрирован: 17 апр 2010, 08:38
Сообщения: 4835
Откуда: Усинск, республика Коми
Если содержимое стека будет отличаться, то ничего не взорвется. Оно не должно отличаться, чтобы не сбивалась последовательность выполнения программы, и возврат всегда происходил на следующую команду после вызова процедуры. Однако, история знает примеры, когда в подпрограмме специально меняется содержимое стека, чтобы по программе 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
Сообщения: 297
Откуда: Новый Уренгой
Неужели использовать указатель стека для ветвлений удобно? Возможно таким образом дизассемблирование усложняли..

_________________
vk.com/casusnur


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

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 2709
Откуда: Винница
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
Сообщения: 2709
Откуда: Винница
В том случае как раз можно было отследить, откуда и куда. В общем-то это было прерывание от таймера, который занимался миганием и бибиканьем в устройстве телефонного назначения, в зависимости от текущего режима работы бибикало и мигало оно по-разному. Но вот в том же устройстве встретил подпрограммку подсчёта 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
Сообщения: 297
Откуда: Новый Уренгой
Подскажите, кто-нибудь сталкивался с вычислением тригонометрических функций на ассемблере? Как это делается? Леплю навигацию для лазерной пушки против комаров, табличные значения в этом случае не годятся..

_________________
vk.com/casusnur


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

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

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


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

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


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


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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