Table of contents : Обложка Титульная страница исходного издания Выходные сведения Предисловие Благодарность ЧАСТЬ I. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА Глава 1. Введение Изучение языка ассемблера Преимущества языка ассемблера Недостатки языка ассемблера Требования к аппаратному обеспечению Требования к программному обеспечению Пользователям Microsoft Windows Как пользоваться этой книгой Как подготовить ваши диски Использование гибких дисков Ввод исходных текстов программ Резюме Упражнения Глава 2. Первые шаги Основные части программы на ассемблере Ассемблирование программы Понимание объектного кода Опции командной строки Обработка ошибок Введение в Turbo Debugger Написание СОМ- и ЕХЕ-программ Распечатка листингов программ Резюме Упражнения Задания Глава 3. Двоичные биты Все о памяти Сколько битов содержится в байте? Двоичная арифметика и логика Счет в двоичной системе Двоичные и шестнадцатеричные числа Запись значения в дополнительном коде Логические операторы Сдвиги и циклические сдвиги Резюме Упражнения Задания Глава 4. Программирование на языке ассемблера Сегментация памяти Регистры процессора 8086 Основные группы команд процессора Команды передачи данных Арифметические команды Логические команды Команды управления потоком Команды управления процессором Команды для работы со строками Резюме Упражнения Задания Глава 5. Простые структуры данных Адресация данных в памяти Способы адресации памяти Выражения и операторы Простые переменные Инициализированные и неинициализированные данные Строковые переменные Локальные метки Пакет для работы с ASCIIZ-строками Программирование по частям Пакет для ввода-вывода строк Компоновка модулей в программу Изучение модуля STRINGS Резюме Упражнения Задания Глава 6. Сложные структуры данных Структуры Еще о числовых переменных Массивы в языке ассемблера Объединения и записи Эффективные логические операции Использование заранее указываемых макроопределений Выполнение VERSION Преобразования чисел и строк Программирование преобразователя между различными системами счисления Резюме Упражнения Задания Глава 7. Ввод и вывод Стандартный ввод и вывод Написание DOS-фильтров Печать текста Использование видеопамяти Модуль для работы с видеопамятью Модуль управления клавиатурой Резюме Упражнения Задания Глава 8. Макросы и условное ассемблирование Что такое макрос Преимущества и недостатки макросов Создание макросов Удаление макросов Подстановка параметров Макросы и переменные Макросы и код Условная компиляция Запуск библиотеки макросов DOS Резюме Упражнения Задания Глава 9. Работа с дисковыми файлами Понятие о дескрипторах файлов Общие представления о дисках и файлах Максимальное количество файлов Открытие и закрытие файлов Заполнение файловых буферов Закрытие файлов Обработка дисковых ошибок Создание новых файлов Чтение командной строки DOS Чтение и запись текстовых файлов Чтение и запись файлов данных Чтение каталога диска Резюме Упражнения Задания Глава 10. Обработка прерываний Мы прерываем эту программу Написание процедур обработки прерываний Маскируемые и немаскируемые прерывания Векторы прерываний и микросхема 8259 Почему команда hit не останавливает программу Обработка прерываний Внедрение в прерывание часов PC Команда окончания прерывания Прерывания и стеки Использование команд int и into Отлавливание прерывания ошибки деления Исправление ошибки деления Установка обработчика ошибки деления Установка кода TSR в памяти Прерывания, управляющие последовательным обменом Отладка с прерываниями Пошаговое выполнение Резюме Упражнения Задания Глава 11. Дополнительные темы Углубление ваших знаний ассемблера Двоично-кодированные десятичные числа (BCD) Математическая библиотека для работы с BCD Отдельные дополнительные директивы Обработка таблиц Жесткий способ определения сегментов Директива SEGMENT Директива ASSUME Директива GROUP Использование сегментов в программах Дальние сегменты данных Программирование 80286 и старших моделей профессоров Программирование процессора 80386 Директива VERSION Перечисляемые типы данных Становимся SMART (ушлыми) Некоторые дополнительные команды Резюме Упражнения Задания ЧАСТЬ II. ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ Глава 12. Использование языка ассемблера при программировании на Pascal Возможность усовершенствования Выявление критичных участков программы (критичного кода) Преобразование программы на Pascal к ассемблерному коду Внешние процедуры и функции Модель памяти Pascal Вызов процедур Pascal Демонстрационный пример Адресация данных кодового сегмента Адресация констант с определенным типом Вызов функций Pascal Адресация переменных Pascal Вызов внешних функций Передача параметров Использование модели памяти TPASCAL Использование директивы ARG Написание внешних строчных функций Проблема быстродействия Резюме Упражнения Задания Глава 13. Использование языка ассемблера при программировании на С и C++ Применение С и C++ совместно с языком ассемблера Определение критичного кода Использование регистров Ассемблерные операторы Inline Разделение данных Внешние программы на ассемблере Вызов ассемблерных функций из С Ассемблирование и компоновка внешних модулей Отладка многоязыковых программ Вызов функций С из языка ассемблера Результаты выполнения функции Локальные переменные Вызов функций C++ из ассемблера Передача аргументов функции Использование классов C++ с языком ассемблера Резюме Упражнения Задания Глава 14. Программирование с объектами Объектно-ориентированное программирование (ООП) посредством TASM Для чего используется ООП Основы объектов TASM Полиморфизм Другие узкие места и "завлекалочки" ООП Резюме Упражнения Задания Глава 15. Программирование для Windows Введение в программирование для Windows с применением TASM Развитие прикладных программ для Windows с использованием TASM Резюме Упражнения Задания ЧАСТЬ III. СПРАВОЧНИК Глава 16. Справочное руководство по ассемблеру О справочнике Инструкции защищенного режима Обращение к источнику Распределение времени для инструкций и двоичное кодирование Как пользоваться справочником Глава 17. Справочник по Turbo Assembler Символы Операторы Эквиваленты режимов Директивы Библиография Оглавление