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. Исключения
  • 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. Блочные устройства
  • 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
  • 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
  • 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
  • 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
  • 595 Используемые сокращения
  • 599 Глоссарий
  • 602 Алфавитный указатель

Инструкция как скачать книгу Зубков С.В.: Assembler для DOS, Windows и UNIX в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Assembler для DOS, Windows и UNIX
Рейтинг книги:
0 голосов
8

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: