Ассемблер
ОБЪЯВЛЕНИЯ
Обязательно: хотя бы базовое знание Си, стремление учиться и познавать.
Крайне желательно: умение обращаться с консолью, владение DOSBox.
Желательно: базовое владение Linux и git & GitHub.
Тема 1
a) Введение (пара слов о курсе, область применения низкоуровневого программирования)
b) Основные понятия
c) Различия между архитектурами: x86, x86-64, ARM, SPARC и другие. CISC и RISC
d) Intel и AT&T синтаксисы
e) Литература
Тема 2
a) Регистры и прерывания
b) Смещения и сегменты памяти (DOS)
c) ASCII-таблица/таблица символов
d) Первая программа: вывод сообщения на экран
Тема 3
a) Безусловные и условные операторы перехода
b) Циклы
c) Программа-цикл (заливка экрана заданным символом)
Тема 4
a) Стек
b) Функции
c) Чуть усложнённый пункт 3c: заливка экрана символом нажатой клавиши
Тема 5
a) Теория размещения в памяти (в т. ч. системной информации: адрес таблицы прерываний, шрифта, видеопамяти, etc.)
b) Работа с файлами
c) Задача: перезаписать файл единственным символом. Задача: вывод напрямую в видеопамять
Тема 6
a) Резидентные программы
b) Краткий экскурс в вирусы
c) Создание резидента аварийной холодной перезагрузки (DOS)
Тема 7
a) Порты (“in”/”out”)
b) Задача: выводить динамическую картинку на экран типа “дождь” или “огонь” посредством использования портов (DOS). Зажечь LED-светодиод клавиши Caps Lock
Тема 8 (если получится организовать)
a) Практикум на настоящих ПЛК