Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Я последний раз писал для MCS48 еще в 90 году. Поэтому возможно что то забыл... Или в 48-м этого не было.
Но дешифратор на биты - это какой то кошмар топологии... Вероятно поэтому про него сразу забыли впредь.
Сейчас нет времени вспомнить...
ЗЫ. Какая это нахрен битовая арифметика? Это обычная аппаратная маска с битом переноса. Такое даже сейчас есть во многих платформах, но это не значит, что можно физически адресовать каждый бит.
Реклама
KPG
Открыл глаза
Сообщения: 68
Зарегистрирован: Пн июн 19, 2017 18:51:54
Откуда: South Ural г. Челябинск

Сообщение KPG »

Sorry
Может в данном топике дискутирующим будет интересен для рассмотрения и обсуждения такой проект ассемблера для AVR. (не мой проект)
Форт-ассемблер для AVR

P.S. Корни этого ассемблера протянулись из одного инструментария Среда для программирования и внутрисхемной отладки AVR и др
@ „Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.“ Козьма Петрович Прутков
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

КРАМ
Нет, не забыли.
У АВРок также имеется битовый "рудимент", причем весьма удобный - флаг Т в SREG.
А также сопровождающие работу с оным флагом команды
BLD Rd,b (MOV Rd.b,T)
BST Rr,b (MOV T,Rr.b)
ну и
BRBC s,re
BRBS s,re
CLT
SET
BRTS re
BRTC re
BCLR s
BSET s
где s это номер бита в SREG (для Т = 6)
Да и операции с битами минимум флаг - регистра (и еще там имеются - сходу не вспомнить, ибо довольно сложно-навороченно со свойствами, зависящими от размещения в адресном пространстве ОЗУ/РСФ)
8)

Ужшш. извините, но у 51й действительно битовая адресация.
В ассемблере для описания того специально выделенные директивы имеются:
DBIT <expr> - резервирование <expr> неинициализированных бит в битовом сегменте
<simbol> BIT <expr> - определение имени прямоадресуемого бита
BSEG [AT <expr>] - определение (начала) битовой секции.
И там не маска, а именно "битовый процессор" (то надо в документации копаться, чтоб цитатки представить).
:beer:
Последний раз редактировалось BOB51 Вт мар 10, 2020 13:03:47, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="BOB51",url="/forum/viewtopic.php?p=3804694#p3804694"]включая и аппаратно - зависимые ресурсы?
МК ведь не только ядро, там и моножество подлых АППАРАТНЫХ модулей запихнуто.[/uquote]
Аппаратные модули либо отражены в общее пространство ОЗУ, либо не могут быть переменными.
То есть какой нибудь флешевый ЕЕПРОМ, если он аппаратно не расположен в адресном пространстве оперативной памяти, не может быть областью для переменных, поскольку даже специальный код в виде функции возвращающей значение регистра данных этого флеша будет давать лишь КОПИЮ этого значения в реальном ОЗУ.

Добавлено after 5 minutes 9 seconds:
[uquote="BOB51",url="/forum/viewtopic.php?p=3804713#p3804713"]КРАМ
Нет, не забыли.
У АВРок также имеется битовый "рудимент"[/uquote]
Вопрос только в том, как адресуется этот самый s... :)
Номер бита в команде не может говорить об адресуемости бита. Этот номер бита сам должен быть переменной-указателем.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Номер бита не переменная, а константа.
А вот сам бит - это может быть и переменная.
8)
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а):Вы не поверите, но АСМ имеет ровно такие же "типичные" манипуляции. Только синтаксис их немного иной. Но разве в разных ЯВУ синтаксис не отличается?
в том-то и дело, что согласно той концепции, которой придерживаюсь я, все абсолютно логично и в ассемблере, и в ЯВУ! это у в ваших рассуждениях есть логический провал, который вы не замечаете...
вот смотрите: в ЯВУ есть оператор присваивания, который присвоит одной переменной значение другой. оставим за рамками вопрос совместимости типов и т.п. неявных преобразований при этом. в ассемблере есть мнемоника MOV (допустим, только эта), которая ФОРМАЛЬНО делает то же самое, но... но только для НАТИВНЫХ данных - регистров и констант "под их размер". ни о каких "переменных" ненативных размеров (области памяти, которые вы всуе упоминаете) тут речь не идет! не перешлет команда MOV 18 байт, т.е. строку, например!

