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