Ассемблер и программная модель процессоров x86/64, Жуков А.В., 2024.
Книга является практическим пособием по программной модели процессоров 180x86/64. Простейшие элементы этой модели (переменные, константы, методы адресации и система команд) изучаются с помощью ассемблера а86, отладчика d86. 32-битные возможности i80x86, включая защищенный режим, вентили, исключения и прерывания, привилегии, страничное преобразование, исключения, LDT и TSS, а также 64-битные режимы процессора х64 с исключениями и прерываниями в long mode излучаются с использованием ассемблера nasm.
Электронный архив на сайте издательства содержит исходные тексты примеров и необходимые для работы файлы.

Вызов а86.
Транслятор а86 вызывается просто: в командной строке набираем а86 и имя исходного файла. Если ошибок нет, то а86 создаст одноименные файлы с расширениями сот и sym. Файл сот — это исполняемый модуль, а sym-файл содержит символьную информацию для отладчика d86: таблицу имен и макроопределения.
Если а86 обнаружит ошибку в исходном тексте, он копирует входной файл в файл с расширением old. а затем вставляет сообщения прямо в исходный текст по месту. (Одна из уникальных особенностей ассемблера а86.) Каждое сообщение занимает две строки: первая отмечает позицию ошибки, вторая объясняет причину.
ОГЛАВЛЕНИЕ.
Предисловие.
Примечания.
ЧАСТЬ I. РЕАЛЬНЫЙ РЕЖИМ.
Глава 1. Установка программ.
Установка и настройка Bochs.
Формирование образа диска.
Настройка отладочного варианта Bochs.
Примечания.
Глава 2. Программирование данных.
Вызов a86.
Программирование последовательностей.
Программирование bmp-файла.
Примечания.
Глава 3. Данные, имена и типы.
Структура программы.
Директивы определения данных.
Обозначение чисел.
Символические обозначения чисел, выражения.
Переменные и метки.
Типы имен.
Типы и выражения.
Алгоритм трансляции.
Повторное определение имен.
Локальные имена.
Предопределенные имена.
Имя end.
Примечания.
Глава 4. Способы адресации.
Данные процессора.
Обозначения операндов машинных команд.
Способы адресации операндов.
Регистровая и непосредственная адресация.
Адресация данных в памяти.
Прямая адресация.
Косвенная адресация.
Ограничение на адресацию операндов в памяти.
Примечания.
Глава 5. Система команд i8086.
Способы адресации операндов.
Регистровая, непосредственная и прямая адресация.
Косвенная адресация.
Косвенная адресация по значению одного регистра.
Косвенная адресация по сумме значений двух регистров.
Обзор системы команд.
Команды пересылки.
Арифметические команды.
Логические команды.
Команды сдвигов и вращений.
Команды передачи управления.
Адресация в командах передачи управления.
Команды условных переходов.
Воздействие команд на флаги.
Строковые команды.
Примечания.
Глава 6. Программирование циклов.
Поиск в массиве байтов.
Поиск в массиве слов.
Поиск байта со значением больше заданного.
Подсчет байтов в заданном диапазоне значений.
Алгоритмическое решение.
Табличное решение.
Примечания.
Глава 7. Примеры программ.
Обработка данных на уровне битов.
Программирование ввода-вывода.
Опережающие ссылки.
Упаковка четырехбитовых кодов.
Задания на составление программ.
Задания первого уровня сложности.
Варианты заданий.
Задания второго уровня сложности.
Примечания.
Глава 8. Математический сопроцессор.
Окно FPU в d86.
Загрузка и выгрузка данных.
Порядок двуместных операций.
Организация ветвлений.
Признаки в слове состояния.
Настройки FPU.
Форматы действительных чисел.
Внутренний формат данных FPU.
Стандартные форматы вещественных чисел.
Операции FPU.
Пересылки.
Загрузка данных.
Команды выгрузки.
Команда обмена.
Арифметические операции.
Основные арифметические операции.
Операции над знаковым битом.
Округление до целого.
Получение остатка от деления.
Извлечение корня.
Масштабирование.
Операции сравнения и тестирования.
Тригонометрические операции.
Возведение в степень.
Возведение числа 2 в целую степень.
Возведение числа 2 в дробную степень.
Вычисление целой и дробной частей значения степени.
Возведение числа 2 в произвольную степень.
Вычисление логарифмов.
Команды управления.
Сохранение и восстановление состояния.
Задачи.
Примечания.
Глава 9. Сегменты.
Эффективный адрес.
Базовый адрес и сегментные регистры.
Перепрограммирование сегментных регистров.
Регистр es.
Регистр ss.
Регистр cs.
Регистр ds.
Повторный запуск резидентной программы.
Программные секции.
Префикс переназначения сегмента.
Задачи.
Примечания.
Глава 10. Исключения.
Таблица векторов.
Векторные вызовы.
Исключения и прерывания.
Ассемблер nasm.
Отладочные исключения.
Примечания.
Глава 11. Внешние прерывания.
Системный таймер.
Клавиатура.
Часы реального времени.
Примечания.
Глава 12. 32-битовые данные и адреса.
Префиксы размерности операнда и адреса.
Косвенная адресация через 32-битовые регистры.
Новые команды.
Примечания.
ЧАСТЬ II. ЗАЩИЩЕННЫЙ РЕЖИМ.
Глава 13. Код в защищенном режиме.
Опыты с дескрипторами и защитой памяти.
Первые опыты с привилегиями.
Переключение сегментов кода и вентили вызова.
Обратное переключение режима.
Примечания.
Глава 14. Данные и стек.
Дескрипторы данных.
Дескриптор стека.
Режим unreal.
Адресная линия A20.
Привилегии сегментов данных.
Примечания.
Глава 15. Исключения и прерывания.
Дескрипторы прерываний и исключений.
Коды ошибок для исключений.
Внешние прерывания.
Поле IOPL в регистре флагов.
Примечания.
Глава 16. LDT и TSS.
Дескрипторы LDT.
Программное переключение контекста.
Дескрипторы TSS.
Примечания.
Глава 17. Преобразование адресов.
Первый вариант трансляции адресов.
Вариант PSE.
Вариант PAE.
Плоская модель памяти.
Примечания.
Глава 18. Привилегии.
Изменение уровня привилегий.
Вызов привилегированной процедуры.
Обращение к портам ввода-вывода.
Привилегии при страничном отображении.
Примечания.
ЧАСТЬ III. 64-БИТОВЫЕ РЕЖИМЫ.
Глава 19. Переход в режим совместимости.
Переход в режимы long.
Особенности режима совместимости.
Примечания.
Глава 20. Переход в 64-битовый режим.
Загрузчик ld0.
Применимость 64-битовых данных.
Примечания.
Глава 21. Особенности 64-битового режима.
64-битовые операнды.
Относительная адресация и перемещаемость.
Селекторы fs и gs.
Системные вызовы.
Сегмент задачи в 64-битовом режиме.
Обработка прерываний в 64-битовом режиме.
Примечания.
Послесловие.
ПРИЛОЖЕНИЯ.
Приложение 1. Компиляция Bochs.
Подготовка к компиляции для Windows и Linux.
Компиляция для Windows.
Компиляция для Linux.
Примечания.
Приложение 2. Инструментальные программы FreeDOS.
Файловый менеджер.
Текстовый редактор edit.
Редактор памяти e32.
Форматы отображения данных в d86.
Приложение 3. Дополнительные опыты с FPU.
Команда fisttp.
Формат BCD.
Прерывания от i80x87.
Синхронизация процессора и сопроцессора.
Расширение MMX.
Примечания.
Приложение 4. Ошибки в a86/a386.
Ошибки в a86.
Ошибки в a386.
Приложение 5. Описание электронного архива.
Список источников.
Предметный указатель.
Купить .
Теги: учебник по программированию :: программирование :: Жуков :: ассемблер








