цифровая электроника
вычислительная техника
встраиваемые системы

 

Лабораторные работы по дисциплине Основы микропроцессорной техники

Автор: Mike(admin) от 20-02-2017, 19:55
Задания для реализации задач на языке программирования Ассемблер

1. Инициализировать две переменные a=58h и b=EABh
Поместить старший байт переменной b в регистр dl, а ее младший байт в регистр bx. Поместить значение переменной a в регистр dh. Обменять значения регистров bx и dx

Дизассемблер онлайн

Автор: Mike(admin) от 23-12-2016, 20:39

Если вы действительно хотите «хакнуть» какое-либо программное обеспечение, то, возможно, будете иметь дело с машинным кодом, который представляет собой набор инструкций для выполнения процессором вычислительного устройства. Этот код читабелен для машин и очень трудно воспринимаем человеком. Но, тем не менее, именно в нем кроется вся суть работы программы.


Аппараты Crown of Egypt от IGT

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

yasp - браузерный ассемблер с виртуальным микроконтроллером

Автор: Mike(admin) от 27-03-2014, 06:13

Уже немногие инженеры-программисты знают ассемблер, хотя он помогает понять принципы программирования встраиваемых систем и то, что стоит за языком C. Поэтому в последнее время стали появляться браузерные компиляторы и эмуляторы языка ассемблер для обучения и создания простых проектов, например, ASM80. Но два энтузиаста Роберт Фишер и Майкл «luto» Лютонски разработали полнофункциональную браузерную среду разработки, включающую в себя компилятор ассемблера, эмулятор и отладчик. Назвали они её yasp.


yasp

Самое интересное то, что в этой среде «аппаратные» элементы: микроконтроллер, потенциометр, кнопки, светодиоды. Так что, процесс отладки должен быть нагляден и удобен.

Браузерная среда разработки ASM80

Автор: Mike(admin) от 24-02-2014, 06:51

ASM80 представляет собой интегрированную среду разработки, предназначенную для написания программ на ассемблере для 8-разрядных процессоров вроде 8080, 8085, Z80 и 6502. ASM80 состоит из двух основных частей: редактора+ассемблера и отладчика. Эта среда разработки является браузерной, то есть вы можете работать с ней на любом компьютере, где установлен современный браузер.


asm80

Все файлы хранятся непосредственно в браузере, поэтому нужно завести аккаунт для онлайн-доступа к ним. Впоследствии их можно скачать в виде ZIP-файла на свой компьютер.

Симулятор 8-битного ассемблера

Автор: Mike(admin) от 7-02-2014, 06:53

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


ассемблер

Чтобы процесс изучения проходил быстро, удобно и легко, Марко Швейгхаузер (Marco Schweighauser) написал простой симулятор ассемблера, который запускается из браузера и имеет интуитивно понятный интерфейс.

Программная симуляция SPI

Автор: Mike(admin) от 13-01-2014, 11:36

Некоторые дешевые микроконтроллеры могут не обладать необходимым количеством интерфейсных модулей. Кроме того, из-за небольшого числа выводов зачастую приходится отдавать предпочтение какому-то одному более важному модулю, хотя для проекта также может требоваться другой интерфейс, который "висит" на этих же выводах. Решением может являться программная симуляция интерфейса.


SPI

Ниже представлен код на ассемблере, симулирующий работу интерфейса SPI (функции записи и чтения) для микроконтроллера PIC16F877A.

Срежьте жирок с AVR-GCC кода

Автор: Mike(admin) от 8-12-2013, 09:15

Хотя использование AVR-ассемблера позволяет легко писать компактные по размеру кода программы, все же использование языка C и AVR Libc дает больше удобств. В этой статье будет показано, как написать код на C, который avr-gcc скомпилирует с минимальным размером. Существует ряд руководств по написанию компактного кода для AVR, но ни одно из них не рассматривает вопрос сокращения оверхеда в start-up библиотеке avr-gcc (gcrt1).


avr-gcc

Многие все еще применяют avr-gcc 4.3.3, поскольку он дает более плотный код по сравнению с версиями 4.5.3 и 4.7, но для ниже приведенного примера avr-gcc 4.8.2 дал еще более компактный код, нежели 4.3.3.


Тестовая программа работает со встроенным температурным датчиком ATtiny85 и мигает светодиодом. После компиляции с оптимизацией –Os получаем программу размером 274 байта:


Программирование на языке C: оптимизация типа integer

Автор: Mike(admin) от 19-10-2013, 12:49

Инженер Фабьен ле Ментек (Fabien le Mentec) привел небольшое исследование, позволяющее лучше оптимизировать работу 8-разрядных контроллеров. Он работал над регулятором напряжения на основе 8-разрядного микроконтроллера ATMEGA328P фирмы ATMEL. Основная логика контроллера была реализована в главной функции main() и зависела от периодического таймера, функционирующего с фиксированной частотой. В обработчике прерывания по таймеру инкрементировалась переменная-счетчик, которая затем использовалась в основной программе для правильной в плане синхронизации работы контроллера напряжения.


тип integer

Посмотрев на код Фабьена, один интересующийся человек отметил, что в этом коде для счетчиков используется тип uint8_t вместо unsigned int, и сказал, что с этим могут возникнуть трудности в рамках данного проекта. Но Фабьен пояснил причины и последствия такого решения.

На самом ли деле ассемблер так хорош?

Автор: Mike(admin) от 28-09-2013, 11:25

Население этой планеты свято верит в то, что ассемблерный код, написанный в тяжелых муках, несмотря на свою времязатратность и высокие требования к навыкам программиста, всегда даст лучший результат. Поэтому ниже будут приведены еретические доводы против подобных заблуждений, и будут представлены случаи, когда язык C в паре с современным хорошим компилятором могут сделать работу лучше.


ассемблерные инструкции

Получение оптимального кода


Всем известно, что лучший способ получить быстрый, компактный код для встроенных приложений заключается в эксплуатации на полную навыков программиста-ассемблерщика. Конечно, программист должен быть знаком с архитектурой конкретного устройства, набором команд и местным ассемблером, и он также должен быть всесторонне проинформирован о задачах данного приложения. Очевидно, что в таком случае компилятор не может конкурировать с таким мастером спорта по ассемблеру, поскольку он не может быть в курсе всех требований приложения.


Это может показаться очевидным, но здесь имеется один неучтенный фактор — человеческая природа. Но мы поговорим об этом ниже.