Низкоуровневое программирование
Кафедра информатики и автоматизации научных исследований
Специальность: Прикладная информатика
Преподаватель: Белокрылов П.Ю.
Целью освоения дисциплины (модуля) «Низкоуровневое программирование» является ознакомление студентов с основами программирования на языке ассемблера расчетных алгоритмов и программ с оконным Windows-интерфейсом. Программа курса требует от студентов знаний основ процедурно-модульного программирования, Windows API - программирования.
В курс включены вопросы, связанные с основными принципами и функционированием модели ЭВМ на базе традиционной архитектуры, моделями использования памяти, поддерживаемые микропроцессорами семейства Intel x86, двоичной и шестнадцатеричной системами счисления, синтаксисом языка ассемблера.
В результате освоения дисциплины обучающийся должен:
Знать: основные принципы и функционирование модели ЭВМ на базе традиционной архитектуры. Иметь представление о моделях использования памяти, поддерживаемые микропроцессорами семейства Intel x86. Иметь понятия о представлении данных в памяти. Знать основные операторы языка ассемблера. Иметь представления о возможностях и способах использования языка ассемблера для системного программирования.
Уметь: использовать двоичную и шестнадцатеричную системы счисления для представления данных, создавать эффективные и разнообразные по предоставляемым возможностям программы, созданные на языке ассемблера для ОС Windows.
Владеть: представлениями (навыками) процедурно-модульной парадигмы разработки приложений для ОС Windows и реализации данного подхода на языке ассемблера.
Содержание
1. МОДЕЛЬ ФОН-НЕЙМАНОВСКОЙ АРХИТЕКТУРЫ КОМПЬЮТЕРА. Процессоры Intel. Ядро процессора, программируемые регистры, флаги, цикл выполнения команды. 32-разрядные процессоры и улучшенный цикл выполнения команды.
2. ФУНДАМЕНТАЛЬНЫЕ МЕХАНИЗМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ ОС WINDOWS. Операционная система как диспетчер ресурсов. Управление памятью. Архитектура памяти.
3. ФОРМЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ В ЯЗЫКЕ АССЕМБЛЕРА. Двоичные числа, преобразование двоичных чисел в десятичные, шестнадцатеричные числа. Числа со знаком. Хранение символов.
4. ОСНОВЫ ЯЗЫКА АССЕМБЛЕРА. Директивы размещения данных. Символические константы. Команды пересылки данных. Арифметические команды. Основные типы операндов. Косвенная адресация. Операции со стеком. Процедуры, процедуры с параметрами. Команды логических вычислений и сравнения, логические структуры. Циклы с условием. Арифметика целых чисел, команды сдвига, умножение и деление. Структуры и макроопределения.
5. ПРОГРАММИРОВАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ. Набор символов и функции Windows API. Типы данных Windows. Дескрипторы консоли. Функции консоли Win32. Ввод и вывод символов на консоль. Структуры данных.
6. РАБОТА С ФАЙЛАМИ. Функция создания файла. Функции CloseHandle, ReadFile, WriteFile. Пример записи в файл. Перемещение указателя файла. Пример чтения файла.
7. ГРАФИЧЕСКИЕ ПРИЛОЖЕНИЯ WINDOWS. Структуры для окон. Функция MessgeBox. Функция WinMain. Процедура WinProc. Процедура ErrorHandler. Совместное использование языков высокого уровня и ассемблера, согласование имен, вызовов, параметров.
8. МНОГОЗАДАЧНОЕ ПРОГРАММИРОВАНИЕ. Создание процесса. Потоки. Взаимодействия потоков, семафоры, события, критические секции, взаимоисключения.
9. ВОПРОСЫ СИСТЕМНОГО ПРОГРАММИРОВАНИЯ. Страничная и сегментная адресация. Адресное пространство процесса. Управление памятью. Фильтры. Создание динамических библиотек.
10. ОСНОВЫ АНАЛИЗА КОДА ПРОГРАММ. Обзор отладчиков и дизассемблеров. Основы работы с дизассемблером W32Dasm и отладчиком ICE. Приемы анализа кода программ. Исправление исполняемых модулей.
Лабораторный практикум
- Реализация тривиальных алгоритмических конструкций.
- Работа с ресурсами ОС Windows.
- Графический интерфейс.
- Создание SDI приложений.
Литература
а) основная литература:
- Пирогов В. Ассемблер для Windows. - 2-е изд. перераб. и доп. — СПб.: БХВ-Петербург, 2003. — 656 с.: ил.
- Галисеев Г. Ассемблер IBM PC. Самоучитель.: — М.: Издательский дом «Вильямс», 2004. — 304 с.: ил.
- Крупник А. Изучаем Ассемблер. — СПб.: Питер, 2004. — 249 с.: ил.
б) дополнительная литература:
- Пирогов В. Ю. Ассемблер и дизассемблирование. — СПб.: БХВ-Петербург, 2006. — 464 с.: ил.
Отчетность
- Семестр 8: Зач