Форум программистов, компьютерный форум, киберфорум
Assembler: i8080/8085/KP580
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
wrfsbase
5564 / 1718 / 190
Регистрация: 14.12.2014
Сообщений: 3,245
Записей в блоге: 11
1

Ассемблеры для программирования микроконтроллеров, 8-битных микропроцессоров

17.01.2018, 17:33. Просмотров 2420. Ответов 7
Метки нет (Все метки)

В программировании микроконтроллеров и прочего, не связанного с IA-32/Intel 64 не шарю, в связи с чем вопрос: какие есть ассемблеры для программирования всего этого хозяйства?

Вот, например...
Для AVR: AVR Assembler (не совсем понимаю только как он полностью называется, кто фирма-производитель и пр), fasmg (он вообще универсальный)
Для ARM: Atmel ARM Assembler, FASMARM
Что ещё есть? i8051, PIC, MSP430, i8080, i8085, КР850...?
Какие ассемблеры для этого всего используются?

CompModel, LamPanel, Verilog, Proteus – это вообще что такое? Эмуляторы, IDE? Какие в них ассемблеры?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2018, 17:33
Ответы с готовыми решениями:

Однопроходные ассемблеры
ребята, меня озадачил такой вот вопрос одного теста. что содержат выходные объектные модули,...

Нужно название программы для программирования микропроцессоров по скрину
Нужно название программы, есть только скрин и название что-то типа UNC ...

Языки программирования для контроллеров, микроконтроллеров и пр.
Извините за нубский вопрос: а собственно на каком языке можно программировать например ПЛИС, и...

Графический язык ДРАКОН для программирования микроконтроллеров
ДРАКОН — визуальный язык, в котором используются два типа элементов: графические фигуры...

7
Модератор
Эксперт по электронике
6808 / 3353 / 1326
Регистрация: 01.02.2015
Сообщений: 10,578
Записей в блоге: 1
17.01.2018, 20:03 2
AVR: фирма Atmel (atmel.com), ныне выкуплена производителем Microchip.
Сейчас уже не смог найти на сайте, а раньше был отдельный ассемблер wavrasm, avrasm. Он входил в ранние (до 4-й) версии AVRStudio, которая была IDE для этого ассемблера. Были версии avrasm для Windows и DOS, но потом DOS забросили.
Параллельно развивался проект avr-gcc, включавший в себя компиляторы C/C++ и ассемблера (аналога gas) - наиболее известная сборка WinAVR (с 2011 не развивается отдельно). Начиная с 5-й версии AtmelStudio от самой была IDE, а компиляторы стали avr-gcc - потому что перешёл в Atmel разработчик WinAVR.
Микроконтроллеры с ядром AVR достаточно распространены. Только сегодня встречал его в коммутаторе электропитания 24V от Siemens. Слышал, что раньше некоторые приборы Овен выполнялись на AVR. Блок управления котлом "Альфа 21-й век" - тоже на AVR.
Помню, что было достаточно удобно работать в WinAVR с ассемблером.

Ещё есть микроконтроллеры семейства PIC (MicroChip). Они тоже распространены. Многие преобразователи давления (датчики) в России выполнены именно на них (Элемер АИР-20/М2 и ещё какие-то разбирал). Для них был ассемблер в IDE MPLab. Сейчас, кажется в этой IDE есть и С/С++. Ассемблер очень интересный и своеобразный, не похожий на intel. Меня от этого семейства оттолкнул более сложный по сравнению с AVR программатор и отсутствие программы-загрузчика в доступе в моём далёком провинциальном городке (я начинал делать эту программу, но переключился на AVR). Сейчас это несерьёзный аргумент - но в 2001г. всё было иначе.
PIC контроллеры в целом похожи на AVR по возможностям, но имели асинхронный счётчик/делитель, что позволяло проще реализовывать подсчёты импульсов от внешних источников.

i8051 - это один из первых, да и один из лучших до сих пор 8-разрядных микроконтроллеров. Его в разных модификациях выпускают все. Конечно, за 40-50 лет его сильно улучшили, но ядро осталось. Каждый производитель выпускает свой ассемблер, поддерживающий именно особенности собственного варианта (периферии). Есть какие-то универсальные компиляторы. Это ядро только изучал в ВУЗе и помогал в наладке производимых изделий на нашем предприятии (программу писала другая фирма). Но сам никогда не программировал. Раньше часто встречался в изделиях (разные блоки управления котлами разработки с 1990 по 2005), но сейчас уже почти не вижу, только в старых приборах или при обновлении на свежий, но такой же марки.

