Ну вот ты решил делать прошивку, как все-таки организовать программу, чтобы она легко читалась и была возможность ее расширять? В этом плане лучше всего разделить ее на части (модули), отвечающие за отдельные функции системы/периферию. Рассмотрим пример: Что здесь важно: программа начинает выполняться с метки Reset (адрес 0x0000), далее перескакивает на метку Init. Сегменте кода между rjmp Init и. самой меткой Init располагается таблица векторов прерываний (int_vectors.asm) и определяются подпрограммы их обработки (int_routines.asm). Так вот если в нашей программе используются прерывания, мы должны определить таблицу прерываний и сами обработчики прерываний/или поставить заглушки на них. Если мы этого не сделаем и разрешим прерывания, программа будет глючить и вот почему: в каждом контроллере есть прерывания и зарезервированы адреса, куда передается управление программы в случае возникновения оных. Эти адреса располагаются в самом начале сегмента кода за адресом 0x0000. То есть, если р
Заготовка программы на ассемблере
30 июня 202130 июн 2021
42
2 мин