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

Пильщиков

.pdf
Скачиваний:
156
Добавлен:
09.05.2015
Размер:
6.35 Mб
Скачать

280 Программирование на языке ассемблера IBM PC Глава 1

пример, 10b - это 10 в двоичной системе, a 10d - это 10 в десятичной системе; шестнадцатеричные же числа 10В и 10D надо записывать как 10Bh и 10Dh.

Примеры:

•RADIX 16

 

MOV АХ,10

;AX:-10h«16

MOV AX,10d

;AX:«10

MOV AX,1ODh

;AX:-10Dh-269

•RADIX 10

;десятичяое 10 (1)

MOV AX,10

;AX:=10

MOV AX,lOh

;AX:=10h=16

NAME <имя

модуля>

По этой директиве указанное имя (от него берется 6 первых символов) присваивается текущему модулю программы и используется компоновщиком в диагностических сообщениях в случае обнаружения ошибок при объединении модулей программы: это имя указывается в скобках после имени файла с данным модулем. (В других целях это имя не используется.)

Например, если в модуле имеется директива NAME MODI и если в оттранслированном виде модуль находится в файле PROG.OBJ, тогда возможно такое сообщение об ошибке на этапе компоновки (об имени DDD, указанном в данном модуле как внешнее, но не описанном как общее в других модулях):

Unresolved externals: DDD in file(s) PROG.OBJ(MOD1)

В модуле должно быть не более одной директивы NAME. Если ее нет, в качестве имени модуля берутся первые б символов из текста, указанного в директиве TITLE, а если и ее нет, модулю дается имя А.

СПИСОК ЛИТЕРАТУРЫ

1.Брэдли Д. Программирование на языке ассемблера для персональной ЭВМ фирмы IBM: Пер. в англ. - М.: Радио и связь, 1988. - 448 с.

2.Скэнлон JI. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера: Пер. с англ. - М.: Радио и связь, 1991. - 336 с.

3.Абель П. Язык Ассемблера для IBM PC и программирования: Пер. с англ. - М.: Высшая школа, 1992. - 477 с.

4.Нортон П., Сохуэ Д. Я <ык ассемблера для IBM PC: Пер. с англ. - М.: Издательство "Компькчср"; Финансы и статистика, 1992. - 352 с.

5.Использование Turbo Assembler при разработке программ. - Киев: "Диалектика", 1994. 288 с.

6.Лямин Д. В. Макрот. с мблер MASM. - М.: Радио и связь, 1994. - 320 с.

'ДИАЛОГ-МИФИ-

ОГЛАВЛЕНИЕ

ПРЕДИСЛОВИЕ

3

Глава 1

 

 

 

 

ОСОБЕННОСТИ ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА

5

1Л.

Оперативная память

6

1.2.

Регистры

7

 

Регистры общего назначения (8). Сегментные регистры (9).

 

 

 

 

 

Указатель команд (11). Регистр флагов (11).

 

 

 

 

1.3.

Представление данных

12

 

Представление целых чисел (12). Двоично-десятичные числа (15).

 

 

 

 

 

О вещественных числах (16). Представление символьных

 

 

 

 

 

данных (16).

 

 

 

 

1.4.

Представление команд

17

Глава 2

 

 

 

 

ЯЗЫК АССЕМБЛЕРА. НАЧАЛЬНЫЕ СВЕДЕНИЯ

 

 

20

2.1.

Лексемы

21

 

Идентификаторы (21). Целые числа (21). Символьные данные (22).

 

 

 

 

2.2.

Предложения

 

 

23

 

Комментарии (23). Команды (24). Директивы (25). Ссылки назад

 

 

 

 

 

и вперед (26).

 

 

 

 

2.3.

Директивы определения данных

26

 

Директива DB (26). Директива DW (31). Директива DD (33).

 

 

 

 

2.4.

Директивы эквивалентности и присваивания

34

2.5.

Выражения

 

 

38

 

Константные выражения (39). Адресные выражения (40).

 

 

 

 

Глава

3

 

 

 

 

 

 

 

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

42

3.1.

Обозначение операндов команд

42

3.2.

Команды пересылки

42

 

Команда MOV (42). Оператор указания типа (PTR) (44). Команда

 

 

 

 

 

XCHG (46).

 

 

 

 

3.3.

Команды сложения и вычитания

47

 

Особенности сложения и вычитания целых чисел в ПК (47).

 

 

 

 

 

Команды сложения и вычитания (50).

 

 

 

 

3.4.

Команды умножения и деления

53

 

Команды умножения (53). О команде умножения в процессорах

 

 

 

 

 

80186 и старше (54). Команды деления (55).

 

 

 

 

3.5.

Изменение размера числа

57

3.6.

