С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/294: Рейтинг темы: голосов - 294, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
1

Ассемблер STM8

25.12.2012, 04:40. Показов 55911. Ответов 87
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками открываю эту тему, и сразу же имеется вопрос:
как осуществить вычитание с переносом байта(константы) из слова с помощью sub и sbc?
Дело в том что пока я гружу в аккумулятор байт, т.к. sub и sbc работают только с аккумулятором, флаг переноса теряется. В результате получаю сложение слова с инвертированным байтом. Пока выкрутился так:
Код
   ld xh,a
subw x,#$003c
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.12.2012, 04:40
Ответы с готовыми решениями:

Ассемблер STM8
Из спортивного интереса написал ассемблер для микроконтроллеров STM8. Синтаксис отличается от...

Еще один ассемблер для STM8 (ST7)
Наткнулся в инете на этот сайт. Вообще то этим кросс-ассемблером пользовался во времена i8031, но в...

Ищу людей кто может помочь протестировать ассемблер для STM8
Такое дело... в общем, бесплатный ассемблер для STM8 скоро появится в свободном виде под лицензией...

кто сделает экспорт SDCC STM8 -> IAR STM8 ?
а то труды пропадут... https://github.com/eddyem/STM8_samples

STM8 SWIM
Хочу сделать себе программатор для STM8. Да, я знаю, есть Dyscovery, но я так развлекаюсь:) ...

87
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
27.12.2012, 10:08 2
Цитата Сообщение от sosus
Дело в том что пока я гружу в аккумулятор байт, т.к. sub и sbc работают только с аккумулятором, флаг переноса теряется.
А почему именно вы так решили?
0
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
28.12.2012, 17:19 3
А почему именно вы так решили?

<Изображение удалено>

