Часть 1. В17 Практикум по дисциплине «Информатика и программирование» для студентов (часть 1)
Волков А.Г., Демидов Л.Н.
Практикум по дисциплине «Информатика и программирование» для студентов, обучающихся по направлению 230700.62 «Прикладная информатика»
Москва 2011 УДК 681.306 ББК 32.073 В17
Волков А.Г., Демидов Л.Н.
В практикуме изложена методика проведения практических занятий по программированию на языке ассемблера. Все программы рассчитаны на работу с транслятором и редактором связей макроассемблера фирмы Microsoft(R) (Macro Assembler Professional Development System) версии 6.1 и выше. Решение практических задач сопровождается теоретическими сведениями по изучаемой теме и примерами программ. Для каждого занятия приведены задания, требования к оформлению отчета и перечень контрольных вопросов. Данный практикум обеспечивает практические занятия по курсу «Информатика и программирование» в первом семестре. Рекомендовано к изданию решением учебно-методического совета Финансового университета при правительстве РФ (протокол № Х от «___» _____________ 2011 г.)
УДК 681.306 ББК 32.073 В17
© Финансовый университет при правительстве РФ © Волков Андрей Геннадьевич © Демидов Лев Николаевич Оглавление Введение. 6 Практическое занятие № 1. Трансляция, компоновка и отладка программ. 8 1. ЦЕЛЬ РАБОТЫ.. 8 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 8 2.1. Архитектура компьютера. 8 2.2. Процедуры формирования программы.. 12 2.3. Структура программы.. 18 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 32 4. СОДЕРЖАНИЕ ОТЧЕТА.. 33 5. Контрольные вопросы.. 33 Практическое занятие № 2. Режимы адресации. 33 1. ЦЕЛЬ РАБОТЫ.. 33 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 34 2.1. Команды ассемблера. 34 2.2. Режимы адресации. 36 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 41 4. СОДЕРЖАНИЕ ОТЧЕТА.. 42 5. ВАРИАНТЫ ЗАДАНИЙ.. 43 6. КОНТРОЛЬНЫЕ ВОПРОСЫ.. 44 Практическое занятие № 3. Программирование ветвлений и циклов. 44 1 ЦЕЛЬ РАБОТЫ.. 44 2 ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 45 2.1. Команды условного перехода. 45 2.2. Команда безусловного перехода. 47 2.3. Организация циклов. 52 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 54 4. СОДЕРЖАНИЕ ОТЧЕТА.. 55 5. ВАРИАНТЫ ЗАДАНИЙ.. 55 6. Контрольные вопросы.. 57 Практическое занятие № 4. Арифметические операции целочисленной обработки информации. 57 1. ЦЕЛЬ РАБОТЫ.. 57 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 57 2.1. Десятичные числа. 57 2.2. Сложение и вычитание целых чисел. 58 2.3. Умножение и деление целых чисел. 63 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 67 4. СОДЕРЖАНИЕ ОТЧЕТА.. 67 5. ВАРИАНТЫ ЗАДАНИЙ. 68 6. Контрольные вопросы.. 70 Практическое занятие № 5. Программирование операций ввода-вывода в реальном режиме работы процессора. 70 1.ЦЕЛЬ РАБОТЫ.. 70 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 71 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 77 4. СОДЕРЖАНИЕ ОТЧЕТА.. 77 5. ВАРИАНТЫ ЗАДАНИЙ.. 77 6. Контрольные вопросы.. 80 Практическое занятие № 6. Создание пользовательских функций. 81 1. ЦЕЛЬ РАБОТЫ.. 81 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 81 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 92 4. ВАРИАНТЫ ЗАДАНИЙ. 93 5. СОДЕРЖАНИЕ ОТЧЕТА.. 93 6. Контрольные вопросы.. 93 Практическое занятие № 7. Консольный ввод-вывод. 94 1. ЦЕЛЬ РАБОТЫ.. 94 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 94 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 102 4. ВАРИАНТЫ ЗАДАНИЙ. 103 5. СОДЕРЖАНИЕ ОТЧЕТА.. 103 6. Контрольные вопросы.. 103 Практическое занятие № 8. Работа с файлами. 104 1. ЦЕЛЬ РАБОТЫ.. 104 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 104 2.1 Создание файла и запись в него. 104 2.2 Чтение из файла. 110 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 119 4. ВАРИАНТЫ ЗАДАНИЙ. 120 5. СОДЕРЖАНИЕ ОТЧЕТА.. 120 6. Контрольные вопросы.. 120 Практическое занятие №9. Использование высокоуровневых директив и макросов 121 1. ЦЕЛЬ РАБОТЫ.. 121 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 121 2.1. Условные директивы.. 121 2.2. Директивы организации цикла. 130 2.3. Макросы.. 131 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 136 4. ВАРИАНТЫ ЗАДАНИЙ. 136 6. Контрольные вопросы.. 136 Практическое занятие №10. Создание динамических библиотек. 137 1. ЦЕЛЬ РАБОТЫ.. 137 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 137 2.1 Создание динамических библиотек. 137 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 157 4. ВАРИАНТЫ ЗАДАНИЙ. 157 5. СОДЕРЖАНИЕ ОТЧЕТА.. 157 6. Контрольные вопросы.. 158 Практическое занятие №11. Создание графических приложений для Windows. 158 1. ЦЕЛЬ РАБОТЫ.. 158 2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.. 158 2.1 Создание графических приложений для Windows. 158 2.2 Процедура WinMain. 159 2.3 Процедура WinProc. 160 2.4 Процедура ErrorHandler 161 2.5 Функция MessageBox. 162 3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.. 167 4. ВАРИАНТЫ ЗАДАНИЙ. 167 5. СОДЕРЖАНИЕ ОТЧЕТА.. 167 6. Контрольные вопросы.. 168 Список литературы.. 169 Приложения. 170 Приложение 1. 170 Приложение 2. 186 Приложение 3. 189 Приложение 4. 198 Приложение 5. 209 Приложение 6. 213 6.1. Начало работы с отладчиком. 213 6.2. Точки останова. 217 6.3 Другие возможности. 221 Приложение 7. 225 Приложение 8. 227
Введение
Язык ассемблера представляет собой символическую запись команд процессора и, следовательно, определяется его архитектурой. Постоянное совершенствование современных процессоров определяет изменения низкоуровневого языка. Кроме того, развитие операционных систем зарагивает ту часть языка, которая обеспечивает его взаимодействие с внешними устройствами. Поэтому в практикуме рассмотрены вопросы, связанные с изучением особенностей архитектуры и системы команд процессоров Pentium, а также задачи взаимодействия с современными операционными системами (ОС) через вызов процедур, функций и использования структур и констант интерфейса прикладного программирования API (англ. application programming interface) Windows. Знание ассемблера позволяет понять внутреннее устройство программ и ОС, реализовать взаимодействие с нестандартными внешними устройствами, оптимизировать программу, написанную на языке высокого уровня, по быстродействию и занимаемому объему оперативной памяти. Материал практикума, выбранный уровень индивидуальных заданий и методика изложения теоретических сведений преследуют следующие цели: изложить основы архитектуры Intel-совместимых процессоров; показать тесную связь архитектуры процессора с его машинным языком; представить систему машинных команд в виде функциональных групп, поясняющих цели, которые преследовали разработчики процессора при введении той или иной команды в систему машинных команд; научить использовать инструментальные средства разработки ассемблерных программ; научить применять в программах высокоуровневые средства интерфейса прикладного программирования Windows; научить осмысленному подходу к выбору средств ассемблера для реализации основных алгоритмических конструкций для решения практических типовых задач средней сложности. В приложения вынесена часть справочного материала, которая может понадобиться в разных лабораторных работах. Надеемся, что выполнение лабораторных работ, разбор с помощью отладчика программ, написанных для систем Windows и DOS, позволит вам сделать вывод о том, что ассемблер, несмотря на свою подробность и множество используемых команд, в сущности, достаточно простой язык. Данный практикум обеспечивает первую часть курса «Информатика и программирование» и предназначен для студентов, обучающихся по направлению 230700.62 «Прикладная информатика», но он будет полезен всем интресующимся вопросами программирования на низкоуровневом языке.
|