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

epd627

.pdf
Скачиваний:
22
Добавлен:
02.05.2015
Размер:
816.97 Кб
Скачать

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

(СибАДИ)

Л. Е. Олейник

ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

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

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

Часть 1 ОПРЕДЕЛЕНИЕ ДАННЫХ. ДВОИЧНАЯ АРИФМЕТИКА. ЭКРАННЫЕ ОПЕРАЦИИ

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

2012

ББК 32.973.2 УДК.681.3.06 О 53

Рецензенты:

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

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

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

Олейник Л.Е.

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

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

075500 «Комплексное обеспечение информационной безопасности автоматизированных систем

обработки информации и управления». Предназначается для использования:

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

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

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

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

ISBN 5-93204-258-3

©

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

2

ОГЛАВЛЕНИЕ

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

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

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

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

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

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

Примеры (тексты) программ………………………….……………..90 Приложение 1.1. Варианты формул для программирования.....…116

Приложение 1.2. Структура (схема) программы ………..………..117 Приложение 1.3. Пример лабораторной работы №1 ……...…..….122

3

ВВЕДЕНИЕ

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

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

Windows 2000) и Linux;

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

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

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

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

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

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

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

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

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

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

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

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

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

п/п

 

 

 

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

1

Определение

данных.

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

 

Двоичная

арифметика.

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

 

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

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

 

 

 

 

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

 

 

 

 

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

 

 

 

 

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

 

 

 

 

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

2

Логические

 

операции.

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

 

Условные

и

безуслов-

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

 

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

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

 

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

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

 

 

 

 

4

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

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

 

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

п/п

 

 

 

 

 

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

 

цедур,

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

директивы

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. Вы-

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

 

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

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

 

клавиатуры

и

вывод

на

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

 

экран.

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

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

10

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

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

 

 

 

 

 

 

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

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

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

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

 

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

п/п

 

 

 

 

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

 

языке 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

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

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

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

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

–создать папку C:\assebler и поместить в нее все содержимое папки u_m_lab1: tasm.exe, tlink.exe, rtm.exe, dpmiload.exe, dpmimem.dll и примеры: lab1pr1.asm, lab1pr2.asm, lab1pr3.asm, lab1pr4.asm, lab1pr5.asm, lab1pr6.asm, lab1pr7.asm, lab1pr8.asm и включаемые файлы: as_b_bwd.asm, bin_asci.asm, vvod_bwd.asm и l_1proc7.asm.

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

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

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

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

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

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

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

C:\Assembler\u_m_lab1.

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

2.1.4.Редактирование (встроенным редактором оболочки Far) сообщения msg в сегменте данных программы lab1pr1.asm (изменить на текст: «Привет, <любое имя>») и сохранение полученного файла под другим именем: l_pr1fio.asm (здесь fio – инициалы: первые буквы фамилии, имени и отчества).

2.1.5.Ассемблирование, компоновка и выполнение полученной программы (l_1fio.asm).

7

2.1.6. Демонстрация ввода с клавиатуры байта (lab1pr2.asm), слова (lab1pr3.asm) и двойного слова (lab1pr4.asm) с акцентированием внимания на списках параметров (vvod_b, vvod_w и vvod_d), вызове процедур преобразования данных из кода ASCII (сокращенное название Американского стандартного кода обмена информацией) в двоичный код

(процедуры ascii_bin_b, ascii_bin_w и ascii_bin_d), на входных и выходных параметрах этих процедур и использование полученных данных (занесение в соответствующие ячейки памяти: b1, w1, d1 и т.д.).

Здесь и ниже b1, b2,…,w1, w2, …, d1, d2, … и т.д. определены директивами db, dw и dd аналогично приведенным ниже примерам:

b0 db 10 ; определение байта (директива db);

w0 dw 100; определение слова (директива dw);

d0 dd 1000 ; определение двойного слова (директива dd). Внимание! Пункты 2.1.7 – 2.1.10 при проведении аудиторного

занятия преподаватель может порекомендовать пропустить тем студентам, кто по каким-либо причинам задержался с выполнением предыдущих пунктов! Эти пункты могут быть выполнены при самостоятельной работе над программой.

2.1.7.Редактирование сообщения mas_b1 в программе lab1pr2.asm (сначала заменить только текст на «b2= », не меняя метку) и сохранение файла под другим именем (l_pr2fio.asm). Ассемблирование, компоновка, выполнение программы.

2.1.8.Редактирование метки сообщения mas_b1 (заменить на mas_b2 в сегменте данных; заменить ссылки на метку в сегменте кода). Ассемблирование, компоновка, выполнение программы.

2.1.9.Редактирование сообщения mas_w1 в программе lab1pr3.asm (заменить текст сообщения на «w2= », в сегменте данных заменить метку на mas_w2 и в сегменте кода заменить ссылки на эту метку) и сохранение файла под другим именем (l_pr3fio.asm). Ассемблирование, компоновка, выполнение программы.

2.1.10.Редактирование сообщения mas_d1 в программе lab1pr4.asm (заменить текст сообщения на «d2= », в сегменте данных заменить метку на mas_d2 и в сегменте кода заменить ссылки на метку mas_d1 ссылками на метку mas_d2) и сохранение файла под другим именем (l_pr4fio.asm). Ассемблирование, компоновка, выполнение программы.

