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

epd629

.pdf
Скачиваний:
16
Добавлен:
02.05.2015
Размер:
1.05 Mб
Скачать

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Сибирская государственная автомобильно-дорожная академия (СибАДИ)»

Л. Е. Олейник

ЯЗЫКИ

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

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

Часть 3

СДВИГОВЫЕ ОПЕРАЦИИ. ДАННЫЕ СО ЗНАКОМ И БЕЗ ЗНАКА. ВВОД-ВЫВОД НА ДИСК

Омск

СибАДИ

2012

ББК 32.973.2 УДК 681.3.06 О 53

Рецензенты:

д-р физ.-мат. наук, проф. А.К. Гуц (ОмГУ) канд. техн. наук Д.Н. Лавров (ОмГУ)

д-р техн. наук, доц. В.Н.Задорожный (ОмГТУ)

Работа одобрена редакционно-издательским советом академии в качестве учебного пособия.

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

О 53 Языки программирования : учебное пособие: в 15-ти ч. Часть 3 : Сдвиговые операции. Данные со знаком и без знака. Ввод-вывод на диск /

Л. Е. Олейник. Омск : СибАДИ, 2012.– 120 с.

Учебное пособие является третьей частью комплекта пособий из 15-ти частей по курсу «Языки программирования», изучаемому в ФГБОУ ВПО «СибАДИ» по направлению подготовки 230100.62 «Информатика и вычислительная техника», профиль «Автоматизированные системы обработки информации и управления».

Предназначается для студентов очной формы обучения (специалист, бакалавр) при выполнении работ по дисциплинам «Электронные вычислительные машины и периферийные устройства», «Системное программное обеспечение», «Системы реального времени», «Языки программирования» в компьютерных классах и при выполнении индивидуальных заданий на самостоятельную работу; преподавателем при подготовке и проведении работ в компьютерных классе.

Может использоваться желающими самостоятельно изучить программирование на ассемблере.

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

2

© ФГБОУ ВПО «СибАДИ», 2012

3

 

ОГЛАВЛЕНИЕ

 

ВВЕДЕНИЕ........................................................................................................................

4

1.

ЗАДАНИЕ НА ПРОГРАММИРОВАНИЕ (ОБЩАЯ ЧАСТЬ) .......................................

7

2.

РАЗЛИЧИЯ МЕЖДУ ПРОГРАММАМИ В EXE- И COM-ФАЙЛАХ.........................

13

3.

СДВИГИ И ЦИКЛИЧЕСКИЕ СДВИГИ.......................................................................

20

4.

ПРОГРАММИРОВАНИЕ ОБРАБОТКИ ДИСКОВЫХ ФАЙЛОВ..............................

24

5.

АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ НАД ЦЕЛЫМИ ДВОИЧНЫМИ ЧИСЛАМИ

 

СО ЗНАКОМ......................................................................................................................

40

6.

ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ..............................................................................

46

7.

ТИПИЧНЫЕ ОШИБКИ ПРИ ВЫПОЛНЕНИИ РАБОТЫ...........................................

49

ЗАКЛЮЧЕНИЕ……………………………………………………………………………….

Приложение 1. ПРИМЕРЫ (ТЕКСТЫ) ПРОГРАММ......................................................

59

Приложение 2. Пример работы №3...................................................................................

69

Приложение 3. Формулы (3-я работа).............................................................................

890

Приложение 4. Редактирование, ассемблирование и компоновка программы.

..90

Приложение 5. Арифметические и логические операции в микропроцессорах

 

МП8086 и МП80386…………………………….....………………………………..……..93

Приложение 6. Арифметические и логические операции в микропроцессорах

 

МП8086 и МП80386 над числами со знаком…………………………………………..111

4

ВВЕДЕНИЕ

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

Состоит из 15-ти частей, каждая из которых содержит:

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

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

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

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

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

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

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

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

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

 

 

Таблица 1

 

 

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

 

 

 

 

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

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

п/

 

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

 

п

 

 

 

1

2

3

 

1

Определение данных.

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

 

 

Операции двоичной

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

 

 

арифметики. Экранные

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

 

 

операции

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

 

 

 

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

 

 

 

циклы; ввод с клавиатуры и вывод на экран).

 

 

 

EXE-программа (один модуль). ОС- MS-DOS

 

 

 

5

 

 

 

Продолжение табл.1

1

2

3

 

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

Вычисление по формуле

Вычисление по формуле (определение данных;

 

 

(операции двоичной

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

 

 

арифметики и логические

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

 

 

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

ввод с клавиатуры и вывод на экран;

 

 

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

использование стека).

 

 

на экран). Графическое

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

 

 