то есть ровно то, о чем я и говорю: в ассемблере нет реализации "стандартной" поддержки "переменных". тот факт, что вы можете написать АЛГОРИТМ (подпрограмму), которая выполнит эту задачу, отнюдь не делает "обычное" понятие ПЕРЕМЕННОЙ частью ЯЗЫКА ассемблера!
КРАМ писал(а):внутренняя логика моего АСМ кода ничем не противоречит сущностям Си и элементарно встраивается как часть общего кода для трансляции?
при чем тут сущности Си? а сущностям питона или Алгола с Фортраном противоречит? встраивание "сущностей" обеспечивается простым соглашением о передаче параметров, или "интерфейсом", за которым может быть что угодно. и ни о какой ПОДДЕРЖКЕ на уровне ЯЗЫКА это не говорит - это уровень поддержки "программиста".
КРАМ писал(а):Разве в MCS51 есть однобитная арифметика? Вы вообще о чем?
на уровне мнемоник ассемблера - да, есть.
КРАМ писал(а):это не значит, что можно физически адресовать каждый бит
не каждый, а только любой из выделенной под это области. разве это что-то меняет В АССЕМБЛЕРЕ? грубо говоря, битоадресуемая область ОЗУ всего 32 байта (не помню, сколько точно).
КРАМ писал(а):Этот номер бита сам должен быть переменной-указателем.
ну, это ВАМ так хочется. косвенная адресация вообще поначалу была экзотикой.
КРАМ писал(а):То есть какой нибудь флешевый ЕЕПРОМ, если он аппаратно не расположен в адресном пространстве оперативной памяти, не может быть областью для переменных, поскольку даже специальный код в виде функции возвращающей значение регистра данных этого флеша будет давать лишь КОПИЮ этого значения в реальном ОЗУ.
ну вот, опять логическая яма... команда МОV в ассемблере создает КОПИЮ данных - и что? я ведь ранее говорил - надо четко оговорить терминологию, то есть дать однозначное определение термина ПЕРЕМЕННАЯ. я даю такое: переменная - это хранилище данных. это самый высший уровень абстракции, ниже идут всякие побочные ответвления в виде "неизменяемых данных", "данных временного хранения" и "долговременно хранимых" данных, "удаленных данных" и т.п.

и свойство копируемости данных - это базовое свойство любой переменной, встроенное В ЯЗЫК ПРОГРАММИРОВАНИЯ, равно как и свойство "замещения данных" в ней (с ограничениями в виде побочных ветвей).

не называть же, в самом деле, переменными ячейки ОЗУ и регистры ядра микроконтроллера/процессора?! данные не ограничиваются по размерности только нативными для платформы величинами, а переменные обязаны уметь "вмещать" в себя (со всеми остальными свойствами) любые данные.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="BOB51",url="/forum/viewtopic.php?p=3804723#p3804723"]Номер бита не переменная, а константа.
А вот сам бит - это может быть и переменная.
8)[/uquote]
"А как дышал, как дышал...." (с)
:))) :))) :)))
Милостивый государь, бит заданный в инструкции как константа ВООБЩЕ НЕ АДРЕСУЕТСЯ.
Адресация означает наличие абсолютного адреса в пространстве оперативной памяти, который может быть задан через переменную-указатель. А фиксированный номер бита - это обычный логический вентиль управляемый из дешифратора команд... :?
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

...БУКВОЕДЫ...
:beer:
Последний раз редактировалось BOB51 Вт мар 10, 2020 13:52:45, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=3804729#p3804729"]не перешлет команда MOV 18 байт, т.е. строку, например![/uquote]
А кто Вам сказал, что признаком присвоения будет ОДНА КОМАНДА? Что за бред?
То есть если я реализую НА СИ извлечение корня и при этом использую целую функцию, то аргумент и сама функция не будут переменными? :))) :))) :)))
Вы даже не пытаетесь понять логику оппонента продолжая трясти свое дерево...
:facepalm:

Добавлено after 3 minutes 46 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3804729#p3804729"]опять логическая яма... команда МОV в ассемблере создает КОПИЮ данных - и что?[/uquote]
А ничего. Команда MOV не отрицает возможности операций с ОРИГИНАЛОМ. В случае с ЕЕПРОМом оригинал вообще не доступен для системы команд.