Примеры

59

 

 

 

 

 

 

Оглавление

2ВЗ

Глава

4

 

 

 

 

 

 

 

ПЕРЕХОДЫ. ЦИКЛЫ

 

 

 

 

 

63

4.1.

Безусловный переход. Оператор SHORT

 

63

 

Прямой переход (63). Оператор SHORT (65). Косвенный

 

 

 

переход (66).

 

 

 

 

 

 

 

4.2.

Команды сравнения и условного перехода

 

67

4.3.

Команды управления циклом

 

 

 

70

 

Команда

LOOP

(71).

Команды

LOOPE/LOOPZ

 

 

 

и LOOPNE/LOOPNZ (73).

 

 

 

 

 

4.4.

Вспомогательные операции ввода-вывода

 

 

 

74

 

Останов программы

(75). Ввод

с клавиатуры (75). Вывод

 

 

 

на экран (76).

 

 

 

 

 

 

 

4.5.

Примеры

 

 

 

 

 

77

Глава

5

 

 

 

 

 

 

 

МАССИВЫ. СТРУКТУРЫ

 

 

 

 

83

5.1.

Об индексах элементов массива

 

 

 

83

5.2.

Реализация переменных с индексом

 

 

 

84

 

Модификация адресов (84). Индексирование (85). Косвенные

 

 

 

ссылки (86). Модификация по нескольким регистрам (87).

 

 

 

Запись модифицируемых адресов в ЯА (88).

 

 

 

5.3.

Команды LEA и XLAT

 

 

 

 

90

 

Команда LEA

90

 

 

 

 

 

 

 

Команда XLAT 92

 

 

 

 

 

 

5.4.

Структуры

 

 

 

 

 

...92

 

Описание типа структуры (92). Описание

переменных-струк-

 

 

 

тур (94). Ссылки на поля структур (96). Уточнения (96).

 

 

5.5.

Примеры

 

 

 

 

 

98

Глава

б

 

 

 

 

 

 

 

БИТОВЫЕ ОПЕРАЦИИ. УПАКОВАННЫЕ ДАННЫЕ

 

104

6.1.

Логические команды

 

 

 

 

104

6.2.

Команды сдвига

 

 

 

 

 

107

 

Логические сдвиги (108). Арифметические сдвиги (109).

 

 

 

Циклические сдвиги (110). Команды сдвига в процессорах 80186

 

 

 

и старше (112).

 

 

 

 

 

 

6.3.

Упакованные данные

 

 

 

 

112

6.4.

Множества

 

 

 

 

 

116

 

Машинное представление множеств (116). Реализация операций

 

 

 

над множествами (117).

 

 

 

 

 

6.5.

Записи

 

 

 

 

 

118

 

Описание типа записи (118). Описание переменных-записей

 

 

 

(119). Средства для работы с полями записей (120).

 

 

:ДИАЛОГ-МИФИ•

284

Программирование на языке ассемблера IBM PC Глава 1

 

 

 

 

 

 

Глава 7

 

 

 

 

 

 

 

 

 

 

 

 

ПРОГРАММНЫЕ СЕГМЕНТЫ

 

 

122

7.1.

Сегментирование адресов в ПК

 

 

122

 

Общая схема базирования адресов (122). Особенности

 

сегментирования адресов в ПК (123). Сегментные регистры по

 

умолчанию (126).

 

 

 

 

 

 

 

7.2.

Программные сегменты

 

 

129

7.3.

Директива ASSUME

 

 

133

7.4.

Начальная загрузка сегментных регистров

 

138

7.5.

Структура программы. Директива INCLUDE

 

139

Глава 8

 

 

 

 

 

 

 

 

 

 

 

 

СТЕК

 

 

 

 

 

 

 

 

142

8.1.

Стек и сегмент стека

 

 

142

8.2.

Стековые команды

 

 

143

 

Запись и чтение слов (143).

Запись и

чтение

регистра

 

флагов (145). Стековые команды процессора 80186 (145).

8.3. Некоторые приемы работы со стеком

 

 

146

8.4.

Пример использования стека

 

 

148

Глава 9

 

 

 

 

 

 

 

 

 

 

 

 

ПРОЦЕДУРЫ

 

 

 

 

 

 

 

150

9.1.

Дальние переходы

 

 

 

 

 

 

 

150

9.2.

Подпрограммы-процедуры

 

 

152

 

Где

размещать подпрограмму?

(153).

Как

оформлять

 

подпрограмму? (153). Вызов процедур и возврат из них (154).

 

Другие варианты команды CALL (157).

 

 

 

 

 

 

9.3.

Передача параметров через регистры

 

 

 

 

157

 

Передача параметров по значению (158). Передача параметров по

 