приложение для Windows

Windows 95/98 и Windows NT. (Модель памяти

 

 

95/98 и Windows NT

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

 

 

 

6

 

 

 

Окончание табл.1

1

2

3

 

10

Смешанное

Смешанное программирование (встроенный

 

 

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

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

 

 

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

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

 

 

языке Pascal;

сдвиги; определение данных; логика и

 

 

ассемблерные врезки в

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

 

 

программу на Pascal’e)

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

 

 

 

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

 

 

 

стека). EXE-программа для МП Intel 8086 на

 

 

 

языке Pascal с вставками на ассемблере. ОС -

 

 

 

MS-DOS

 

11

Смешанное програм-

Смешанное программирование (ассемблер,

 

 

мирование (связь с

встроенный в С++; операции двоичной

 

 

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

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

 

 

C++; ассемблерные

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

 

 

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

с клавиатуры и вывод на экран - средствами

 

 

языке C++)

языка С++; сдвиги – средствами ассемблера).

 

 

 

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

 

 

 

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

 

12

Вычисление по формуле

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

 

 

(операции двоичной

МП Intel 80386, ОС – Linux

 

 

арифметики и

 

 

 

логические операции,

 

 

 

сдвиги; ввод с

 

 

 

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

 

 

 

на экран) в Linux

 

 

13

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

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

 

 

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

драйвер. ОС - MS-DOS

 

14

Работа с дисковыми

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

 

 

файлами (прямой и

несколькими областями DTA. (Назначение

 

 

последовательный

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

 

 

доступ) и несколькими

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

 

 

областями DTA

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

 

 

 

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

 

 

 

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

 

 

 

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

 

 

 

DTA; 3)шифрование; 4) дешифрация). ЕХЕ-

 

 

 

программа (модель памяти– компактная или

 

 

 

большая). ОС- MS-DOS

 

15

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

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

 

 

программ

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

 

 

 

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

 

7

1.ЗАДАНИЕ НА ПРОГРАММИРОВАНИЕ (ОБЩАЯ ЧАСТЬ)

1.1.Составить СОМ-программу для МП Intel 8086 для вычисления по формулам, содержащим арифметические операции сложения, вычитания, умножения и деления и логические операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, НЕ. Формулы вычислений – те, что реализовывались в работах № 1 и 2 (см. уч.пос., ч.1 и 2), и дополнительно – четыре типа операций сдвига.

Варианты используемых операций (сдвигов)

Таблица 1.1

 

 

 

 

 

 

 

 

 

 

Тип сдвига

 

Влево

 

 

Вправо

 

 

Логический

байта

слова

двойного

байта

слова

двойного

 

 

(b)

(w)

слова (d)

(b)

(w)

слова (d)

 

Арифметический

байта

слова

двойного

байта

слова

двойного

 

 

(b)

(w)

слова (d)

(b)

(w)

слова (d)

 

Циклический

байта

слова

двойного

байта

слова

двойного

 

 

(b)

(w)

слова (d)

(b)

(w)

слова (d)

 

Циклический через

байта

слова

двойного

байта

слова

двойного

 

флаг переноса

(b)

(w)

слова (d)

(b)

(w)

слова (d)

 

1.2. Требования к программному средству, в т.ч. указания – для каких процессора и операционной системы оно разрабатывается, какие директивы и команды применяются и т.п., приведены в табл. 1.2.

Таблица 1.2

Полный текст задания

Ассемблер для микропроцессора Intel 8086

Операционная система MS-DOS [1, с.127 128]

Режим работы процессора реальный [1, с.20 60]

Тип программы COM [2, с.39 40; 3, с.123]

Назначение программы вычисление по формуле (арифметические и логические операции и операции сдвига); преобразование ЕХЕ-программы в COM-программу

Модель памяти сверхмалая [1, с.112; 4, с. 45 46], т.е. один сегмент кода,

что соответствует директиве определения модели памяти .tiny [1, с.112]

Модуль lab3_ol.asm (один сегмент кода, содержит и данные – вверху или внизу). Файл lab3_ol.asm получается из файлов lab2_1ol.asm (один сегмент стека, один сегмент данных и один сегмента кода) и lab2_1ol.asm (один сегмент кода) за счет слияния двух сегментов кода и одного сегмента данных в сегмент кода

8

Продолжение табл.1.2

Директивы:

определения сегментов стандартные (полные): segment, ends и assume [1, с.110 112, 4, с..43, 47 51];

