Assembler - язык неограниченных возможностей
Assembler - язык неограниченных возможностей
Первый вопрос, который задает себе
Биты, байты и слова
Числа со знаком
Что потребуется для работы с ассемблером
Двоичная система счисления
Коды символов
Логические операции
Организация памяти
Представление данных в компьютерах
Шестнадцатеричная система счисления
Коды символов
Организация памяти
Процессоры Intel в реальном режиме
Адресация по базе с индексированием
Адресация по базе с индексированием и масштабированием
Адресация по базе со сдвигом
Арифметические операции ММХ
Базовая арифметика FPU
Числа с плавающей запятой
Десятичная арифметика
Другие команды
Двоичная арифметика
Исключения FPU
Команды передачи управления
Команды пересылки данных FPU
Команды пересылки данных ММХ
Команды преобразования типов ММХ
Команды сравнения FPU
Команды сравнения ММХ
Команды управления FPU
Команды управления состоянием ММХ
Константы FPU
Косвенная адресация
Косвенная адресация с масштабированием
Логические операции
Логические операции ММХ
Непосредственная адресация
Операции над битами и байтами
Основные непривилегированные команды
Пересылка данных
Прямая адресация
Процессоры Intel в реальном режиме
Расширение AMD 3D
Расширение IА ММХ
Регистр флагов
Регистровая адресация
Регистры FPU
Регистры ММХ
Регистры общего назначения
Регистры процессора
Сдвиговые операции
Сдвиговые операции ММХ
Сегментные регистры
Способы адресации
Стек
Строковые операции
Типы данных FPU
Типы данных ММХ
Трансцендентные операции FPU
Управление флагами
Загрузка сегментных регистров
Директивы и операторы ассемблера
Глава 3. Директивы и операторы ассемблера
Структура программы
Псевдокоманды определения переменных
Структуры
Сегменты
Модели памяти и упрощенные директивы определения сегментов
Порядок загрузки сегментов
Процедуры
Конец программы
Директивы задания набора допустимых команд
Директивы управления программным счетчиком
Глобальные объявления
Условное ассемблирование
Выражения
Макроопределения
Блоки повторений
Макрооператоры
Другие директивы, используемые в макроопределениях
Управление файлами
Управление листингом
Комментарии
Основы программирования для MS-DOS
Чтение и запись в файл
Интерфейс EMS
Интерфейс XMS
Командные параметры и переменные среды
Область памяти HMA
Область памяти UMB
Обычная память
Основы программирования для MS-DOS
Параллельный порт
Поиск файлов
Последовательный порт
Прямая работа с видеопамятью
Программа типа ЕХЕ
Программа типа СОМ
Работа с файлами
Работа с мышью
Работа с SVGA-режимами
Работа с VGA-режимами
Системный таймер
Создание и открытие файлов
Средства BIOS
Средства DOS
Управление файловой системой
Загрузка и выполнение программ
Закрытие и удаление файла
Более сложные приемы программирования
Блочные устройства
Более сложные приемы программирования
Целочисленная арифметика повышенной точности
Часы реального времени и CMOS-память
Циклы
Деление
Динамик
Драйверы устройств в DOS
Джойстик
Генераторы случайных чисел
Клавиатура
Команды DSP
Команды инициализации
Команды управления
Конечные автоматы
Контроллер DMA
Контроллер прерываний
Локальные переменные
Мультиплексорное прерывание
Обработчики прерываний
Параллельный порт
Пассивная резидентная программа
Передача параметров
Передача параметров отложенным вычислением
Передача параметров по имени
Передача параметров по результату
Передача параметров по ссылке
Передача параметров по возвращаемому значению
Передача параметров по значению
Передача параметров в блоке параметров
Передача параметров в глобальных переменных
Передача параметров в потоке кода
Передача параметров в регистрах
Передача параметров в стеке
Перехват прерываний
Полурезидентные программы
Последовательный порт
Повторная входимость
Прерывания от внешних устройств
Процедуры и функции
Программирование на уровне портов ввода-вывода
Регистры графического контроллера (03CEh– 03CFH)
Регистры контроллера атрибутов (03C0h– 03C1h)
Регистры контроллера CRT (03D4h– 03D5H)
Регистры синхронизатора (03C4h– 03C5h)
Регистры VGA DAC (03C6h– 03C9h)
Резидентные программы
Символьные устройства
Сложение и вычитание
Сортировки
Сравнение
Структуры CASE
Структуры IF.. THEN... ELSE
Таймер
Трансцендентные функции
Умножение
Видеоадаптеры VGA
Вложенные процедуры
Вложенные процедуры с дисплеями
Вложенные процедуры со статическими ссылками
Внешние регистры контроллера VGA (03C2h – 03CFh)
Вычисления с фиксированной запятой
Вычисления с плавающей запятой
Выгрузка резидентной программы из памяти
Взаимодействие между процессами
Звуковые платы
Программирование в защищенном режиме
Адресация в защищенном режиме
Функции DPMI управления дескрипторами
Интерфейс DPMI
Интерфейс VCPI
Обработчики прерываний
Передача управления между режимами в DPMI
Переключение в защищенный режим
Пример программы
Программирование в защищенном режиме
Расширители DOS
Способы объединения программы с расширителем
Управление памятью в DPMI
Вывод на экран через линейный кадровый буфер
Программирование для Windows 95 и Windows NT
Диалоги
Динамические библиотеки
Драйверы устройств
Программирование для Windows 95 и Windows NT
Консольные приложения
Меню
Окна
Окно типа MessageBox
Первая программа
Полноценное приложение
Ассемблер и языки высокого уровня
Ассемблер и языки высокого уровня
Передача параметров
Конвенция Pascal
Конвенция С
Смешанные конвенции
Искажение имен
Встроенный ассемблер
Встроенный ассемблер в Pascal
Встроенный ассемблер в С
Оптимизация
Оптимизация
Высокоуровневая оптимизация
Оптимизация на среднем уровне
Вычисление констант вне цикла
Перенос проверки условия в конец цикла
Выполнение цикла задом наперед
Разворачивание циклов
Общие принципы низкоуровневой оптимизации
Основные рекомендации
Команда LEA
Выравнивание
AGI
Обращение к частичному регистру
Префиксы
Выполнение команд
Кэш-память
Очередь предвыборки
Конвейер FPU
Конвейер ММХ
Особенности архитектуры процессоров PentiumPro и Pentium II
Выполнение команд
Кэш-память
Очередь предвыборки
Предсказание переходов
Процессоры Intel в защищенном режиме
Дескрипторы
Машинно-специфичные регистры
Механизм защиты
Модель памяти в защищенном режиме
Нереальный режим
Обработка прерываний и исключений
Отладочные регистры
Переключение задач
Если происходит прерывание или исключение
Пример программы
Процессоры Intel в защищенном режиме
Проверка лимитов
Проверка привилегий
Проверка типа сегмента
Регистры
Регистры управления памятью
Регистры управления процессором
в которой флаг VM регистра
Сегмент состояния задачи
Селектор
Системные флаги
Системные и привилегированные команды
Страничная адресация
Управление задачами
Вход и выход из защищенного режима
В режиме V86 текущий уровень
Выполнение привилегированных команд
Защита на уровне страниц
Программирование на ассемблере в среде UNIX
Программирование на ассемблере в среде UNIX
Синтаксис AT&T
Основные правила
Запись команд
Адресация
Операторы ассемблера
Префиксные, или унарные операторы
Инфиксные, или бинарные операторы
Директивы ассемблера
Директивы определения данных
Директивы управления символами
Директивы определения секций
Директивы управления разрядностью
Директивы управления программным указателем
Директивы управления листингом
Директивы управления ассемблированием
Блоки повторения
Макроопределения
Программирование с использованием libc
Программирование без использования libc
Заключение
Символы ASCII
последовательность блоков процессора, которая задействуется
превращение циклов, выполняющихся известное число
Кодировки второй половины ASCII
Коды символов расширенного ASCII
Команды процессоров Intel 8088– Pentium II
Общая информация о скоростях выполнения
Общий формат команды процессора Intel
Префиксы
В этом приложении приведены скорости
Символы ASCII
Скан-коды клавиатуры
Список используемых сокращений
Управляющие символы ASCII
Значения полей кода команды
Значения поля ModRM
Значения поля SIB