ссылке (158). Сохранение регистров в процедуре (159). Передача

 

параметров сложных типов (160).

 

 

 

 

 

 

 

9.4.

Передача параметров через стек

 

 

 

 

161

9.5.

Локальные данные процедур

 

 

164

9.6.

Рекурсивные процедуры

 

 

 

 

166

Глава

10

 

 

 

 

 

 

 

 

 

 

 

 

ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ

 

 

169

10.1. Строковые команды. Префиксы повторения

 

169

 

Команда сравнения строк (169). Префиксы повторения (171).

 

Другие строковые команды (175). Команды загрузки адресных

 

пар в регистры (177).

 

 

 

 

 

 

 

10.2. Строки переменной длины

 

 

178

10.3. Списки

 

 

 

 

 

 

 

181

 

Представление списков (181). Операции над списками (183).

 

Организация кучи (186).

 

 

 

 

 

 

 

 

 

 

 

 

Оглавление

 

 

2ВЗ

Глава

11

 

 

 

 

 

 

 

 

МАКРОСРЕДСТВА

 

 

 

 

 

 

 

190

11.1. Макроязык

 

 

 

190

11.2. Блоки повторения

 

 

 

191

 

REPT-блоки (191). lRP-блоки (192). IRPC-блоки (194).

 

 

 

 

Макрооператоры (194).

 

 

 

 

 

 

11.3. Макросы

(198).

 

(199).

198

 

Макроопределения

Макрокоманды

 

 

 

 

Макроподстановки и макрорасширения (200). Примеры

 

 

 

 

использования макросов (200). Макросы и процедуры (203).

 

 

 

 

Определение макроса через макрос (205). Директива LOCAL 206

 

 

 

 

Директива EXITM

208

208

 

 

 

 

 

Переопределение и отмена макросов

 

 

 

 

11.4. Условное ассемблирошшис

 

 

209

 

Директивы IF и 11 1

(210). Операторы отношения. Логические

 

 

 

 

операторы (213). Директивы IFIDN, IFDIF, IFB и IFNB (215).

 

 

 

Глава

12

 

 

 

 

 

 

 

 

МНОГОМОДУЛЬНЫЕ ПРОГРАММЫ

 

 

219

12.1. Работа в системе MASM

 

 

 

220

12.2. Модули. Внешние и общие имена

 

 

223

 

Структура модуле!!. Локализация имен (223). Внешние и общие

 

 

 

 

имена. Директивы EXTRN и PUBLIC (224). Сегментирование

 

 

 

 

внешних имен (226). Доступ к внешним именам (227). Пример

 

 

 

 

многомодульной программы (229).

 

 

 

 

 

12.3. Параметры директивы SEGMENT

 

 

230

 

Параметр "класс" (231). Параметр "объединение" (232). Параметр

 

 

 

 

"выравнивание" (235).

 

 

 

 

 

 

Глава

13

 

 

 

 

 

 

 

 

ВВОД-ВЫВОД. ПРЕРЫВАНИЯ

 

 

 

237

13.1.

Команды ввода-вывода

 

 

 

237

13.2. Прерывания. Функции DOS

 

 

239

 

Прерывания (239). Функции DOS (241). Некоторые функции

 

 

 

 

прерывания 21 h (243).

 

 

 

 

 

 

13.3. Операции ввода-вывода

 

 

 

 

 

245

 

Схема хранения и подключения операций ввода-вывода (246).

 

 

 

 

Текст файла IOPROC.ASM (247). Текст файла IO.ASM (253).

 

 

 

Глава 14

 

 

 

 

 

 

ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ

 

 

258

14.1.

Двоично-десятичные числа

 

 

,.258

 

Представление двоично-десятичных и ASCn-чисел (258).

 

 

 

 

Сложение двоично-десятичных чисел

(259). Вычитание

двоично-

 

 

 

:ДИАЛОГ-МИФИ•

280

Программирование на языке ассемблера IBM PC

 

 

 

десятичных чисел (263). Умножение и деление двоично-

 

 

 

десятичных чисел (264).

 

 

14.2. Дополнительные команды ПК

266

14.3. Дополнительные операторы

268

14.4. Директивы управления листингом

271

14.5. Директивы контроля за работой ассемблера

273

 

Директива %OUT (273). Дополнительные IF-директивы (273).

 

 

 

Условная генерация ошибок (274).

 

 

14.6. Дополнительные директивы

276

 

Указание типа процессора и набора команд (276). Группы

 

 

 

сегментов (277). Изменение счетчика размещения (278). Другие

 

 

 

директивы (279).

 

 

СПИСОК ЛИТЕРАТУРЫ

281

ОГЛАВЛЕНИЕ

 

 

282

