Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2591

.pdf
Скачиваний:
2
Добавлен:
07.01.2021
Размер:
25.15 Mб
Скачать

Федеральное агентство по образованию Сибирская государственная автомобильно-дорожная академия

(СибАДИ)

Л. Е. Олейник

ЯЗЫКИ

ПРОГРАММИРОВАНИЯ

Для специальности 075500 "Комплексное обеспечение информационной безопасности

автоматизированных систем обработки информации и управления"

Учебное пособие

Часть 2

ЛОГИЧЕСКИЕ ОПЕРАЦИИ. УСЛОВНЫЕ И БЕЗУСЛОВНЫЕ ПЕРЕХОДЫ, ОРГАНИЗАЦИЯ ЦИКЛОВ, ВЫЗОВ ПРОЦЕДУР, ИСПОЛЬЗОВАНИЕ СТЕКА

Омск Издательство СибАДИ

2012

ББК 32.973.2 УДК.681.3.06 О 53

Рецензенты:

зав. кафедрой кибернетики ОМГУ, доктор физ.-мат. наук, профессор А.К.Гуц,

зав. отделом программирования ЗАО «Автоматика-Э» М.И.Федосеев

Работа одобрена редакционно-издательским советом Сибирской государственной автомобильно-дорожной академии для специальности 075500 «Комплексное обеспечение информационной безопасности автоматизированных систем обработки информации и управления»

Олейник Л.Е.

ЯЗЫКИ ПРОГРАММИРОВАНИЯ: Учебное пособие. Часть 2. Логические операции. Условные и безусловные переходы, организация циклов, вызов процедур, использование стека данных. Омск: Изд-во СибАДИ, 2012.– 134с.

Учебное пособие является второй частью комплекта пособий из 15 частей по курсу «Языки программирования», изучаемому в СибАДИ на специальности 075500 «Комплексное обеспечение информационной безопасности автоматизированных систем обработки информации и управления».

Предназначается для использования:

–студентами очной формы обучения (для двух уровней подготовки – специалист и бакалавр), во-первых, при выполнении лабораторных работ по дисциплине «Языки программирования» в дисплейных классах (36 часов), во-вторых, при подготовке к практическим занятиям (10 часов) и, в-третьих, при выполнении индивидуальных заданий для самостоятельной работы (60 часов) в течение двух семестров;

–преподавателями при подготовке и проведении аудиторных занятий в дисплейном классе (практические занятия и лабораторные работы).

Может также использоваться студентами специальности 220200 «Автоматизированные системы обработки информации и управления» при изучении курса «Системное программное обеспечение», а также желающими самостоятельно изучить программирование на ассемблере.

Табл. 12. Ил. 3. Библиогр.: 6 назв.

ISBN 5-93204-259-1

© Олейник Л.Е., 2012

2

ОГЛАВЛЕНИЕ

Введение…………………………………………………………………4

1.Подготовка рабочего места к занятиям…………………………....7

2.Аудиторное занятие………………………………………………....8

3.Задание на программирование (общая часть)……………………10

4.Сведения, необходимые для выполнения лабораторной работы..16

5.Типичные ошибки при выполнении работы……………………..47

6.Примеры (тексты) программ………………………………………60

Приложение 2.1 Варианты формул для программирования…..…68 Приложение 2.2 Примеры лабораторной работы №2 …………69

3

ВВЕДЕНИЕ

Данное учебное пособие включает:

описания лабораторных работ, выполняемых на языке низкого уровня (язык ассемблера для микропроцессоров 8086 и 80386) под управлением операционных систем MS-DOS, Windows 95 (Windows 98 или

Windows 2000) и Linux;

информацию для проведения практических занятий. Состоит из 15 частей, каждая из которых содержит:

–демонстрационные примеры, используемые преподавателем при проведении лабораторной работы в дисплейном классе (могут также использоваться при самостоятельном изучении);

–сведения, необходимые для выполнения лабораторной работы (используются также для подготовки к практическим занятиям);

–задание на программирование (общая часть);

–формулы вычислений или тексты индивидуальных заданий;