Из мануала.
Флаг смотрел в дебагере, при выполнении LD он снимается, хотя в мануале про это ничего нет.
0
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
28.12.2012, 23:40 4
[QUOTE="sosus"][QUOTE="Цитата:[/QUOTE]
А почему именно вы так решили?
LD_SUB.JPG
Из мануала.
Флаг смотрел в дебагере, при выполнении LD он снимается, хотя в мануале про это ничего нет.
В руководстве видно, что инструкция LD изменяет только флаги Z и N, флаг C не меняется. Так что вопрос остается: каким образом вы увидели изменение флага C после выполнения инструкции LD?
0
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
29.12.2012, 01:46 5
Код
   ld a,xl
sub a,#$3C
ld xl,a
ld a,xh
sbc a,#0
ld xh,a
Прошу прощения, похоже это я гдето тупил, сейчас все чотко рабтает
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
29.12.2012, 10:30 6
А как же быть с вашим постулатом, уважаемый ?
Цитата Сообщение от sosus
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками ...
У вас пальпация опережает мыслительные функции?
Дайте угадаю, предыдущие, терзаемые вами МК были исключительно AVR ?
Скачайте по этой ссылке http://www.st.com/internet/som... 161709.pdf
PM0044: STM8 CPU programming manual .
0
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
29.12.2012, 14:30 7
Код
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками ...
Если знаете ответ напишите его, мануалы уже перечитаны
PM0044
стр.61(73)
Mmimo SRLW, Dessription: Shift word right arithmetic - сдвиг оказался логическим

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

и в чем разница между JRT и JRA?
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
29.12.2012, 16:07 8
Цитата Сообщение от sosus
стр.61(73)
Mmimo SRLW, Dessription: Shift word right arithmetic - сдвиг оказался логическим
Типичная опечатка. Мнемоника указывает именно на логический сдвиг.

Цитата Сообщение от sosus
Mmimo JRF, Dessription: Nener Jump - это описание как понять можно?
Никогда не переходить. Что заглушки не имеют право на существование?

Цитата Сообщение от sosus
и в чем разница между JRT и JRA?
А где здесь ошибка? Что неужели не прыгают?
Другое дело - зачем их обе задокументировали...
0
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
29.12.2012, 17:01 9
Цитата Сообщение от sosus
Код:
В связи с тем что ассемблер этих контроллеров описан очень плохо, и с ошибками ... Если знаете ответ напишите его, мануалы уже перечитаны
PM0044
стр.61(73)
Mmimo SRLW, Dessription: Shift word right arithmetic - сдвиг оказался логическим

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

и в чем разница между JRT и JRA?
Не знаю как у вас, а у меня а руководстве черным по белому написано: Shift Right Logical Word
А что касается инструкций JRT и JRA, то разницы между ними нет. Другое дело, что обычно для этих используется мнемоника JR. И тогда никаких не возникает.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
29.12.2012, 17:50 10
Цитата Сообщение от Bytt
Не знаю как у вас, а у меня а руководстве черным по белому написано: Shift Right Logical Word
Он про сводную таблицу:


<Изображение удалено>
0
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
29.12.2012, 17:56 11
Цитата Сообщение от dosykus_2
Он про сводную таблицу:
Спасибо! Понял. Просто я в сводную таблицу не заглядывал.
0
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
30.12.2012, 01:55 12
Как и в каких случаях используется директива JRF? Эта команда для меня абсолютно новая, можете разъяснить?
0
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 51
30.12.2012, 02:17 13
Цитата Сообщение от sosus
Как и в каких случаях используется директива JRF? Эта команда для меня абсолютно новая, можете разъяснить?
Считай, что это полный аналог команды NOP.
И вот тут про нее немного есть.
0
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
30.12.2012, 04:27 14
Спасибо, похоже это самый ленивый камень. Больше я нигде не видел комбинацию:
NOP - ниче не делать, JRF - никуда не ходить :) Всех с наступающим!!!
0
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
01.01.2013, 00:37 15
Всех с праздником! После отладки пришло время оптимизации кода с целью уменьшения процессорного времени и объема, программа в основном работает с ОЗУ, но меня немного смущает постоянная загрузка/выгрузка в аккумулятор, и появилось желание избавиться от такого рода операций использовав указатель стека. Из мануала видно что операторы работают как с аккумулятором так и с указателем стека. Кто работал со стеком в качестве операнда, и какие могут быть грабли? Мне известно про него только то что содержимое стека не должно отличаться после входа в прерывание и до выхода из него. Буду благодарен если подкинете пару примеров.
0
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
01.01.2013, 02:48 16
Если содержимое стека будет отличаться, то ничего не взорвется. Оно не должно отличаться, чтобы не сбивалась последовательность выполнения программы, и возврат всегда происходил на следующую команду после вызова процедуры. Однако, история знает примеры, когда в подпрограмме специально меняется содержимое стека, чтобы по программе ret вернуться не в место вызова подпрограммы. Но если на это решиться, то следует учитывать, что это требует особой внимательности и тщательных расчетов.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
02.01.2013, 10:14 17
Цитата Сообщение от BykTiho
Однако, история знает примеры, когда в подпрограмме специально меняется содержимое стека, чтобы по программе ret вернуться не в место вызова подпрограммы. Но если на это решиться, то следует учитывать, что это требует особой внимательности и тщательных расчетов.
На Speccy постоянно так делали. Иногда просто меняли указатель стека после распаковки очередного блока кода и делали ret.
0
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 140
02.01.2013, 21:17 18
Неужели использовать указатель стека для ветвлений удобно? Возможно таким образом дизассемблирование усложняли..
0
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 569
02.01.2013, 21:35 19
Цитата Сообщение от OmykymForti
На Speccy постоянно так делали. Иногда просто меняли указатель стека после распаковки очередного блока кода и делали ret.
В нынешние времена за такое принято... канделябром, хотя решение изящное... ;)
В последний раз встречал такое для перенаправления вектора прерывания в зависимости от обстоятельств его возникновения (это было для 51, но не столь существенно).Суть в том, что адрес перехода загонялся в переменную, а её в обработчике прерывания заталкивали в стек и делали ret. Получалось очень компактно.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
04.01.2013, 19:55 20
Цитата Сообщение от Kotz
Суть в том, что адрес перехода загонялся в переменную, а её в обработчике прерывания заталкивали в стек и делали ret. Получалось очень компактно.
И из прерывания возвращались совсем не туда, откуда приходили :) Нехитрые способы обойти дизассемблер-трассировщик. А прятать было что, во времена Dimos и Gifts.
0
04.01.2013, 19:55
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2013, 19:55
Помогаю со студенческими работами здесь

IAR for STM8 V2.10
Коллеги, ни у кого не завалялась инсталляха IAR for STM8 V2.10? Можно и не крякнутый. На...

Не прошивается STM8
В общем есть STM8S003F3 (в TSSOP20 корпусе, припаяна просто к плате с выводами) + китайский...

STM8 прошивка
Подскажите новичку и сильно не пинайте. Есть плата от автомобильной головы, построена на...

stm8 bootloader
Всем привет! Нашел инфу, что STM8s можно прошить через UART посредством встроенного бутлоадера, без...

stm8 и little-endian
уже около недели в свободное время по вечерам изучаю STM8, знакомые программеры спрашивают, чем они...

ШИМ STM8
Здравствуйте! Конфигурирую шим на PC3 и PC4. Почему-то при одинаковых настройках ШИМ на PC3 есть,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru