Ассемблер

ОБЪЯВЛЕНИЯ


Обязательно: хотя бы базовое знание Си, стремление учиться и познавать.

Крайне желательно: умение обращаться с консолью, владение 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) Практикум на настоящих ПЛК