–требования к программному средству, в т.ч. указания, для каких процессора и операционной системы (ОС) оно разрабатывается, какие директивы и команды применяются, для какого режима работы процессора (реального или защищенного), какого типа (EXEили COM-) они должны быть, сколько модулей и сегментов должны содержать и т.п.;

–описание наиболее часто встречающихся при выполнении работы ошибок программирования;

–детальные ссылки на литературу для более подробного изучения;

–примеры (тексты) программ, разработанные в соответствии с требованиями и содержащие поясняющие комментарии.

Программное обеспечение, используемое при выполнении лабораторной работы в классе и индивидуального задания, приведено в подразделе 1.

Перечень частей:

Название части

Рассматриваемые вопросы, тип программы,

п/п

 

 

количество модулей и операционная система

1

Определение

данных.

Арифметические операции сложения, вычитания,

 

Двоичная арифметика.

умножения и деления (операции двоичной

 

Экранные операции

арифметики; вычисление по формуле; определение

 

 

 

данных; логика и организация программ условные

 

 

 

и безусловные переходы и циклы; ввод с

 

 

 

клавиатуры и вывод на экран). EXE-программа

 

 

 

(один модуль). ОС – MS-DOS

 

Логические

операции.

Арифметические и логические операции (И, ИЛИ,

 

Условные и безуслов-

НЕ, ИСКЛЮЧАЮЩЕЕ ИЛИ; вычисление по фор-

 

 

 

4

 

 

 

 

 

 

 

 

Продолжение таблицы

 

 

 

 

 

 

Название части

 

 

Рассматриваемые вопросы, тип программы,

п/п

 

 

 

 

 

 

количество модулей и операционная система

2

ные переходы, организа-

 

муле; логика и организация программ – вызов

 

ция циклов, вызов про-

 

процедур near и far; использование стека;

 

цедур,

использование

 

директивы extrn, public, global). EXE-программа

 

стека

 

 

 

 

 

(два модуля). ОС – MS-DOS

3

Сдвиговые

 

операции,

 

Арифметические и логические операции и сдвиги;

 

данные со знаком и без

 

логика и организация программ – циклы и

 

знака. Ввод-вывод на

 

переходы; вызов процедур; использование стека;

 

диск

 

 

 

 

 

включаемые файлы; ввод-вывод на диск. СОМ-

 

 

 

 

 

 

 

программа. ОС – MS-DOS

4

Использование

макро-

 

Вычисление по формулам и сдвиги. EXE-программа

 

сов и

 

макрокоманд.

 

(один модуль, использование макросов и

 

Строковые

команды

и

 

макрокоманд; строковые команды, команды

 

команды

 

манипуляции

 

манипуляции флагами). ОС – MS-DOS

 

флагами

 

 

 

 

 

 

 

5

Использование условных

 

Вычисление по формулам и сдвиги. EXE-программа

 

операторов

ассемблиро-

 

(один модуль, использование макросов, макроко-

 

вания. Директива equ

 

 

манд и условных операторов ассемблирования;

 

 

 

 

 

 

 

директива equ). ОС – MS-DOS

6

Способы передачи пара-

 

Демонстрация и опробование способов передачи

 

метров

процедурам

в

 

процедурам в модуле и между модулями:

 

модуле и между моду-

 

параметра(ов) и указателя – через регистр(ы),

 

лями

 

 

 

 

 

общую ячейку, стек, в потоке кода. Передача

 

 

 

 

 

 

 

фактических параметров макросам. Сохранение

 

 

 

 

 

 

 

регистров в вызывающей и вызываемой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процедурах. EXE-программа (два модуля; модели

 

 

 

 

 

 

 

памяти – средняя и большая). ОС – MS-DOS

7

Оптимизация програм-

 

Минимизация объема программы (объем опера-

 

мы

 

 

 

 

 

тивной памяти, занимаемой машинными

 

 

 

 

 

 

 

командами, данными и стеком) либо времени

 

 

 

 

 

 

 

выполнения про-граммы. Использование таблицы

 

 

 

 

 

 

 

переходов, команд и возможностей МП Intel 80386.

 

 

 

 

 

 

 

СОМили ЕХЕ-программа. ОС – MS-DOS

8

Определение

интервала

 

Определение паузы (интервала времени) между

 