Добавлено after 6 minutes 6 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3804729#p3804729"]это ВАМ так хочется. косвенная адресация вообще поначалу была экзотикой.[/uquote]
По какому еще "началу"? :))) Помнится в PDP11 от приснопамятной DEC было аж 8 только основных типов адресаций, не считая специфики РОНов, которые меняли ее до неузнаваемости...
Это был 80-ый год прошлого века. :wink:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а):То есть если я реализую НА СИ извлечение корня и при этом использую целую функцию, то аргумент и сама функция не будут переменными?
КРАМ писал(а):Команда MOV не отрицает возможности операций с ОРИГИНАЛОМ. В случае с ЕЕПРОМом оригинал вообще не доступен для системы команд.
вам не кажется, что в первом высказывании вы уравниваете встроенную в язык БАЗОВУЮ операцию и СОЗДАННУЮ ПРОГРАММИСТОМ ПОДПРОГРАММУ, а во втором перечеркиваете эту эквивалентность?

базовая возможность языка потому и базовая, что не требует от программиста усилий по её использованию. и извлечение корня - это не базовая, а библиотечная возможность. базовая - это операция присваивания, например.

среди базовых возможностей ассемблера нет ничего, что могло бы быть применено к областям памяти "ненативных" размеров с той же легкостью, с которой вы используете оператор присваивания (или сравнения в том числе) в ЯВУ.
КРАМ писал(а):По какому еще "началу"?
по начальному :))) не одной PDP мир держится.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=3804757#p3804757"]вам не кажется, что в первом высказывании вы уравниваете встроенную в язык БАЗОВУЮ операцию и СОЗДАННУЮ ПРОГРАММИСТОМ ПОДПРОГРАММУ, а во втором перечеркиваете эту эквивалентность?[/uquote]
Эквивалентность ЧЕГО?
Основой понятия переменной является АДРЕСНОЕ ПРОСТРАНСТВО в котором эта переменная ОДНОЗНАЧНО определена и доступна в своем ОРИГИНАЛЬНОМ значении хоть для одной операции, хоть для десятка тысяч. Проблема с ЕЕПРОМом не в том, что код содержит более одной инструкции, а в том, что оный ЕЕПРОМ в принципе не расположен в поле определения переменных. Но можно пользоваться и копией, назвав ее подобающим образом. Правда это не будет реальный ЕЕПРОМ. И в этом вся квинт-эссенция...
Ровно как с адресацией бит, которой, как оказалось, нет и не было...

ЗЫ. Дело не в том, на чем держится мир, а в понимании тех сущностей, которые Вы рекламируете, НИЖЕ уровня их абстрагирования. Это очень важно при использовании абстракций. Иначе ветер будет дуть, потому что качаются деревья....

Добавлено after 9 minutes 55 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3804757#p3804757"]с той же легкостью, с которой вы используете оператор присваивания[/uquote]
Мы не обсуждали критерии "легкости", как и не обсуждали проблему АСМ вс Си. Это Вы пытаетесь свести все к этому демагогическому выяснению. Мы говорим о переменной, как термине и сущности в АСМе.
Поскольку это абстракция, то она может быть использована в АСМе , как и в Си.
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Сообщение dgrett »

Столько писнИ про названия. А ведь слегка продвинутому ассемблерщику до езды, переменная или нет. Хотя... электронам тоже всё равно, какого цвета изоляция на проводе. Есть дельта U,- поехали. Однакож коричневый- фаза, красный- плюс. Перепутай- работать будет, только на руку получишь фазу от желто- зелёного провода.
Я всё-всё узнAю и стану профессором.
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="dgrett",url="/forum/viewtopic.php?p=3804783#p3804783"]до езды[/uquote]
Кому "до езды", то ни разу не продвинут... :wink: :tea:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а):Мы говорим о переменной, как термине и сущности в АСМе.
переменная, как термин и сущность не существует в языке программирования, называемом ассемблр.

любая абстракция имеет область применимости. абстракция "переменная", существующая на уровне ЯВУ, при нисхождении к уровню ассемблера превращается в абсолютно не абстрактную "область памяти". ассемблеру не требуется "переменная", чтобы прекрасно существовать уже лет 60, пожалуй...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=3804789#p3804789"]переменная, как термин и сущность не существует[/uquote]
Еще раз 20 повторите эту догму. Будет примерно на 1 фемптопроцент убедительнее...
Правда товарисчи из Микрочипа ничего об этом, вероятно, не знают и потому в MPLAB X обозвали вкладку контроля за темчегонет как Variables :)))

