![](/user_photo/2706_HbeT2.jpg)
Пильщиков
.pdf280 Программирование на языке ассемблера 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 с.
'ДИАЛОГ-МИФИ-
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj283x1.jpg)
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ |
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 |
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj284x1.jpg)
|
|
|
|
|
|
Оглавление |
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). |
|
|
:ДИАЛОГ-МИФИ•
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj285x1.jpg)
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). |
|
|
|
|
|
|
|
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj286x1.jpg)
|
|
|
|
|
Оглавление |
|
|
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). Вычитание |
двоично- |
|
|
|
:ДИАЛОГ-МИФИ•
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj287x1.jpg)
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 |
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj288x1.jpg)
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. Среда разработки: Учебное пособие
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj289x1.jpg)
Лукин С. Н. Турбо-Паскаль 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. ОСТОРОЖНО: компьютерные ВИРУСЫ
![](/html/2706/295/html_yI4CtYcvkx.jUS3/htmlconvd-HpHjdj290x1.jpg)