времени между события-

 

событиями. Обработка прерываний, команды in и

 

ми. Обработка прерыва-

 

out. EXE-программа. ОС – MS-DOS

 

ний, команды in и out

 

 

 

 

9

Графическое

приложе-

 

Вычисление по формуле (операции двоичной ариф-

 

ние для Windows. Вы-

 

метики и логические операции, сдвиги; определение

 

числения, сдвиги; ввод с

 

данных; логика и организация программ – условные

 

клавиатуры

и

вывод

на

 

и безусловные переходы и циклы; вызов процедур;

 

экран

 

 

 

 

 

ввод с клавиатуры и вывод на экран; использование

5

 

 

 

 

 

 

 

Окончание таблицы

 

 

 

 

Название части

 

Рассматриваемые вопросы, тип программы,

п/п

 

 

 

 

количество модулей и операционная система

 

 

 

 

 

стека). EXE-программа для МП Intel 80386. ОС –

 

 

 

 

 

Windows 95/98/NT. Модель памяти – простая,

 

 

 

 

 

соответствует директиве определения модели па-

 

 

 

 

 

мяти .flat. Режим работы процессора – защищенный

10

Связь с программами на

Смешанное программирование (связь с програм-

 

языке Pascal;

ассемблер-

мами на языке Pascal; встроенный ассемблер;

 

ные врезки в программу

вычисление по формуле: операции двоичной

 

на Pascal’e

 

 

арифметики и логические операции, сдвиги;

 

 

 

 

 

определение данных; логика и организация

 

 

 

 

 

программ – условные и безусловные переходы и

 

 

 

 

 

циклы; вызов процедур; ввод с клавиатуры и вывод

 

 

 

 

 

на экран; использование стека). EXE-программа для

 

 

 

 

 

МП Intel 8086 на языке Pascal с вставками на

 

 

 

 

 

ассемблере. ОС – MS-DOS

 

 

11

Связь с программами на

Смешанное программирование (связь с программа-

 

языке

C++;

ассемблер-

ми на языке С++; ассемблер, встроенный в С++;

 

ные врезки в программу

операции двоичной арифметики и логические

 

на языке C++

 

 

опера-ции, определение данных, переходы и циклы,

 

 

 

 

 

вызов процедур; ввод с клавиатуры и вывод на

 

 

 

 

 

экран – средствами языка С++; сдвиги – средствами

 

 

 

 

 

ассемблера). Режим работы процессора – реальный.

 

 

 

 

 

EXE-программа для МП Intel 80386. ОС – MS-DOS

12

Программирование

на

Программирование на ассемблере

в среде Linux

 

ассемблере в среде Linux.

(операции двоичной арифметики и логические

 

Синтаксис AT&T

 

операции, сдвиги; ввод с

клавиатуры и вывод

 

 

 

 

 

на экран). Синтаксис AT&T. EXE-программа для

 

 

 

 

 

МП Intel 80386. ОС – Linux

 

 

13

Резидентные программы

Разработать резидентную программу или драйвер.

 

и драйверы для MS-DOS

ОС – MS-DOS

 

 

14

Работа

с файлами

в

Одновременная работа с несколькими файлами и

 

базовой версии MS-DOS

несколькими

областями

DTA.

(Назначение

 

и Windows

 

 

программы:

1) работа с файлами в базовой версии

 

 

 

 

 

MS-DOS – ввод данных, запись в файл (прямой и

 

 

 

 

 

последовательный доступ), чтение из файла (прямой

 

 

 

 

 

и последовательный доступ), одновременная работа

 

 

 

 

 

с несколькими файлами; 2) одновременная работа с

 

 

 

 

 

несколькими

областями

DTA;

3) шифрование;

 

 

 

 

 

4) дешифрация). ЕХЕ-программа (модель памяти –

 

 

 

 

 

компактная или большая). ОС– MS-DOS и Windows

15

Дизассемблирование

 

Восстановление текста программы по ее

 

программ

 

 

загрузочному модулю – COM или EXE. ОС – MS-

 

 

 

 

 

DOS. Дизассемблер IDA Pro

 

 

 

 

 

 

 

6

 

 

 

