Предисловие переводчика | 13 |
|
Предисловие | 14 |
|
1. Введение в семейство компьютеров IBM PC | 17 |
|
|
Введение | 17 |
Биты и байты | 17 |
ASCII-код | 18 |
Двоичные числа | 19 |
Шестнадцатиричное представление | 21 |
Сегменты | 23 |
Регистры | 24 |
Архитектура PC | 27 |
Основные положения на память | 32 |
Вопросы для самопроверки | 32 |
|
2. Машинное исполнение | 34 |
|
|
Введение | 34 |
Начало работы | 34 |
Просмотр памяти | 35 |
Пример машинных кодов: непосредственные данные | 36 |
Пример машинных кодов: определение данных | 40 |
Машинная адресация | 44 |
Пример машинных кодов: определение размера памяти | 45 |
Специальные средства отладчика | 46 |
Основные положения на память | 48 |
Вопросы для самопроверки | 49 |
|
3. Требования языка Ассемблер | 51 |
|
|
Введение | 51 |
Комментарии в программах на Ассемблере | 51 |
Формат кодирования | 52 |
Директивы | 53 |
Память и регистры | 57 |
Инициализация программы | 57 |
Пример исходной программы | 59 |
Основные положения на память | 60 |
Вопросы для самопроверки | 60 |
|
4. Ассемблирование и выполнение программы | 61 |
|
|
Введение | 61 |
Ввод программы | 61 |
Подготовка программы для выполнения | 62 |
Ассемблирование программы | 63 |
Компоновка программы | 66 |
Выполнение программы | 63 |
Пример исходной программы | 70 |
Файл перекрёстных ссылок | 73 |
Основные положения на память | 74 |
Вопросы для самопроверки | 74 |
|
5. Определение данных | 76 |
|
|
Введение | 76 |
Директивы определения данных | 76 |
Директива определения байта (DB) | 80 |
Директива определения слова (DW) | 80 |
Директива определения двойного слова (DD) | 81 |
Директива определения поля из четырёх слов (DQ) | 81 |
Директива определения десяти байтов (DT) | 82 |
Непосредственные операнды | 82 |
Директива (EQU) | 84 |
Основные положения на память | 86 |
Вопросы для самопроверки | 87 |
|
6. Программы в СОМ-файлах | 88 |
|
|
Введение | 88 |
Различия между программами в ЕХЕ- и СОМ-файлах | 88 |
Пример СОМ-программы | 89 |
Стек для СОМ-программы | 91 |
Особенность отладки | 91 |
Основные положения на память | 91 |
Вопросы для самопроверки | 92 |
|
7. Логика и организация программы | 93 |
|
|
Введение | 93 |
Команда JMP | 94 |
Команда LOOP | 96 |
Флаговый регистр | 97 |
Команды условного перехода | 99 |
Процедуры и оператор CALL | 101 |
Сегмент стека | 103 |
Программа: Расширенные операции пересылки | 105 |
Команды логических операций: AND, OR, XOR, TEST, NOT | 108 |
Программа: Замена строчных букв на заглавные | 109 |
Команды сдвига и циклического сдвига | 111 |
Организация программ | 113 |
Основные положения на память | 114 |
Вопросы для самопроверки | 115 |
|
8. Экранные операции I: Основные свойства | 117 |
|
|
Введение | 117 |
Команда прерывания INT | 117 |
Установка курсора | 118 |
Очистка экрана | 119 |
Экранные и клавиатурные операции в базовой версии DOS | 119 |
Вывод на экран в базовой версии DOS | 120 |
Программа: Вывод на экран набора символов ASCII-кода | 120 |
Ввод данных с клавиатуры: базовая версия DOS | 122 |
Программа: Ввод и вывод имён | 123 |
Экранные и клавиатурные операции: Расширенная версия DOS | 128 |
Вывод на экран в расширенной версии DOS | 128 |
Ввод с клавиатуры в расширенной версии DOS | 129 |
Использование символов возврата каретки, перевода |
строки и табуляции для вывода на экран | 131 |
Основные положения на память | 132 |
Вопросы для самопроверки | 132 |
|
9. Экранные операции II: Расширенные возможности | 134 |
|
|
Введение | 134 |
Байт-атрибут | 135 |
Прерывание BIOS INT 10H | 136 |
Программа: Мигание, инверсия, прокрутка | 140 |
Расширенный ASCII-код | 143 |
Другие операции ввода-вывода в DOS | 144 |
Ввод с клавиатуры по команде BIOS INT 16H | 145 |
Функциональные клавиши | 146 |
Основные положения на память | 148 |
Вопросы для самопроверки | 149 |
|
10. Экранные операции III: Цвет и графика | 150 |
|
|
Введение | 150 |
Текстовой (алфавитно-цифровой) режим | 151 |
Графический режим | 152 |
Режим средней разрешающей способности | 153 |
Программа: Вывод в цветном графическом режиме | 155 |
Основные положения на память | 156 |
Вопросы для самопроверки | 156 |
|
11. Команды обработки строк | 157 |
|
|
Введение | 157 |
Особенности команд обработки строк | 157 |
REP: Префикс повторения команды | 158 |
MOVS: Пересылка строки | 159 |
LODS: Загрузка строки | 160 |
STOS: Запись строки | 161 |
CMPS: Сравнение строк | 161 |
SCAS: Сканирование строки | 164 |
Сканирование и замена | 165 |
Альтернативное кодирование | 166 |
Дублирование образца | 166 |
Программа: Выравнивание справа при выводе на экран | 167 |
Основные положения на память | 167 |
Вопросы для самопроверки | 170 |
|
12. Арифметические операции I: Обработка двоичных данных | 172 |
|
|
Введение | 172 |
Сложение и вычитание | 172 |
Беззнаковые и знаковые данные | 176 |
Умножение | 177 |
Сдвиг регистровой пары DX:AX | 183 |
Деление | 184 |
Преобразование знака | 188 |
Процессоры Intel 8087 и 80287 для математических операций | 189 |
Основные положения на память | 189 |
Вопросы для самопроверки | 190 |
|
13. Арифметические операции II: Обработка данных в форматах |
ASCII и BCD | 191 |
|
|
Введение | 191 |
ASCII-формат | 191 |
Двоично-десятичный формат (BCD) | 197 |
Преобразование ASCII-формата в двоичный формат | 199 |
Преобразование двоичного формата в ASCII-формат | 202 |
Сдвиг и округление | 202 |
Программа: Преобразование времени и расценки работ для расчёта |
заработной платы | 203 |
Основные положения на память | 210 |
Вопросы для самопроверки | 210 |
|
14. Обработка таблиц | 212 |
|
|
Введение | 212 |
Определение таблиц | 212 |
Прямой табличный доступ | 214 |
Табличный поиск | 215 |
Транслирующая команда XLAT | 220 |
Программа: Вывод шестнадцатиричных и ASCII-кодов | 221 |
Программа: Сортировка элементов таблицы | 224 |
Операторы типа, длины и размера | 228 |
Основные положения на память | 229 |
Вопросы для самопроверки | 229 |
|
15. Дисковая память I: Организация | 231 |
|
|
Введение | 231 |
Ёмкость диска | 232 |
Оглавление диска | 232 |
Таблица распределения файлов (FAT) | 234 |
Основные положения на память | 236 |
Вопросы для самопроверки | 237 |
|
16. Дисковая память II: Функции базовой версии DOS | 238 |
|
|
Введение | 238 |
Блок управления файлом FCB | 239 |
Использование блока FCB для создания дискового файла | 240 |
Программа: Использование FCB для создания файла на диске | 242 |
Последовательное чтение дискового файла | 246 |
Программа: Использование FCB для чтения дискового файла | 248 |
Прямой доступ | 251 |
Программа: Прямое чтение дискового файла | 253 |
Прямой блочный доступ | 257 |
Программа: Прямое блочное чтение | 258 |
Абсолютные операции дискового ввода-вывода | 258 |
Другие дисковые операции | 262 |
Программа: Выборочное удаление файлов | 264 |
Основные положения на память | 266 |
Вопросы для самопроверки | 267 |
|
17. Дисковая память III: Функции расширенной версии DOS | 269 |
|
|
Введение | 269 |
Данные в формате ASCIIZ | 269 |
Файловый номер и коды возврата | 270 |
Создание дискового файла | 270 |
Программа: Использование файлового номера для создания файла | 272 |
Чтение дискового файла | 276 |
Программа: Использование файлового номера для чтения файла | 277 |
Файлы в формате ASCII | 277 |
Другие дисковые функции в расширенной версии DOS | 282 |
Основные положения на память | 289 |
Вопросы для самопроверки | 289 |
|
18. Дисковая память IV: Функции BIOS | 290 |
|
|
Введение | 290 |
Дисковые операции в BIOS | 290 |
Байт состояния | 292 |
Программа: Использование BIOS для чтения секторов | 293 |
Основные положения на память | 293 |
Вопросы для самопроверки | 296 |
|
19. Печать | 297 |
|
|
Введение | 297 |
Символы управления печатью | 298 |
Функции печати в расширенной версии DOS | 298 |
Программа: Постраничная печать с заголовками | 299 |
Печать ASCII-файлов и табуляция | 302 |
Печать под управлением базовой версии DOS | 307 |
Специальные команды принтера | 307 |
Печать с помощью BIOS INT 17H | 308 |
Основные положения на память | 310 |
Вопросы для самопроверки | 310 |
|
20. Макрокоманды | 311 |
|
|
Введение | 311 |
Простое макроопределение | 311 |
Использование параметров в макрокомандах | 312 |
Комментарии в макрокомандах | 316 |
Использование макрокоманд внутри макроопределения | 318 |
Директива LOCAL | 318 |
Использование библиотек макроопределений | 319 |
Конкатенация (&') | 322 |
Директивы повторения: REPT, IRP и IRPC | 322 |
Условные директивы | 324 |
Директива выхода EXITM | 325 |
Макрокоманды, использующие директивы IF и IFNDEF | 326 |
Макрокоманды, использующие директиву IFIDN | 326 |
Основные положения на память | 330 |
Вопросы для самопроверки | 330 |
|
21. Связь между подпрограммами | 331 |
|
|
Введение | 331 |
Межсегментные вызовы | 332 |
Атрибуты EXTRN и PUBLIC | 333 |
Программа: Использование директив EXTRN и PUBLIC для меток | 335 |
Программа: Использование директивы PUBLIC в кодовом сегменте | 337 |
Программа: Общие данные в подпрограмме | 340 |
Передача параметров | 343 |
Компоновка программ на БЕЙСИК-интерпретаторе и Ассемблере | 346 |
Компоновка программ на языках ПАСКАЛЬ и Ассемблер | 352 |
Компоновка программ на языках СИ и Ассемблер | 354 |
Основные положения на память | 355 |
Вопросы для самопроверки | 355 |
|
22. Программный загрузчик | 357 |
|
|
Введение | 357 |
Командный процессор COMMAND.COM | 358 |
Префикс программного сегмента | 359 |
Выполнение СОМ-программы | 361 |
Выполнение ЕХЕ-программы | 362 |
Пример ЕХЕ-программы | 364 |
Функция загрузки и выполнения программ | 366 |
|
23. Прерывания BIOS и DOS | 369 |
|
|
Введение | 369 |
Обслуживание прерываний | 369 |
Прерывания BIOS | 371 |
Прерывания DOS | 373 |
Функции прерывания DOS INT 21Н | 374 |
Резидентные программы | 376 |
Порты | 380 |
Генерация звука | 381 |
|
24. Справочник по директивам языка Ассемблер | 384 |
|
|
Введение | 384 |
Индексная адресация памяти | 384 |
Операторы языка Ассемблер | 385 |
Директивы Ассемблера | 388 |
|
25. Справочник по командам языка Ассемблер | 400 |
|
|
Введение | 400 |
Обозначение регистров | 400 |
Байт способа адресации | 401 |
Двухбайтовые команды | 403 |
Трёхбайтовые команды | 403 |
Четырёхбайтовые команды | 403 |
Команды в алфавитном порядке | 404 |
|
Приложения | 429 |
|
|
Приложение 1: Коды ASCII-символов | 429 |
Приложение 2: Шестнадцатирично-десятичные преобразования | 430 |
Приложение 3: Зарезервированные слова | 432 |
Приложение 4: Режимы ассемблирования и компоновки | 433 |
|
Ответы на некоторые вопросы | 437 |