24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Делать нечего, буду учиться. Программирование микропроцессора КП580 (Intel 8080). Задание: Начертить структурную схему подключения 8 светодиодов к порту вывода микропроцессорного модуля. Написать программу реализующую эффект «бегущий огонек» с частотой F Герц. Значение параметра F задается преподавателем.
Рисовать мне лень, но при запиле отчёта придётся начертить структурную схему.
Частоту беру в 1000 Герц, ибо нехуй. 1kHz = 1/1000 с = 1 мс. Один такт МП = 0,5 мс. Следовательно имеет 2000 тактов на весь цикл. Каждый светодиод будет гореть 2000/(8*2)=125 тактов. Следует учитывать и время выполнение остальных команд на самом деле нет.
Порт передаёт информацию размером в 1 байт. Можем использовать это, подключив буферный регистр и подведя к каждому его выходу светодиод, тогда все числа с одной единицей в двоичном представлении будут последовательно передаваться на вызод порта.
Ок, записываем для начала в аккумулятор первое число нашей последовательности. Как видим, все числа отличаются в 2 раза. А значит мы можем использовать битовый сдвиг для изменения передаваемого на порт числа.
Самое интересное. Задержка. Я проебался с расчётом частоты, поэтому придётся думать снова. 2000 тактов -> Каждый из 8 светодиодов горит 250 тактов. Цикл задержки работает 257 тактов, норм, близко.
>>110572328 Спрашивай что угодно, объясню понятным языком.
И вновь, задержка выбрана неправильно. Команды, участвующие в отсылке числа на порт, тоже надо учитывать.
250 тактов - 10 на вывод, 4 на сдвиг, 7 на пересылку коэффициента задержки, 5 на уменьшение количества смены горящего светодиода, 10 на переход к началу, остальное на задержку. Это 214 тактов. 214/29=8. Что и было сделано.
Ладно. Так как 8-битный процессор слишком лёгкий для освоения, перейдём к следующему. Intel 8086. Дедушка современным процессоров.
Задание выглядит так: Из исходно массива скопировать в результирующий массив те элементы, которые содержат больше трех единиц в двоичном представлении. Размер массива задается преподавателем.
В принципе задание схоже с первым, поэтому начнём с того же. Запишем в регистр адрес исходного массива и будем его просматривать, пока не дойдём до нуля. Кстати: в отличие от 8-битного, в 16-битном процессоре каждый регистр представляет собой регистровую пару. AX=AH:AL
Тем самым и рыбку съедим и на хуй сможем реализовать программу для любого числа элементов в массиве.
Итак, вышла заминка с реализацией и я сижу читаю описание команд для этого процессора. Ибо просто так написать MOV AX, 0200h никак нельзя. А жаль.
>>110578101 Это важно? Геоинформационные технологии. >>110578206 Если что, ассемблер это проходная дисциплина и в течение всей учёбы я буду пользоваться ей, как матаном или теорией цепей. Пусть будет 120к рублей.
>>110578888 Время в моей ситуации не играет особой роли. А так, всё как и везде, множество интересных, непонятных предметов. Родители родили меня радиоинженером, а я вот тут программистом становлюсь.
В Москве много вузов с этой специальностью. МАИ, например.
>>110578549 У тебя есть список литературы для студентов твоего направления? Хотя бы пару названий. Самообразование это хорошо, мне кажется - надо бы заняться.
>>110579423 Фишка в том, что подобное программирование применяется в разработке различных датчиков. В моём случае.
Разобравшись в работе ассемблера нельзя так говорить, но всё же, можно представить принцип работы процессора. А оттуда уже из говна и палок кучи логических элементов получается система, чёткая и понятная. Магия, одним словом.
>>110579691 Боюсь, что нет. Нам читают лекции, с нами работают преподаватели, а потом уже сами идём на тот же рутрекер за дополнительным материалом.
>>110600016 Для обучения пойдет. Асм - основы, всё равно необходимо иметь представление о нем хотя бы, с чем бы ты не работал (если ты конечно не похапэ-макака или ПРОГРАММИСТ 1С)
Часть хай-перфоманс софта пишется на ассемблере (например, видео-декодеры), поэтому, пусть и небольшой, но спрос на специалистов есть.
>>110600639 Я не против asm-а, я не понимаю, зачем вы выбираете и8080 — какую-то древнючую на хуй сейчас не нужную никому платформу 78 года (ЕМНИП) выпуска. Там хоть команда умножения-то есть?
Просто под микроконтроллеры обучения asm хоть как-то оправдано, да и система команд там явно более гибкая.
>>110600815 Выше писал, что нас вообще учили на МК51 (советский аналог 8051). Субъективно, кажется тупому студенту 2-3 курса было бы сложно сразу ворваться во что-то более современное, начать проще с азов, а затем уже расширять познания более современными вещами. Хотя, может я и ошибаюсь, и было бы лучше сразу обучаться на современных вещах а не на этом каменном веке.
>>110602031 > Хотя, может я и ошибаюсь, и было бы лучше сразу обучаться на современных вещах а не на этом каменном веке. This. Во-первых, полно документации, начиная от видеокурсов и заканчивая форумами. На твоём советском говне пишут только в 3.5 ВУЗах рашки, на каких-нибудь AVR — весь мир, поэтому на любой вопрос нагугливается ответ, ну и можно задать свой вопрос на форумах и получить консультацию. Да, для этого нужно знать инглиш, но это вообще по дефолту. Я уж молчу, что софт под это дело юзер-френдли, отладка не вызывает никаких проблем: загнал в симулятор, который встроен прямо в IDE и дебаж себе спокойно. Открыл там окно с памятью, окно с регистрами, хуякс-хуякс, "так тут у нас итератор возвращается, хуё-моё, падажжи ёбана". Предполагаю, что в МК51 без заливки на реальное железо не обойтись, или нужен эмулятор, который вряд ли тебе предоставляет такие гибкие возможности.
>>110602052 > Предлагаешь сразу распоследние процы учить? Не охуеешь ли пока их учишь? Предлагаешь выучить систему команд старого говна мамонта, а потом переучивать себя, держа две системы команд в голове одновременно? Зачем?
>>110602483 В плане софта ты прав. Да, у нас были эмуляторы МК51, были и IDE для дебага с замечательным консольным интерфейсом. Это была просто немыслимая жопная боль и кровь из глаз при работе с этим дерьмом из середины 90х
>>110602483 >На твоём советском говне пишут только в 3.5 ВУЗах рашки, на каких-нибудь AVR На 4м курсе народ пересадили на AVR, никто не говорил, что мы должны в конечном итоге уметь работать только на 51м.
Программирование микропроцессора КП580 (Intel 8080). Задание:
Начертить структурную схему подключения 8 светодиодов к порту вывода микропроцессорного модуля. Написать программу реализующую эффект «бегущий огонек» с частотой F Герц. Значение параметра F задается преподавателем.
Ну что ж, начнём.