CompModel, LamPanel, УМПК-80 и ещё некоторые - это наследники идеологии аппаратного комплекса УМК-80. Когда-то был разработан стенд для изучения микропроцессорного комплекта КР580 (i8080). Я именно на нём и учился. Комплекс позволял вводить программы в виде кодов вручную со встроенной клавиатуры и получать отображение на многоразрядном (не помню - 4 или 8) однострочном дисплее на основе семисегментных индикаторов. Также, можно было создавать программы на ассемблере и загружать их через COM-порт. Довольно интересным свойством была возможность при помощи осциллографа изучать эпюры управляющих сигналов системы при выполнении короткой зацикленной программы - именно понимание сигналов и существующих циклов выполнения команд мне потом пригодилось на работе. Можно было выполнять программу по шагам, по тактам. Что интересно, ассемблер и компоновщик с УМК-80 в нашем ВУЗе были не для DOS, а для какой-то другой странной ОС - мы сначала запускали эмулятор ISIS (тогда это не было запрещённым словом), а потом ассемблер и компоновщик.
Но время шло, комплексы УМК-80 безвозвратно ломались. И им на смену пришёл УМПК-80 - программа, эмулирующая УМК-80. Но попутно и пришли аналогичные, не связанные с реальными прототипами и придуманными процессорами CompModel и LamPanel.

Verilog - это язык описания радиоэлектронных компонентов для дальнейшей эмуляции.

Proteus - среда эмуляции электронных схем (аналоговых и цифровых), в том числе и микропроцессорных. Т.е. для отладки взаимодействия микропроцессора с внешними устройствами. Тут как раз и нужны модели транзистором, микросхем на Verilog. Именно Verilog - могу и ошибаться, но какой-то подобный язык.
1
wrfsbase
5564 / 1718 / 190
Регистрация: 14.12.2014
Сообщений: 3,245
Записей в блоге: 11
17.01.2018, 21:00  [ТС] 3
Спасибо, интересно

Но я так и не понял, что такое по сути...
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
CompModel, LamPanel
...это эмуляторы микроконтроллеров и микропроцессоров?

И один из основных вопросов всё же не раскрыт: сами ассемблеры-то какие под это всё дело?
С AVR более или менее понятно: раньше был AVRASM, сейчас он гнутый и входит в пакет WinAVR, включающий в себя IDE, компилятор, библиотеки, отладчик (возможно, эмулятор какой-нибудь).
Я так понимаю, сейчас уже "Atmel AVR Assembler" не существует как такового? И это уже "AVR GCC" называется? Или нет?
А ещё есть альтернативы (кроме fasmg)?

И какие есть ассемблеры для i8080, i8051, PIC и пр.?
0
Модератор
Эксперт по электронике
6808 / 3353 / 1326
Регистрация: 01.02.2015
Сообщений: 10,578
Записей в блоге: 1
17.01.2018, 22:22 4
Мне трудно отвечать. В ВУЗе учили теорию о многом, но в жизни немного работал лишь с AVR - делал несколько приспособ для ремонта электроники на работе (наиболее сложная для меня - стенд на основе atmega8515 для проверки и диагностики плат с микросхемами динамической памяти типа кр565ру5). И для тренировки - портировал некоторые AppNote с IAR C на WinAVR (gcc).
Не было практики уже 5-7 лет.
Сейчас даже загрузить программу в контроллер не могу - нужно покупать программатор, а старый программатор перестал работать после перехода на Win7 и Win10.

Могу перенести тему в Микроконтроллеры. Там ответят более квалифицировано.
-----------------------------
CompModel и LamPanel - это эмуляторы изделия на основе вымышленного микропроцессора. Эмулируется не только процессор, но и какие-то средства вывода, т.е. "периферия".

AVR - только не в WinARV, а в бесплатной IDE Atmel Studio. Она больших размеров, и пока не нужна - поэтому не устанавливаю. Возможно, кроме gcc в неё входит ещё старый ассемблер от Atmel - avrasm2.exe или avrasm.exe. В старой версии AtmelStudio (4.xx) есть ассемблер и эти IDE имеют малый размер. В новой версии - нужно смотреть - gcc точно есть, но мог остаться и avrasm.

PIC - в IDE MPLab. Ну и лучше поискать у производителя.

i8080, Z80, i8085 - модели процессоров не изменяются и для них создано множество компиляторов. Слышал о кроссассемблере tasm (тёзке). Пользоваться не приходилось, но когда-то на sourceforge находил и ассемблеры и эмуляторы. Для i8080 (кр580вм80) есть эмулятор целого комплекса (УМПК-80), в который входит и ассемблер.

i8051 - это семейство, наподобие AVR или PIC. По лицензии эти контроллеры выпускали все. Но каждый производитель менял встроенную периферию, добавлял или убирал регистры. В итоге - нужно на сайте конкретного производителя брать конкретный компилятор с inc-файлами описывающими конкретную модель. Есть платный IAR - у него все описания есть. Для именно первого мк от Intel в интернете встречал бесплатные ассемблеры, C, Pascal. Но без нужды не пробовал. По вопросам на форуме было ощущение, что в каком-то ВУЗе купили учебные платы с Atmel версией AT89c51 и программировали инструментами от Atmel.
2
wrfsbase
5564 / 1718 / 190
Регистрация: 14.12.2014
Сообщений: 3,245
Записей в блоге: 11
18.01.2018, 01:10  [ТС] 5
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
CompModel и LamPanel - это эмуляторы изделия на основе вымышленного микропроцессора.
А какой смысл эмулировать вымышленный микропроцессор?

