Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014- СП 3.0 ЛАБЫ ОБЯЗАТ.doc
Скачиваний:
99
Добавлен:
01.03.2016
Размер:
896 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ЧЕРНИГОВСКИЙ НАЦИОНАЛЬНЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ И КОМПЬЮТЕРНЫХ СИСТЕМ

Системное программирование на макроассемблере masm32

Методические указания к лабораторным работам

по нормативной дисциплине

«Системное программирование» студентов профессионального направления 6.050102 «Компьютерная инженерия»

Обсуждено и рекомендовано

на заседании кафедры

информационных и компьютерных систем, протокол № от . .20 г.

Чернигов ЧНТУ 2014

Системне програмування на макроасемблері MASM32. Методичні вказівки до лабораторних робіт с нормативної дисципліни «Системне програмування» (частина 1) студентів професійного напряму 6.050102 «Комп’ютерна інженерія»/ Укл. Нестеренко С.О. – Чернігів: ЧНТУ, 2014. - 78с., рос. мовою

Укладач: Нестеренко Сергій Олександрович, кандидат технічних наук, доцент

Відповідальний за випуск: Казимир Володимир Вікторович, завідувач кафедри інформаційних та комп’ютерних систем, доктор технічних наук, професор

Рецензент: Акименко Андрій Миколайович, кандидат фізико-математичних наук, доцент кафедри інформаційних та комп’ютерних систем Чернігівського національного технологічного університету

Содержание

ВСТУПЛЕНИЕ 4

4

1 РАБОТА С КОНСОЛЬЮ 6

2 ТЕХНОЛОГИЯ СОЗДАНИЯ АССЕМБЛЕРНЫХ ПРОГРАММ 15

3 МАКРОГЕНЕРАТОР И МАКРОСЫ 23

4 КОНСОЛЬНЫЙ ВВОД-ВЫВОД 34

5 МЕХАНИЗМ ИСПОЛЬЗОВАНИЯ ПРОЦЕДУР 44

6 ИССЛЕДОВАНИЕ ОБЪЕКТНЫХ ФАЙЛОВ ФОРМАТА COFF 62

7 ИССЛЕДОВАНИЕ ИСПОЛНЯЕМОГО ЕХЕ-МОДУЛЯ 70

РЕКОМЕНДОВАННАЯ ЛИТЕРАТУРА 78

Вступление

Программирование на уровне машинных команд (низкоуровневое) является незаменимым для многих направлений информационных технологий: создание эффективных прикладных программ и драйверов, обратная разработка (reverse engineering), криптография, защита информации и многих, многих других. Причина проста – если вы хотите узнать, что в действительности делает программа – загляните в ее машинный код.

Программными абстракциями машинного кода являются ассемблеры – особые языки программирования, в которых один оператор соответствует одной команде процессора. Ассемблеров существует множество хотя бы потому, что существует множество процессоров с разными наборами исполняемых ими машинных команд. Более того, для одного и того же процессора (к примеру, с архитектурой IA-32/x86) создано несколько ассемблеров с различающимся синтаксисом: tasm, masm, nasm, fasm… Они различаются синтаксисом, эффективностью поддержки разработчиков и функциональной проработанностью. Для разработчиков наибольшее значение имеют, конечно же, функциональность и эффективная поддержка. В этом смысле среди всех известных ассемблеров заметно выделяется Microsoft Macro Assembler, который известен под аббревиатурой MASM32 (32 означает, что поддерживается разработка 32-разрядных приложений). (В дальнейшем изложении мы будем использовать также аббревиатуру «МАСМ», которую следует понимать как «32-разрядный макроассемблер Microsoft MASM32»). МАСМ постоянно поддерживается и развивается корпорацией Microsoft и распространяется ею бесплатно, что, разумеется, способствует усилению его популярности. Именно поэтому МАСМ выбран кафедрой как целевой язык низкоуровневого программирования для изучения в курсе «Системное программирование».

Лабораторный практикум по системному программированию построен по принципу сочетания обязательных работ и работ, выполняемых по желанию студента. В данных методических указаниях приводятся описания только семи обязательных лабораторных работ, выполнение и защита которых может без чрезмерных трудозатрат принести студенту честно заработанную положительную оценку в диапазоне 60-65 баллов ЕКТС. Для получения более высоких оценок по курсу студент должен самостоятельно выполнить и защитить дополнительные работы, содержание и объем которых доводится до студентов в начале семестра изучения настоящей дисциплины. По этим дополнительным работам имеются отдельные методические указания, доступ к которым поможет получить преподаватель, ведущий лабораторные занятия.