Изображение
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

возвращаясь к упомянутой ранее книжке про ООП в ассемблере, поясню своё мнение несколько иным примером - из области ООП.

в ООП мы уходим от понятия переменной к понятию экземпляр класса, соответственно от понятия тип переменной к понятию класса. на уровне языка для манипуляций с этими абстракциями имеются соответствующие средства. но на уровне ассемблера экземпляр класса - не более чем область памяти, в начале которой есть VMT, а потом обычные данные. при работе с этой областью памяти в ассемблерном модуле мы же не оперируем понятием "экземпляр класса"!? в ассемблере нет для этого соответствующих понятий, мы обходимся тем, что в ассемблере есть: байты и мнемоники для работы с ними. даже понятие структуры в ассемблере достаточно туманно...

надеюсь, теперь моя позиция более четко прорисована? ну нет в ассемблере некоторых понятий, и что? не стоит их насильственно туда втюхивать!

Добавлено after 2 minutes 37 seconds:
КРАМ писал(а):обозвали вкладку контроля за темчегонет как Variables
мда... т.е. если на заборе написано "дрова", то за забором они обязательно лежат? аргумент, чо...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Сообщение dgrett »

Не, забор сам по себе дрова :)
Я всё-всё узнAю и стану профессором.
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=3804800#p3804800"]если на заборе написано...[/uquote]
Тут, видите ли зависит от того, кто написал на заборе, что написал и с какой целью...
Так ведь и с УК можно поспорить... :tea:
Однако, как выяснилось, я не столь уж маргинален... А если учесть практику моей профессиональной деятельности, то даже и не оригинален.

На том и закончим этот беспредметный спор, где Вы, КАК ОБЫЧНО, не желаете слушать и понимать собеседника, а тупо трандычите один раз заученное, как пономарь... :dont_know:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а):Тут, видите ли зависит от того, кто написал на заборе, что написал и с какой целью...
просто эти ваши Variables - проявление IDE, а не языка программирования. я вполне понимаю логику разработчиков IDE, которые не плодят сущности без надобности и помещают в окно что-то "близкое по смыслу". тем более что наверняка сама по себе IDE предназначена именно для отладки ЯВУ, с возможностью просмотра ассемблерных мнемоник... как это и принято в IDE. и тут все логично - смотрим на переменные из ЯВУ, а в ассемблере они всего лишь байты в ОЗУ.
КРАМ писал(а):Вы, КАК ОБЫЧНО, не желаете слушать и понимать собеседника, а тупо трандычите один раз заученное, как пономарь...
неужели вы действуете иначе? смотрите, сколько аргументов я вам привел - даже ООП! и все только для того, чтобы доказать свою ТЗ. а от вас, увы, услышал два варианта доказательств "я так считаю" и "потому что я так сказал" :)))

спор мы можем окончить... не вопрос. только уверен, что ваши ассемблерные "переменные" так и невозможно присвоить командами ассемблера (команды составляют язык, и речь о них, а не о подпрограммах-функциях), не говоря уже о том, чтобы их складывать и/или перемножать (разумеется, я не о "переменных" нативного размера). и как бы вы ни пыжились, все останется так, как было 60 лет до этого: в ассемблере только области памяти, а не переменные, и метки, обозначающие их начало.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=3804817#p3804817"]услышал два варианта доказательств "я так считаю" и "потому что я так сказал"[/uquote]
Невозможно что либо объяснить человеку, который слышит и слушает только себя. Поэтому я и завершил дебаты. Вы продолжаете говорить о чем то о своем, СОВЕРШЕННО ИЗ ДРУГОЙ ОПЕРЫ. Ну и ладненько. Это Ваш путь и Ваш выбор.

Добавлено after 6 minutes 28 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3804817#p3804817"]а в ассемблере они всего лишь байты в ОЗУ.[/uquote]
Нет, в ассемблере они имеют ровно такую же размерность и отображение, как и в Си. Сколько выделили в памяти, такая у них и размерность. Можно даже настроить (уже вручную, естественно) и специальные типы для отображения, например, fractional со стандартным и нестандартным расположением точки, а так же знаковостью.
Но это в догон. Чисто для информации. Для тех, кто ел устрицы. Из минтая. :wink:
Ответить

Вернуться в «AVR»