В результате использования комплекта пособий студент должен приобрести устойчивые навыки:

корректного (грамотного) использования директив и команд (непривилегированных и привилегированных) заданного (16или 32разрядного) процессора, эффективно используя его режимы (реальный и защищенный), ограничения и специфические возможности;

построения программ, использующих различную структуру (в т.ч. содержащих различные и разное количество сегментов и использующих различные модели памяти);

построения программ, состоящих из нескольких модулей;

построения EXE- и COM-программ и преобразования EXE-программы

вCOM-программу и COM-программы в EXE-программу;

смешанного программирования (Pascal и встроенный ассемблер, C++ и встроенный ассемблер);

программирования приложений, работающих под управлением операционных систем MS-DOS, Windows, Linux и вызывающих функции используемых операционных систем;

работы с экранным редактором, с Турбоассемблером (tasm.exe), с компоновщиком (tlink.exe и tlink32.exe), с турбопаскалем и компилятором с языка С++;

работы с листингом (т.е. с файлом .lst), с машинными командами и машинным представлением данных;

работы с дизассемблером.

3. . ПОДГОТОВКА РАБОЧЕГО МЕСТА К ЗАНЯТИЯМ

Рабочее место оборудуется персональным компьютером, на котором для первых шести лабораторных работ достаточно:

установить операционную систему Windows 95 (или выше: Windows 98, Windows XP Edition, Windows XP Proffetional, Windows 2000 – кроме Windows Millenium);

установить Far;

создать папку C:\assebler и поместить в нее все содержимое папки u_m_lab2, т.е. следующие файлы: tasm.exe, tlink.exe, rtm.exe и примеры: lab2apr1.asm, lab2bpr1.asm, lb2_1pr2.asm, lb2_2pr2.asm, lab2and.asm, lab2or.asm, lab2xor.asm, lab2not.asm, lb2_1bnn.asm, lb2_2bnn.asm, l_2_1zal.asm, l_2_2zal.asm, l_2_1kln.asm и l_2_2kln.asm.

7

2.АУДИТОРНОЕ ЗАНЯТИЕ

2.1.Создание и редактирование исходного текста программы, компиляция и выполнение программы

(тренинг под руководством преподавателя)

Демонстрационные примеры приведены в подразделе 6 (примеры 2.1–2.6). Используются преподавателем при проведении лабораторной работы №2 в дисплейном классе и могут использоваться студентами при самостоятельном изучении.

2.1.1.Включение ПК, запуск операционной системы Windows 95,

Windows 98, Windows XP или Windows 2000 (не применять Windows Millenium).

2.1.2.Вызов оболочки (пакета) Far и открытие папки

C:\assembler\u_m_lab2.

2.1.3.Ассемблирование программы lab2apr1.asm, т.е. получение объектного модуля lab2apr1.obj (в командной строке набрать и выполнить команду tasm lab2apr1.asm).

2.1.4.Ассемблирование программы lab2bpr1.asm, т.е. получение объектного модуля lab2bpr1.obj (в командной строке набрать и выполнить команду tasm lab2bpr1.asm).

2.1.5.Компоновка (в командной строке набрать и выполнить команду tlink lab2apr1.obj lab2bpr1.obj) и выполнение (исполнение) полученной программы lab2apr1.exe.

2.1.6.Ассемблирование программы lb2_1pr2.asm, т.е. получение объектного модуля lb2_1pr2.obj (в командной строке набрать и выполнить команду tasm lb2_1pr2.asm).

2.1.7.Ассемблирование программы lb2_2pr2.asm, т.е. получение объектного модуля lb2_2pr2.obj (в командной строке набрать и выполнить команду tasm lb2_2pr2.asm).

2.1.8.Компоновка (в командной строке набрать и выполнить команду tlink lb2_1pr2.obj lb2_2pr2.obj) и выполнение (исполнение) полученной программы lb2_1pr2.exe.

2.1.9.Получение объектного файла lab2and.obj и файла lab2and.exe. Выполение программы lab2and.exe. На экран должно быть выведено

«4234».

2.1.10.Отредактировать программу таким образом, чтобы на экран полученный результат выводился вместо цифры «2», т.е. «1434».