Добавлено через 4 минуты
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
AVR - только не в WinARV, а в бесплатной IDE Atmel Studio.
А разве в состав WinAVR не входит AVR GCC?
0
Модератор
Эксперт по электронике
6808 / 3353 / 1326
Регистрация: 01.02.2015
Сообщений: 10,578
Записей в блоге: 1
18.01.2018, 16:03 6
Говоря про ассемблер для AVR имел в виду не gnu ассемблер, а тот, который описан в аппнотах и книгах по AVR.
Этот был в AtmelStudio до 4.хх. Возможно - и сейчас присутствует.
А сейчас в AtmelStudio основным является avr-gcc, состоящий из gnu C и gnu assembler - продолжение проекта WinAVR.

Добавлено через 23 минуты
Цитата Сообщение от Jin X Посмотреть сообщение
А какой смысл эмулировать вымышленный микропроцессор?
Как я понимаю, раньше студенты изучали микропроцессоры на основе УМК-80. На реальном оборудовании. Реальными осциллографами.
Потом, преподаватели создали (или заказали) программу эмулятор УМПК-80, которая эмулирует этот комплекс.

А после этого, без разницы, что эмулировать. Возможно, что LamPanel и CompModel - разработки недавних аспирантов, у которых не было доступа к УМПК-80, но задачи стояли идентичные. Возможно, какие-то лицензионные вопросы. Но в целом, если производится эмуляция комплекса, то уже не имеет значение существование прототипа. Всё равно студенты ограничатся работой в эмуляторе. Эти эмуляторы не для курса "МП систем", а какое-то обобщённое изучение вычислительных систем.
1
wrfsbase
5564 / 1718 / 190
Регистрация: 14.12.2014
Сообщений: 3,245
Записей в блоге: 11
18.01.2018, 20:47  [ТС] 7
Т.е. в ВУЗах обучают тому, что в реальной жизни никогда не пригодится? Как эсператно...
Или тот язык всё же совместим с теми (и оборудование, с которым они "как бы работают" похоже на то), что используются в реальных системах (сейчас)?
0
Модератор
Эксперт по электронике
6808 / 3353 / 1326
Регистрация: 01.02.2015
Сообщений: 10,578
Записей в блоге: 1
18.01.2018, 23:16 8
Алгоритмы у Дональда Кнута тоже записаны на уникальном языке программирования.

Тут главное понять принцип, а дальше безразлично, что за контроллер в руках. По мне - лучше изучать на "железном" УМК-80 - при этом охватываешь большую часть микропроцессорного комплекта (чипсет). А потом добавить к изучению отладочную плату на основе микроконтроллера с гарвардской архитектурой. Добавлю, что мы изучали ассемблеры и архитектуры микропроцессоров несколько лет на разных дисциплинах. При этом охватили все, что выпускала промышленность СССР. Хотя практиковались лишь в ассемблерах i8080, i8048, i8051, i8086.

Да и что за команды в ассемблере: пересылка, переходы, арифметика, сравнения, сдвиги, битовые (логические). Какая разница: в мнемонике? наличии аккумулятора? В сложных процессорах, типа ARM, Pentium - ещё есть SIMD.

За этим миром не успеешь. Так что лучше ухватить "незыблемые" основы, а потом углубить их на работе (в хобби).

В небольшой фирме, в которой работаю, хватаемся за различные контракты. Периодически там нужно программировать ПЛК или ПР. Каждый год - новый для меня (но существующий уже лет 10). Даже при некоторой стандартизации и сокращении языков программирования МЭК до 5, всё равно переучиваюсь. Самостоятельное переобучение занимает 2 месяца при средней занятости (10-15 рабочих дней в месяц) на других работах.
Было бы хорошо "оседлать" один вид контроллеров, копить наработки и применять - совершенствуясь с каждым проектом. Но - увы.

Поэтому к любым ВУЗовским ассемблерам отношусь философски - их так много, что без разницы на котором осваивать принципы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2018, 23:16

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

изучение программирования микроконтролеров и микропроцессоров
Народ прошу совета у вас. Собираюсь в магистратуру и преподаватель предлагает изучать...

Какие книги, статьи и материалы необходимо изучить для программирования микроконтроллеров
Нужна подсказка, начал изучать Visual Studio 2013 C++(в текущий момент пишу программу с...

Возникла нужда программирования МК (микроконтроллеров)
Всем добренького времени. Возникла нужда программирования МК (микроконтроллеров). Порыскал по сети...

Выбор микроконтроллера, изучение программирования микроконтроллеров
Добрый день! Несколько дней назад заинтересовался радиотехникой и программированием...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.