Assembler для DOS, Windows и UNIX
Зубков С.В.
В книге освещаются все аспекты современного программирования на ассемблере для DOS, Windows 95/NT и UNIX (Solaris, Linux и FreeBSD), включая создание резидентных программ и драйверов, прямое программирование периферийных устройств, управление защищенным режимом и многое другое. Детально рассматривается архитектура процессоров Intel вплоть до Pentium III. Все главы иллюстрируются подробными примерами работоспособных программ.
Издание ориентировано как на профессионалов, так и на начинающих без опыта программирования.
Серия: «Для программистов».
М.: ДМК Пресс, 2000.
ISBN 5-89818-082-6, 5-94074-259-9
Количество страниц: 608.
Содержание книги «Assembler для DOS, Windows и UNIX»:
- 11 Введение
- 13 Глава 1. Предварительные сведения
- 13 1.1. Что нужно для работы с ассемблером
- 14 1.2. Представление данных в компьютерах
- 14 1.2.2. Двоичная система счисления
- 15 1.2.2. Биты, байты и слова
- 16 1.2.3. Шестнадцатеричная система счисления
- 17 1.2.4. Числа со знаком
- 18 1.2.5. Логические операции
- 18 1.2.6. Коды символов
- 19 1.2.7. Организация памяти
- 20 Глава 2. Процессоры Intel в реальном режиме
- 20 2.1. Регистры процессора
- 20 2.1.1. Регистры общего назначения
- 22 2.1.2. Сегментные регистры
- 22 2.1.3. Стек
- 23 2.1.4. Регистр флагов
- 24 2.2. Способы адресации
- 24 2.2.1. Регистровая адресация
- 25 2.2.2. Непосредственная адресация
- 25 2.2.3. Прямая адресация
- 25 2.2.4. Косвенная адресация
- 26 2.2.5. Адресация по базе со сдвигом
- 26 2.2.6. Косвенная адресация с масштабированием
- 27 2.2.7. Адресация по базе с индексированием
- 27 2.2.8. Адресация по базе с индексированием и масштабированием
- 28 2.3. Основные непривилегированные команды
- 28 2.3.1. Пересылка данных
- 34 2.3.2. Двоичная арифметика
- 38 2.3.3. Десятичная арифметика
- 41 2.3.4. Логические операции
- 43 2.3.5. Сдвиговые операции
- 45 2.3.6. Операции над битами и байтами
- 47 2.3.7. Команды передачи управления
- 54 2.3.8. Строковые операции
- 57 2.3.9. Управление флагами
- 59 2.3.10. Загрузка сегментных регистров
- 59 2.3.11. Другие команды
- 63 2.4. Числа с плавающей запятой
- 63 2.4.1. Типы данных FPU
- 65 2.4.2. Регистры FPU
- 67 2.4.3. Исключения FPU
- 68 2.4.4. Команды пересылки данных FPU
- 70 2.4.5. Базовая арифметика FPU
- 74 2.4.6. Команды сравнения FPU
- 76 2.4.7. Трансцендентные операции FPU
- 78 2.4.8. Константы FPU
- 78 2.4.9. Команды управления FPU
- 82 2.5. Расширение IA MMX
- 82 2.5.1. Регистры MMX
- 83 2.5.2. Типы данных MMX
- 83 2.5.3. Команды пересылки данных MMX
- 84 2.5.4. Команды преобразования типов MMX
- 85 2.5.5. Арифметические операции MMX
- 88 2.5.6. Команды сравнения MMX
- 88 2.5.7. Логические операции MMX
- 89 2.5.8. Сдвиговые операции MMX
- 90 2.5.9. Команды управления состоянием MMX
- 90 2.5.10. Расширение AMD 3D
- 91 2.6. Расширение SSE
- 91 2.6.1. Регистры SSE
- 92 2.6.2. Типы данных SSE
- 92 2.6.3. Команды SSE
- 105 2.6.4. Определение поддержки SSE
- 105 2.6.5. Исключения
- 20 2.1. Регистры процессора
- 106 Глава 3. Директивы и операторы ассемблера
- 106 3.1. Структура программы
- 108 3.2. Директивы распределения памяти
- 108 3.2.1. Псевдокоманды определения переменных
- 109 3.2.2. Структуры
- 110 3.3. Организация программы
- 110 3.3.1. Сегменты
- 112 3.3.2. Модели памяти и упрощенные директивы определения сегментов
- 114 3.3.3. Порядок загрузки сегментов
- 115 3.3.4. Процедуры
- 115 3.3.5. Конец программы
- 116 3.3.6. Директивы задания набора допустимых команд
- 116 3.3.7. Директивы управления программным счетчиком
- 117 3.3.8. Глобальные объявления
- 118 3.3.9. Условное ассемблирование
- 120 3.4. Выражения
- 121 3.5. Макроопределения
- 123 3.5.1. Блоки повторений
- 124 3.5.2. Макрооператоры
- 124 3.5.3. Другие директивы, используемые в макроопределениях
- 125 3.6. Другие директивы
- 125 3.6.1. Управление файлами
- 125 3.6.2. Управление листингом
- 126 3.6.3. Комментарии
- 127 Глава 4. Основы программирования для MS DOS
- 128 4.1. Программа типа COM
- 130 4.2. Программа типа EXE
- 131 4.3. Вывод на экран в текстовом режиме
- 131 4.3.1. Средства DOS
- 134 4.3.2. Средства BIOS
- 139 4.3.3. Прямая работа с видеопамятью
- 140 4.4. Ввод с клавиатуры
- 140 4.4.1. Средства DOS
- 148 4.4.2. Средства BIOS
- 151 4.5. Графические видеорежимы
- 151 4.5.1. Работа с VGA-режимами
- 155 4.5.2. Работа с SVGA-режимами
- 166 4.6. Работа с мышью
- 171 4.7. Другие устройства
- 171 4.7.1. Системный таймер
- 178 4.7.2. Последовательный порт
- 181 4.7.3. Параллельный порт
- 182 4.8. Работа с файлами
- 183 4.8.1. Создание и открытие файлов
- 186 4.8.2. Чтение и запись в файл
- 187 4.8.3. Закрытие и удаление файла
- 188 4.8.4 Поиск файлов
- 192 4.8.5. Управление файловой системой
- 193 4.9. Управление памятью
- 193 4.9.1. Обычная память
- 195 4.9.2. Область памяти UMB
- 195 4.9.3. Область памяти HMA
- 196 4.9.4. Интерфейс EMS
- 197 4.9.5. Интерфейс XMS
- 202 4.10. Загрузка и выполнение программ
- 208 4.11. Командные параметры и переменные среды
- 212 Глава 5. Более сложные приемы программирования
- 212 5.1. Управляющие структуры
- 212 5.1.1. Структуры IF...THEN ...ELSE
- 213 5.1.2. Структуры CASE
- 214 5.1.3. Конечные автоматы
- 215 5.1.4. Циклы
- 216 5.2. Процедуры и функции
- 216 5.2.1. Передача параметров
- 221 5.2.2. Локальные переменные
- 222 5.3. Вложенные процедуры
- 222 5.3.1. Вложенные процедуры со статическими ссылками
- 223 5.3.2. Вложенные процедуры с дисплеями
- 224 5.4. Целочисленная арифметика повышенной точности
- 225 5.4.1. Сложение и вычитание
- 225 5.4.2. Сравнение
- 226 5.4.3. Умножение
- 227 5.4.4. Деление
- 228 5.5. Вычисления с фиксированной запятой
- 228 5.5.1. Сложение и вычитание
- 228 5.5.2. Умножение
- 229 5.5.3. Деление
- 229 5.5.4. Трансцендентные функции
- 233 5.6. Вычисления с плавающей запятой
- 238 5.7. Популярные алгоритмы
- 238 5.7.1. Генераторы случайных чисел
- 242 5.7.2. Сортировки
- 245 5.8. Перехват прерываний
- 246 5.8.1. Обработчики прерываний
- 249 5.8.2. Прерывания от внешних устройств
- 253 5.8.3. Повторная входимость
- 256 5.9. Резидентные программы
- 256 5.9.1. Пассивная резидентная программа
- 262 5.9.2. Мультиплексорное прерывание
- 276 5.9.3. Выгрузка резидентной программы из памяти
- 292 5.9.4. Полурезидентные программы
- 297 5.9.5. Взаимодействие между процессами
- 305 5.10. Программирование на уровне портов ввода-вывода
- 305 5.10.1. Клавиатура
- 309 5.10.2. Последовательный порт
- 315 5.10.3. Параллельный порт
- 316 5.10.4. Видеоадаптеры VGA
- 331 5.10.5. Таймер
- 335 5.10.6. Динамик
- 336 5.10.7. Часы реального времени и CMOS-память
- 339 5.10.8. Звуковые платы
- 359 5.10.9. Контроллер DMA
- 366 5.10.10. Контроллер прерываний
- 371 5.10.11. Джойстик
- 374 5.11. Драйверы устройств в DOS
- 375 5.11.1. Символьные устройства
- 384 5.11.2. Блочные устройства
- 212 5.1. Управляющие структуры
- 388 Глава 6. Программирование в защищенном режиме
- 388 6.1. Адресация в защищенном режиме
- 391 6.2. Интерфейс VCPI
- 394 6.3. Интерфейс DRMI
- 394 6.3.1. Переключение в защищенный режим
- 395 6.3.2. Функции DRMI управления дескрипторами
- 396 6.3.3. Передача управления между режимами DRMI
- 398 6.3.4. Обработчики прерываний
- 399 6.3.5. Пример программы
- 403 6.4. Расширители DOS
- 403 6.4.1. Способы объединения программы с расширителем
- 405 6.4.2. Управление памятью в DPMI
- 406 6.4.3. Вывод на экран через линейный кадровый буфер
- 413 Глава 7. Программирование для Windows 95/NT
- 413 7.1. Первая программа
- 416 7.2. Консольные приложения
- 421 7.3. Графические приложения
- 421 7.3.1. Окно типа MessageBox
- 422 7.3.2. Окна
- 427 7.3.3. Меню
- 431 7.3.4. Диалоги
- 436 7.3.5. Полноценное приложение
- 451 7.4. Динамические библиотеки
- 457 7.5. Драйверы устройств
- 460 Глава 8. Ассемблер и языки высокого уровня
- 460 8.1. Передача параметров
- 460 8.1.1. Конвенция Pascal
- 461 8.1.2. Конвенция C
- 463 8.1.3. Смешанные конвенции
- 463 8.2. Искажение имен
- 463 8.3. Встроенный ассемблер
- 464 8.3.1. Ассемблер, встроенный в Pascal
- 464 8.3.2. Ассемблер, встроенный в C
- 460 8.1. Передача параметров
- 465 Глава 9. Оптимизация
- 465 9.1. Высокоуровневая оптимизация
- 465 9.2. Оптимизация на среднем уровне
- 466 9.2.1. Вычисление констант вне цикла
- 466 9.2.2. Перенос проверки условия в конец цикла
- 466 9.2.3. Выполнение цикла задом наперед
- 467 9.2.4. Разворачивание циклов
- 468 9.3. Низкоуровневая оптимизация
- 468 9.3.1. Общие принципы низкоуровневой оптимизации
- 471 9.3.2. Особенности архитектуры процессоров Pentium и Pentium MMX
- 472 9.3.3. Особенности архитектуры процессоров Pentium Pro и Pentium II
- 476 Глава 10. Процессоры Intel в защищенном режиме
- 476 10.1. Регистры
- 476 10.1.1. Системные флаги
- 477 10.1.2. Регистры управления памятью
- 478 10.1.3. Регистры управления процессором
- 480 10.1.4. Отладочные регистры
- 481 10.1.5. Машинно-специфичные регистры
- 482 10.2. Системные и привилегированные команды
- 488 10.3. Входи выход из защищенного режима
- 490 10.4. Сегментная адресация
- 490 10.4.1. Модель памяти в защищенном режиме
- 491 10.4.2. Селектор
- 491 10.4.3. Дескрипторы
- 493 10.4.4. Пример программы
- 497 10.4.5. Нереальный режим
- 499 10.5. Обработка прерываний и исключений
- 509 10.6. Страничная адресация
- 516 10.7. Механизм защиты
- 516 10.7.1. Проверка лимитов
- 517 10.7.2. Проверка типа сегмента
- 517 10.7.3. Проверка привилегий
- 518 10.7.4. Выполнение привилегированных команд
- 519 10.7.5. Защита на уровне страниц
- 519 10.8. Управление задачами
- 519 10.8.1. Сегмент состояния задачи
- 521 10.8.2. Переключение задач
- 527 10.9. Режим виртуального 8086
- 527 10.9.1. Прерывания в V86
- 528 10.9.2. Ввод-вывод в V86
- 476 10.1. Регистры
- 529 Глава 11. Программирование на ассемблере в среде UNIX
- 530 11.1. Синтаксис AT&T
- 530 11.1.1. Основные правила
- 531 11.1.2. Запись команд
- 532 11.1.3. Адресация
- 533 11.2. Операторы ассемблера
- 533 11.2.1. Префиксные, или унарные, операторы
- 533 11.2.2. Инфиксные, или бинарные, операторы
- 534 11.3. Директивы ассемблера
- 534 11.3.1. Директивы определения данных
- 535 11.3.2. Директивы управления символами
- 535 11.3.3. Директивы определения секций
- 536 11.3.4. Директивы управления разрядностью
- 536 11.3.5. Директивы управления программным указателем
- 536 11.3.6. Директивы управления листингом
- 537 11.3.7. Директивы управления ассемблированием
- 537 11.3.8. Блоки повторения
- 538 11.3.9. Макроопределения
- 538 11.4. Программирование с использованием libc
- 540 11.5. Программирование без использования libc
- 543 11.6. Переносимая программа для UNIX
- 530 11.1. Синтаксис AT&T
- 558 Заключение
- 559 Приложение 1. Таблицы символов
- 559 1. Символы ASCII
- 560 2. Управляющие символы ASCII
- 561 3. Кодировки второй половины ASCII
- 564 4. Коды символов расширенного ASCII
- 565 5. Скан-коды клавиатуры
- 567 Приложение 2. Команды Intel 80x86
- 567 1. Общая информация о кодах команд
- 567 1.1. Общий формат команды процессора Intel
- 567 1.2. Значения полей кода команды
- 568 1.3. Значения поля ModRM
- 569 1.4. Значения поля SIB
- 570 2. Общая информация о скоростях выполнения
- 571 3. Префиксы
- 572 4. Команды процессоров Intel 8088 - Pentium III
- 567 1. Общая информация о кодах команд
- 595 Используемые сокращения
- 599 Глоссарий
- 602 Алфавитный указатель
Инструкция как скачать книгу Зубков С.В.: Assembler для DOS, Windows и UNIX в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Рейтинг книги:
0 голосов
8