2.1.11.Получение объектного файла lab2or.obj и файла lab2or.exe.

8

Выполение программы lab2or.exe. На экран должно быть выведено «1334».

2.1.12.Отредактировать программу таким образом, чтобы на экран полученный результат выводился вместо цифры «4», т.е. «1233».

2.1.13.Получение объектного файла lab2xor.obj и файла lab2xor.exe. Выполение программы lab2xor.exe. На экран должно быть выведено

«1244».

2.1.14.Отредактировать программу таким образом, чтобы на экран полученный результат выводился вместо цифры «2», т.е. «1434».

2.1.15.Получение объектного файла lab2not.obj и файла lab2not.exe. Выполнение программы lab2not.exe. На экран должно быть выведено

«1232».

2.1.16.Отредактировать программу таким образом, чтобы на экран полученный результат выводился вместо цифры «1», т.е. «2434».

2.1.17.Получение объектных модулей lb2_1bnn.obj и lb2_2bnn.obj компоновка и выполнение программы lb2_1bnn.exe.

2.1.18.Получение объектных модулей l_2_1zal.obj и l_2_2zal.obj, компоновка и выполнение программы l_2_1zal.exe.

2.1.19.Получение объектных модулей l_2_1kln.obj и l_2_2kln.obj, компоновка и выполнение программы l_2_1kln.exe.

2.1.20.Подготовить контрольные примеры для проверки логических операций по форме:

 

 

Таблица 2.1

 

 

 

 

 

№ п/п

B1

 

B2

1

 

 

 

 

2

 

 

 

 

3

 

 

 

 

4

 

 

 

 

2.2 Редактирование, компиляция и выполнение демонстрационных примеров

(под контролем преподавателя)

В папке C:\assebler\u_m_lab2 создать файл l_2_fio.asm, где fio –

инициалы выполняющего работу (первые буквы фамилии, имени и отчества – латинскими буквами).

2.2.1.Связывание модулей (пример 2.1).

2.2.2.Логическая операция И (пример 2.2).

2.2.3.Логическая операция ИЛИ (пример 2.3).

2.2.4.Логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ (пример 2.4).

2.2.5.Логическая операция НЕ (пример 2.5).

9

3.1.Ассемблирование программы и получение загрузочного

файла

2.3.1.Для ассемблирования программы необходимо файлы с программой (то есть файлы l_2_1fio.asm и l_2_2fio.asm) поместить в каталог с ассемблером (то есть с файлом tasm.exe), набрать в командной строке команду:

tasm.exe <имя файла>.asm /l

и нажать клавишу Enter. Т.е. в нашем случае набрать и выполнить команду:

tasm.exe l_2_1fio.asm /l

В результате будет получен файл с расширением .obj (полное его имя: l_2_1fio.obj).

2.3.2.Затем аналогично получить объектный файл по второму модулю

(l_2_2fio.obj).

2.3.3. Затем с помощью программы tlink.exe получить загрузочный модуль. Для этого необходимо, чтобы файл tlink.exe был в каталоге с ассемблером. Набрать в командной строке и выполнить команду

tlink.exe l_2_1fio.obj l_2_2fio.obj

В результате будет получен файл l_2_1fio.exe.

2.3.4. Запустить программу (для этого навести курсор на полученный файл и нажать клавишу Enter).

Каждый вводимый вами символ выведется дважды: один раз, когда он отображается DOS при вводе с клавиатуры, и второй раз он отображается Вашей программой.

2.4. Подготовка к выполнению индивидуального задания

(создание заготовки l_2_fio.asm)

До ввода команд ввести комментарий, который показывает очередность выполнения операций (выдача сообщений, ввод данных, преобразование из символьного вида в двоичный, вычисления, преобразование из двоичного вида в символьный и т.п.), см. приложение

(файлы lb2_1bnn.asm и lb2_2bnn.asm)

3. . ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ (ОБЩАЯ

ЧАСТЬ)

3.1. Составить EXE-программу, состоящую из двух модулей, для МП

Intel 8086:

первый модуль предназначен для вычисления по той же формуле, содержащей арифметические операции сложения, вычитания, умножения и деления, что использовалась в первой лабораторной работе;

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]