-- позже: упрощенные директивы определения сегментов;

определения процедур: proc и endp [2, с.43; 1, с.115];

завершения программы end [1, с.115];

определение данных: байта (db), слова (dw), двойного слова (dd);

определение данных: байта (db), слова (dw), двойного слова (dd), четверного слова (dq) и десяти байтов (dt) [2, с.23 24];

префиксы переопределения типов byte ptr, word ptr, dword ptr [1, с.121]

+и, кроме того, следующие:

директива переопределения equ [1, с.116]

директива org [1, с.116]

директива include [1, с.125]

Команды непривилегированные:

е же, что и во второй лабораторной работе)

передачи данных: mov, lea [2, с.15 17];

--позже: команды lahf, lds, les, sahf, xchg, xlat

арифметические (двоичная арифметика): add, adc, sub, sbb, inc, dec, mul, imul, div, idiv, cbw, cwd [1, с.225; 4, с.63 67];

сравнения cmp [1, с.37; 2, с.19];

безусловного (jmp) и условного (jz, jnz, js, jns) перехода [2, с.27 28];

--позже и самостоятельно: jp, jnp, ja, jna, jg, jge, jl, jle, jcxz, [2, с.27 28]; организации цикла loop [1, с.47 51, 2, с.28; 4, с.74];

--позже и самостоятельно: loopz, loopnz, loope, loopne [2, с.28];

передачи управления (вызова процедур и возврата из процедур) call, ret, int [2, с.27-31];

--позже : iret выход из обработчика прерываний [2, с.29, 1, с.120 121];

--позже: операторы short (8), small (16), large (32) - в лаб. №7 [1, с.120 121];

работы со стеком: push, pop [2, с.27 31]

-- позже и самостоятельно: pushf, popf [2, с.26];

логические: and, or, xor, not, test [2, с.23 24].

+и, кроме того, следующие:

cдвига: логический влево (shl), вправо (shr); арифметический влево (sal), вправо (sar); циклический влево (rol), вправо (ror); циклический через флаг переноса (rcl), вправо (rcr) [2, с.24 - 25];

команды манипуляции флагами (установка и сброс флага): stc, clc

команды условного перехода jc и jnc

команда изменения знака (neg), [2, с.20]

9

Продолжение табл.1.2

Адресация

регистр регистр:

mov ax,bx ; занести (скопировать) в ax содержимое bx [4, с.34]

--позже: mov ax,[bx] ; занести в регистр ax содержимое памяти по адресу из регистра bx [4, с.34-40] в уч. пос., ч.6

mov ax,[25] ; занести (скопировать) в регистр ax содержимое ячейки по смещению 25

mov al,bl ; занести (скопировать) в регистр al содержимое bl mov bx,cx ; занести (скопировать) в регистр bx содержимое cx

регистр память:

mov ax,worda ; занести в регистр ax значение переменной (слова) worda

mov al,bytea; занести в регистр al значение переменной (байта) bytea

mov dx,worda ; занести в регистр dx значение переменной (слова)

worda

память регистр:

mov worda,ax ; занести в ячейку worda содержимое регистра ax (слово)

mov bytea,al ; занести в ячейку bytea содержимое регистра al (байт)

mov worda,cx ; занести в ячейку worda содержимое регистра cx (слово)

регистр непосредственный операнд:

mov ax,25 ; занести в регистр ax значение 25

mov bx,2 ; занести в регистр bx значение 2

mov al,25 ; занести в регистр al значение 25

память непосредственный операнд:

mov worda,25

; занести в ячейку worda значение 25

mov bytea,25

; занести в ячейку bytea значение 25

Использование процедур операционной системы:

е же, что и во второй лабораторной работе)

ввод с клавиатуры [2, с.57 62]

вывод на экран [2, с.63 67]

ввод-вывод на диск (FCB, последовательная запись и чтение; длина записи = 128 байтов при открытии и создании файла;

создание (16h), открытие (0fh),

определение области DTA

(1ah), последовательная запись

(15h), последовательное

чтение (14h), закрытие файла (10h)

 

-- позже: ввод/вывод на диск через дескрипторы [2, с. 48-52];

Дополнительная информация (рассматривается на практических занятиях):

(те же, что и во второй лабораторной работе)

-процессоры Intel в реальном режиме [1, с.20 60];

-последовательность выполнения команд [2, с.12 13];

-структура процессора 8086 [2, с.9, рис. 1.1.2];

-сегментная адресация [2, с.9, рис.1.1.3];

-представление данных в компьютерах [1, с.14 19];

-логика и организация программ:

10

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