e-mail: dialog@bitex.ru http://www.bitex.ru/~dialog

Тел. 320-43-77, 320-43-55, факс: 320-31-33

а ш ш ш ш ш ш ^ ш ш ш ш а ш ш а ш ш ш ш а ш ш ш ш ш й ш

Архипенков С. Я. Аналитические системы на базе Oracle Express OLAP

Баженова И. Ю. SQLWindows. SAL - язык приложений баз данных с архитектурой клиент/сервер

Баженова И. Ю. Язык программирования Java

Баженова И. Ю. Visual С++6.0

Баженова И. Ю. Visual FoxPro С++6.0 Бартеньев О. В. Современный Фортран

Бартеньев О. В. Фортран для студентов Бартеньев О. В. Visual Fortran: новые возможности

Березин Б. И., Березин С. Б. Начальный курс С и С++ Брой М. ИНФОРМАТИКА: В 4-х ч.

Ч.1. Основополагающее введение

Ч.2 . Вычислительные структуры и машинно-ориентированное программ.

Ч.3. Структуры систем и системное программирование

Волгин В. В. Автозаботы, автопроблемы

Гусева А. И. Технология межсетевых взаимодействий. NetWar - Unix - Windows - Internet

Гусева А. И. Учимся программировать: PASCAL 7.0. Задачи и методы их решения. -

2-е изд., перераб. и доп.

Гусева А. И. Учимся информатике: задачи и методы их решения

Сергей Дунаев INTRANET-технологии. WebDBC. CGI. CORBA 2.0. Netscape. Suite.

Borland. IntraBuilder. Java. JavaScript LiveWire

Сергей Дунаев. UNIX-сервер. Настройка, конфигурирование, работа в операционной среде, Internet-возможности: В 2-х томах

Сергей Дунаев. Доступ к базам данных и техника работы в сети

Елманова Н. 3. Borland C++Builder 3.0. Архитектура "клиент/сервер", многозвенные

системы и Internet-приложения

Елманова Н. 3., Трепалин С. В. Delphi 4: технология COM. OLE, ActiveX, Автоматизация MIDAS, Microsoft Transaction Server

Елманова H. 3., Кошель С. П. Введение в C++Builder 4

Епанешников А., Епанешников В. Программирование в среде TURBO PASCAL 7.0. -

4-е изд., испр. и дополн.

Епанешников А., Епанешников В.

Программирование в среде DELPHI 2.0: Учебное пособие: В 4-х ч.

Ч.1. Описание среды

Ч.2. Язык Object Pascal 9.0

Ч.3. Проектирование программ

Ч.4. Работа с базами данных. Организация справочной системы

Епанешников А., Епанешников В. DELPHI 4. Среда разработки: Учебное пособие

Лукин С. Н. Турбо-Паскаль 7.0. Самоучитель для начинающих

Маклаков С. В. BPwin и ERwin. CASE-средства разработки информац. систем

Медведев В. С., Потемкин В. Г. Control System Toolbox. MATLAB 5 для студентов

Пильщиков В. Н. Программирование на языке АССЕМБЛЕРА

Полищук А.В., Полищук В.В. A u t o C A D 2 0 0 0 Полковникова Е. В., Полковников А. В.

Планирование и управление проектом с использованием TIME LINE Потемкин В. Г., Рудаков П. И. Система MATLAB 5 для студентов. - 2-е изд Потемкин В. Г. Система инженерных и научных расчетов MATLAB 5.x: В 2-х томах

Том 14. Графический интерфейс GDI В MICROSOFT WINDOWS Том 15. Мультимедиа для WINDOWS. Руководство программиста Том 20. Операционная система IBM OS/2 WARP

Том 22. Операционная система WINDOWS 95

Том 23. ГЛОБАЛЬНЫЕ СЕТИ КОМПЬЮТЕРОВ. Практическое введение

в Internet, E-Mail, FTP, WWW и HTML, программирование для Windows Sockets Том 24. Microsoft Visual С++ и MFC. Программирование для Windows 95 и Windows NT.

Часть 1

Том 25. Программирование для IBM OS/2 Warp. Часть 1 Том 26. Программирование для Windows NT. Часть 1 Том 27. Программирование для Windows NT. Часть 2

Том 28. Microsoft Visual С++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2

Том 30. Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 1 Том 31. Разработка приложений для Internet. Microsoft Visual С++ и MFC. (В среде

Windows 95 и Windows NT)

Том 32. Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 2

Том 2. Операционная система MICROSOFT WINDOWS. Руководство пользователя Том 4. ЧТО ВЫ ДОЛЖНЫ ЗНАТЬ О СВОЕМ КОМПЬЮТЕРЕ Том 5. ОСТОРОЖНО: компьютерные ВИРУСЫ

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