2.1.11.Демонстрация преобразования данных (b1, w1 и d1) из двоичного кода в код ASCII (процедура bin_ascii) и вывод преобразованных данных на экран. Ассемблирование, компоновка, выполнение программы lab1pr5.asm.

2.1.12.Редактирование программы lab1pr5.asm (убрать списки параметров vvod_b, vvod_w и vvod_d в файл vvod_bwd.asm и процедуры ascii_bin_b, ascii_bin_w и ascii_bin_d в файл as_b_bwd.asm. Т.е. вырезать из lab1pr5.asm соответствующий фрагмент, создать файл (Shift+F4) с нужным именем, вставить в созданный файл фрагмент из буфера обмена (Ctrl+Insert) и сохранить созданный файл).

8

2.1.13.Редактирование программы lab1pr5.asm (убрать процедуру bin_ascii в файл bin_ascii.asm. Т.е. вырезать из lab1pr5.asm

соответствующий фрагмент, создать файл (Shift+F4) с нужным именем, вставить в созданный файл хранящийся в буфере обмена фрагмент (Ctrl+Insert) и сохранить созданный файл).

2.1.14.Редактирование программы lab1pr5.asm. Вставить в соответствующих местах программы строки с директивами:

include vvod_bwd.asm include as_b_bwd.asm include bin_ascii.asm

2.1.15.Ассемблирование программы lab1pr5.asm с получением объектного модуля (lab1pr5.obj) и листинга (т.е. файла lab1pr5.lst), компоновка и выполнение программы lab1pr5.exe. Продемонстрировать по листингу lab1pr5.lst результат выполнения директив include (вставлен текст соответствующих файлов и сформированы эквивалентные им машинные команды).

2.1.16.Ассемблирование программы, компоновка и выполнение программы lab1pr6.

2.1.17.Проверка правильности решения контрольных примеров:

 

 

 

 

 

 

 

 

Таблица 2.1

№п/п

b1

 

b2

 

w1

w2

d1

d2

1

 

1

 

1

1

1

1

1

2

 

10

 

10

10

10

10

10

3

 

100

 

100

1000

1000

100000

100000

4

 

200

 

200

40000

40000

2000000000

2000000000

2.1.18. Ассемблирование программы, компоновка и выполнение программы lab1pr7. Проверка правильности решения контрольных примеров:

Таблица 2.2

b1

b2

w1

 

w2

 

b1

b2

w1

w2

п/п

 

 

 

 

 

 

п/п

 

 

 

 

1

1

1

-

 

-

 

7

-

-

1000

1000

2

10

10

-

 

-

 

8

-

-

10000

10000

3

100

100

-

 

-

 

9

100

-

10000

-

4

200

200

-

 

-

 

10

2

-

60000

-

5

-

-

 

1

 

1

11

100

-

-

10000

6

-

-

 

10

 

10

12

2

-

-

60000

2.1.19. Ассемблирование программы, компоновка и выполнение программы lab1pr8. Проверка правильности решения контрольных примеров:

9

Таблица 2.3

b1

b2

w1

d1

 

b1

b2

w1

d1

п/п

 

 

 

 

 

п/п

 

 

 

 

1

10

10

-

 

-

8

100

-

1050

-

2

200

10

-

 

-

9

 

 

10

10

3

1

200

-

 

-

10

-

-

10

10000

4

100

-

100

 

-

11

-

-

1

10000

5

100

-

10000

 

-

12

-

-

100

1000000

6

1

-

10000

 

-

13

-

-

100

1000050

7

2

-

7

 

-

 

 

 

 

 

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

(самостоятельная проверка возможностей управления выводом на экран

вбазовой версии DOS)

Впапке C:\assebler\u_m_lab1 создать файл l_1_fio.asm, где fio – инициалы выполняющего работу (первые буквы фамилии, имени и отчества – латинскими буквами).

2.2.1.Проверка действия кодов перевода строки (0ah) и возврата на начало строки (0dh). Редактирование (встроенным редактором оболочки Far) сообщения msg в сегменте данных программы lab1pr1.asm (вставить эти коды перед символом $) и сохранение полученного файла под другим именем: l#pr1fio.asm (здесь fio – инициалы: первые буквы фамилии, имени и отчества).

2.2.2.Ассемблирование, компоновка и выполнение полученной программы (l#pr1fio.asm).

2.2.3.Проверка действия символа $, который в базовой версии MSDOS является признаком окончания сообщения. Редактирование программы l#pr1fio.asm (в сегменте кода убрать команды вывода сообщения msg_e, т.е. строки с 35 по 37 включительно) и сохранение полученного файла под этим же именем: l#pr1fio.asm.

2.2.4.Ассемблирование, компоновка и выполнение полученной программы (l#pr1fio.asm). Убедиться, что сообщение «Для выхода нажмите любую клавишу» на экран не выдается.

2.2.5.Редактирование сообщения msg в сегменте данных программы l#pr1fio.asm (убрать символ $ после этого сообщения) и сохранение полученного файла под этим же именем: l#pr1fio.asm.

2.2.6.Ассемблирование, компоновка и выполнение полученной программы (l#pr1fio.asm). Убедиться, что теперь сообщение «Для выхода нажмите любую клавишу» на экран выдается: идет выдача сообщения msg до тех пор, пока не встречается символ $, а он – за сообщением msg_e.

10

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