Главная » 2012»Январь»19 » Язык ассемблера для процессоров Intel, 4-е издание
17:34
Язык ассемблера для процессоров Intel, 4-е издание
В основу четвертого издания этой книги положено описание архитектуры процессоров фирмы Intel, называемой IA-32, сделанное с точки зрения программиста. По сравнению с третьим изданием, книга полностью переписана, и теперь основной акцент в ней сделан на создании 32-разрядных приложений для системы Windows. Ее отличает последовательный и методически грамотный подход к изложению материала. Материал данной книги подобран в соответствии с ее первоначальным замыслом - научить студентов писать и отлаживать программы на уровне машинных кодов. Она никогда не заменит собой полноценный учебник по архитектуре компьютеров, но позволит студентам получить из первых рук бесценный опыт в написании программ и продемонстрирует, как на самом деле работает компьютер.
Название: Язык ассемблера для процессоров Intel, 4-е издание Автор: Кип Р. Ирвин Издательство: Вильямс Год: 2005 Страниц: 893 Формат: DJVU Размер: 23,4 МБ ISBN: 5-8459-0779-9 Качество: Хорошее
Содержание:
Предисловие Цели книги Особенности книги Структура книги Дополнительные материалы Благодарности От издательства Глава 1. Основные понятия 1.1. Значение языка ассемблера 1.1.1. Несколько интересных вопросов 1.1.2. Прикладные программы на языке ассемблера 1.1.3. Контрольные вопросы раздела 1.2. Концепция виртуальной машины 1.2.1. История развития языков ассемблера для ПК 1.2.2. Контрольные вопросы раздела 1.3. Представление данных 1.3.1. Двоичные числа 1.3.2. Сложение двоичных чисел 1.3.3. Размер памяти, необходимый для хранения целых чисел 1.3.4. Шестнадцатеричные числа 1.3.5. Целые числа со знаком 1.3.6. Представление символьных данных 1.3.7. Контрольные вопросы раздела 1.4. Логические (булевы) операции 1.4.1. Таблицы истинности для булевых функций 1.4.2. Контрольные вопросы раздела 1.5. Резюме Глава 2. Структура процессоров семейства IA-32 2.1. Основные понятия 2.1.1. Основы проектирования микропроцессорных систем 2.1.2. Цикл выполнения команды 2.1.3. Чтение из памяти 2.1.4. Как запустить программу 2.1.5. Контрольные вопросы раздела 2.2. Устройство процессоров семейства IA-32 2.2.1. Режимы работы процессора 2.2.2. Основные элементы процессора 2.2.3. Математический сопроцессор 2.2.4. История развития микропроцессоров фирмы Intel 2.2.5. Контрольные вопросы раздела 2.3. Адресация памяти в семействе процессоров IA-32 2.3.1. Реальный режим адресации 2.3.2. Защищенный режим 2.3.3. Контрольные вопросы раздела 2.4. Компоненты микрокомпьютеров семейства IA-32 2.4.1. Системная плата 2.4.2. Видеоадаптер 2.4.3. Память 2.4.4. Порты ввода-вывода 2.4.5. Контрольные вопросы раздела 2.5. Система ввода-вывода 2.5.1. Как же это все работает? 2.5.2. Контрольные вопросы раздела 2.6. Резюме Глава 3. Основы ассемблера 3.1. Основные элементы языка ассемблера 3.1.1. Целочисленные константы 3.1.2. Целочисленные выражения 3.1.3. Вещественные константы 3.1.4. Символьные константы 3.1.5. Строковые константы 3.1.6. Зарезервированные слова 3.1.7. Идентификаторы 3.1.8. Директивы 3.1.9. Команды 3.1.10. Контрольные вопросы раздела 3.2. Пример: сложение трех целых чисел 3.2.1. Листинг программы 3.2.2. Результат выполнения программы 3.2.3. Описание программы 3.2.4. Стандартная заготовка программы 3.2.5. Контрольные вопросы раздела 3.3. Трансляция, компоновка и запуск программ 3.3.1. Цикл трансляции, компоновки и выполнения 3.3.2. Контрольные вопросы раздела 3.4. Определение данных 3.4.1. Внутренние типы данных 3.4.2. Оператор определения данных 3.4.3. Определение переменных типа BYTE и SBYTE 3.4.4. Определение переменных типа WORD и SWORD 3.4.5. Определение переменных типа DWORD и SDWORD 3.4.6. Определение переменных типа QWORD 3.4.7. Определение переменных типа TBYTE 3.4.8. Определение переменных вещественного типа 3.4.9. Прямой и обратный порядок следования байтов 3.4.10. Добавление переменных в программу AddSub 3.4.11. Объявление участков неинициализированных данных 3.4.12. Контрольные вопросы раздела 3.5. Символические константы 3.5.1. Директива присваивания 3.5.2. Определение размера массивов и строк 3.5.3. Директива EQU 3.5.4. Директива TEXTEQU 3.5.5. Контрольные вопросы раздела 3.6. Программирование для реального режима адресации (дополнительный материал) 3.6.1. Основные отличия 3.7. Резюме 3.8. Упражнения по программированию 3.8.1. Вычитание трех целых чисел 3.8.2. Определение данных 3.8.3. Символические целые константы 3.8.4. Символические текстовые константы Глава4. Пересылка данных, адресация памяти и целочисленная арифметика 4.1. Команды пересылки данных 4.1.1. Введение 4.1.2. Типы операндов 4.1.3. Операнды с непосредственно заданным адресом 4.1.4. Команда MOV 4.1.5. Команды расширения целых чисел 4.1.6. Команды LAHF и SAHF 4.1.7. Команда XCHG 4.1.8. Операнды с непосредственно заданным смещением 4.1.9. Пример программы (Moves.asm) 4.1.10. Контрольные вопросы раздела 4.2. Сложение и вычитание 4.2.1. Команды INC и DEC 4.2.2. Команда ADD 4.2.3. Команда SUB 4.2.4. Команда N EG 4.2.5. Реализация арифметических выражений 4.2.6. Флаги, устанавливаемые арифметическими командами 4.2.7. Пример программы (Add Sub 3.asm) 4.2.8. Контрольные вопросы раздела 4.3. Операторы и директивы для работы с данными 4.3.1. Оператор OFFSET 4.3.2. Директива ALIGN 4.3.3. Оператор PTR 4.3.4. Оператор TYPE 4.3.5. Оператор LENGTHOF 4.3.6. Оператор SIZEOF 4.3.7. Директива LABEL 4.3.8. Контрольные вопросы раздела 4.4. Косвенная адресация 4.4.1. Косвенные операнды 4.4.2. Массивы 4.4.3. Операнды с индексом 4.4.4. Указатели 4.4.5. Контрольные вопросы раздела 4.5. Команды JMP и LOOP 4.5.1. Команда JMP 4.5.2. Команда LOOP 4.5.3. Суммирование элементов массива целых чисел 4.5.4. Копирование строк 4.5.5. Контрольные вопросы раздела 4.6. Резюме 4.7. Упражнения по программированию 4.7.1. Флаг переноса 4.7.2. Команды INC и DEC 4.7.3. Флаги нуля и знака 4.7.4. Флаг переполнения 4.7.5. Операнды с непосредственно заданным смещением 4.7.6. Числа Фибоначчи 4.7.7. Арифметическое выражение 4.7.8. Копирование строк с реверсированием порядка следования символов Глава 5. Процедуры 5.1. Введение 5.2. Использование внешней библиотеки объектных модулей 5.2.1. Предварительные сведения 5.2.2. Контрольные вопросы раздела 5.3. Библиотека объектных модулей автора книги 5.3.1. Общие сведения 5.3.2. Подробное описание процедур 5.3.3. Программа тестирования библиотечных процедур 5.3.4. Контрольные вопросы раздела 5.4. Операции со стеком 5.4.1. Стековая организация памяти 5.4.2. Команды PUSH и POP 5.4.3. Контрольные вопросы раздела 5.5. Определение и использование процедур 5.5.1. Директива PROC 5.5.2. Команды CALL и RET 5.5.3. Пример: суммирование элементов массива целых чисел 5.5.4. Блок-схемы программ 5.5.5. Сохранение и восстановление регистров 5.5.6. Контрольные вопросы раздела 5.6. Использование процедур при разработке программ 5.6.1. Разработка программы суммирования целых чисел 5.6.2. Контрольные вопросы раздела 5.7. Резюме 5.8. Упражнения по программированию 5.8.1. Вывод цветного текста 5.8.2. Ввод массива целых чисел 5.8.3. Простое сложение (вариант 1) 5.8.4. Простое сложение (вариант 2) 5.8.5. Случайные числа 5.8.6. Случайные строки 5.8.7. Случайный вывод на экран 5.8.8. Матрица цветов Глава 6. Условные вычисления 6.1. Введение 6.2. Булевы операции и команды сравнения 6.2.1. Флаги состояния процессора 6.2.2. Команда AND 6.2.3. Команда OR 6.2.4. Команда XOR 6.2.5. Команда NOT 6.2.6. Команда TEST 6.2.7. Команда CMP 6.2.8. Установка и сброс отдельных флагов состояния процессора 6.2.9. Контрольные вопросы раздела 6.3. Команды условного перехода 6.3.1. Условные логические структуры 6.3.2. Команды Jcond 6.3.3. Типы команд условного перехода 6.3.4. Применение команд условного перехода 6.3.5. Команды для работы с отдельными битами (дополнительныйматериал) 6.3.6. Контрольные вопросы раздела 6.4. Команды для организации условных циклов 6.4.1. Команды LOOPZ и LOOPE 6.4.2. Команды LOOPNZ и LOOPNE 6.4.3. Контрольные вопросы раздела 6.5. Логические структуры языков высокого уровня 6.5.1. Операторы IF, имеющие блочную структуру 6.5.2. Составные выражения 6.5.3. Циклы WHILE 6.5.4. Использование таблиц адресов 6.5.5. Контрольные вопросы раздела 6.6. Применение теории конечных автоматов 6.6.1. Проверка правильности вводимых строк 6.6.2. Проверка целых чисел со знаком 6.6.3. Контрольные вопросы раздела 6.7. Использование директивы .IF (дополнительный материал) 6.7.1. Сравнение целых чисел со знаком и без него 6.7.2. Составные выражения 6.7.3. Директивы .REPEAT и .WHILE 6.8. Резюме 6.9. Упражнения по программированию 6.9.1. Использование команды LOOPZ в программе ArrayScan 6.9.2. Реализация цикла 6.9.3. Программа оценки знаний (версия 1) 6.9.4. Программа оценки знаний (версия 2) 6.9.5. Программа записи на курсы (версия 1) 6.9.6. Программа записи на курсы (версия 2) 6.9.7. Логический калькулятор (версия 1) 6.9.8. Логический калькулятор (версия 2) 6.9.9. Взвешенные вероятности Глава 7. Целочисленная арифметика 7.1. Введение 7.2. Команды простого и циклического сдвигов 7.2.1. Логические и арифметические сдвиги 7.2.2. Команда SHL 7.2.3. Команда SHR 7.2.4. Команды SAL и SAR 7.2.5. Команда ROL 7.2.6. Команда ROR 7.2.7. Команды RCL и RCR 7.2.8. Команды SHLD и SHRD 7.2.9. Контрольные вопросы раздела 7.3. Применение команд простого и циклического сдвига 7.3.1. Сдвиг нескольких двойных слов 7.3.2. Быстрое умножение двоичных чисел 7.3.3. Отображение битов двоичного числа 7.3.4. Выделение битовой строки 7.3.5. Контрольные вопросы раздела 7.4. Команды умножения и деления 7.4.1. Команда MUL 7.4.2. Команда IMUL 7.4.3. Команда DIV 7.4.4. Деление целых чисел со знаком 7.4.5. Реализация арифметических выражений 7.4.6. Контрольные вопросы раздела 7.5. Сложение и вычитание чисел с произвольной точностью 7.5.1. Команда ADC 7.5.2. Пример сложения чисел с произвольной точностью 7.5.3. Команда SBB 7.5.4. Контрольные вопросы раздела 7.6. Арифметические операции с упакованными десятичными числами и ASCII-строками (дополнительный материал) 7.6.1. Команда AAA 7.6.2. Команда AAS 7.6.3. Команда ААМ 7.6.4. Команда AAD 7.6.5. Упакованные десятичные целые числа 7.7. Резюме 7.8. Упражнения по программированию 7.8.1. Процедура сложения больших целых чисел 7.8.2. Процедура вычитания больших целых чисел 7.8.3. Процедура ShowFileTime 7.8.4. Сдвиг группы двойных слов 7.8.5. Быстрое умножение 7.8.6. Наибольший общий делитель (НОД) 7.8.7. Программа проверки простых чисел 7.8.8. Преобразование упакованных десятичных чисел Глава 8. Профессиональные методики программирования 8.1. Введение 8.2. Локальные переменные 8.2.1. Директива LOCAL 8.2.2. Контрольные вопросы раздела 8.3. Стековые параметры 8.3.1. Директива INVOKE 8.3.2. Директива PROC 8.3.3. Директива PROTO 8.3.4. Передача параметров по значению и по ссылке 8.3.5. Классификация параметров 8.3.6. Пример: обмен значений двух переменных 8.3.7. Методики поиска ошибок в программах 8.3.8. Контрольные вопросы раздела 8.4. Стековые фреймы 8.4.1. Модели памяти 8.4.2. Описатели языка программирования высокого уровня 8.4.3. Непосредственный доступ к параметрам в стеке 8.4.4. Передача аргументов по ссылке 8.4.5. Создание локальных переменных 8.4.6. Команды ENTER и LEAVE (дополнительный материал) 8.4.7. Контрольные вопросы раздела 8.5. Рекурсия 8.5.1. Рекурсивное вычисление суммы 8.5.2. Вычисление факториала 8.5.3. Контрольные вопросы раздела 8.6. Создание многомодульных программ 8.6.1. Пример: программа ArraySum 8.6.2. Контрольные вопросы раздела 8.7. Резюме 8.8. Упражнения по программированию 8.8.1. Обмен целых чисел 8.8.2. Процедура DumpMem 8.8.3. Нерекурсивное вычисление факториала 8.8.4. Сравнение программ вычисления факториала 8.8.5. Наибольший общий делитель (НОД) Глава 9. Строки и массивы 9.1. Введение 9.2. Команды обработки строковых примитивов 9.2.1. Команды MOVSB, MOVSW и MOVSD 9.2.2. Команды CMPSB, CMPSW и CMPSD 9.2.3. Команды SCASB, SCASW и SCASD 9.2.4. Команды STOSB, STOSW и STOSD 9.2.5. Команды LODSB, LODSW и LODSD 9.2.6. Контрольные вопросы раздела 9.3. Некоторые процедуры для обработки строк 9.3.1. Процедура Str_compare 9.3.2. Процедура Strjength 9.3.3. Процедура Str_copy 9.3.4. Процедура Str_trim 9.3.5. Процедура Str_ucase 9.3.6. Контрольные вопросы раздела 9.4. Двумерные массивы 9.4.1. Базово-индексный режим адресации 9.4.2. Базово-индексный режим адресации со смещением 9.4.3. Контрольные вопросы раздела 9.5. Сортировка и поиск в массиве целых чисел 9.5.1. Обменная сортировка 9.5.2. Двоичный поиск 9.5.3. Контрольные вопросы раздела 9.6. Резюме 9.7. Упражнения по программированию 9.7.1. Улучшенная версия процедуры Str_copy 9.7.2. Процедура Str_concat 9.7.3. Процедура Str_remove 9.7.4. Процедура Str_find 9.7.5. Процедура Str_nextword 9.7.6. Создание таблицы частот символов 9.7.7. Решето Эратосфена 9.7.8. Обменная сортировка 9.7.9. Двоичный поиск Глава 10. Структуры и макроопределения 10.1. Структуры 10.1.1. Определение с груктуры 10.1.2. Объявление структурных переменных 10.1.3. Обращение к структурным переменным 10.1.4. Пример: отображение системного времени 10.1.5. Вложенные структуры 10.1.6. Пример: задача о случайном блуждании абсолютно пьяного человека 10.1.7. Определение и использование объединений 10.1.8. Контрольные вопросы раздела 10.2. Макрокоманды 10.2.1. Введение 10.2.2. Определение макрокоманды 10.2.3. Вызов макрокоманд 10.2.4. Примеры макрокоманд 10.2.5. Вложенные макрокоманды 10.2.6. Пример: тестовая программа 10.2.7. Контрольные вопросы раздела 10.3. Директивы условного ассемблирования 10.3.1. Проверка пропущенных аргументов 10.3.2. Стандартные значения параметров 10.3.3. Логические выражения 10.3.4. Директивы IF, ELSE и ENDIF 10.3.5. Директивы IFIDN и IFIDNI 10.3.6. Специальные операторы 10.3.7. Макрофункции 10.3.8. Контрольные вопросы раздела 10.4. Создание повторяющихся блоков программы 10.4.1. Директива WHILE 10.4.2. Директива REPEAT 10.4.3. Директива FOR 10.4.4. Директива FORC 10.4.5. Пример: связанный список 10.4.6. Контрольные вопросы раздела 10.5. Резюме 10.6. Упражнения по программированию 10.6.1. Макрокоманда mReadkey 10.6.2. Макрокоманда mWriteStringAttr 10.6.3. Макрокоманда mMove32 10.6.4. Макрокоманда mMnlt32 10.6.5. Макрокоманда mReadlnt 10.6.6. Макрокоманда mWritcInt 10.6.7. Макрокоманда mScroll 10.6.8. Случайное блуждание абсолютно пьяного человека Глава 11. Создание 32-разрядных программ для Windows 11.1. Создание терминальных приложений для Win32 11.1.1. Вводная информация 11.1.2. Терминальные функции Win32 11.1.3. Чтение данных с терминала 11.1.4. Вывод на терминал 11.1.5. Файловый ввод-вывод 11.1.6. Операции с окном терминала 11.1.7. Управление курсором 11.1.8. Изменение цвета текста 11.1.9. Функции для работы со временем и датой 11.1.10. Контрольные вопросы раздела 11.2. Создание графических приложений для Windows 11.2.1. Необходимые структуры 11.2.2. Функция MessageBox 11.2.3. Процедура WinMain 11.2.4. Процедура WinProc 11.2.5. Процедура ErrorHandler 11.2.6. Листинг программы 11.2.7. Контрольные вопросы раздела 11.3. Управление памятью в процессорах семейства IA-32 11.3.1. Линейные адреса 11.3.2. Страничная переадресация 11.3.3. Контрольные вопросы раздела 11.4. Резюме 11.5. Упражнения по программированию 11.5.1. Процедура Read St ring 11.5.2. Ввод и вывод строк 11.5.3. Очистка экрана 11.5.4. Случайный вывод на экран 11.5.5. Рисование прямоугольников 11.5.6. Программа регистрации учащихся 11.5.7. Прокрутка текстового окна 11.5.8. Блочная анимация Глава 12. Интерфейс с языками программирования высокого уровня 12.1. Введение 12.1.1. Общие правила 12.1.2. Контрольные вопросы раздела 12.2. Встроенный ассемблерный код 12.2.1. Директива __asm компилятора Microsoft Visual C++ 12.2.2. Пример программы шифрования файла 12.2.3. Контрольные вопросы раздела 12.3. Подключение ассемблерных объектных модулей к программам на C++ 12.3.1. Подключение ассемблерных объектных модулей к программам на Borland C++ 12.3.2. Пример программы: ReadSector 12.3.3. Пример: программа генерации больших случайных чисел 12.3.4. Использование языка ассемблера для оптимизации кода программы на C++ 12.3.5. Контрольные вопросы раздела 12.4. Резюме 12.5. Упражнения по программированию 12.5.1. Процедура ReadSector, большая модель памяти 12.5.2. Процедура ReadSector, шестнадцатеричный дамп 12.5.3. Процедура Long Ran domArray 12.5.4. Внешняя процедура Translate Buffer 12.5.5. Программа проверки простых чисел 12.5.6. Процедура FindRevArray Глава 13. Создание 16-разрядных программ для MS DOS 13.1. Компьютер IBM PC и операционная система MS DOS 13.1.1. Организация памяти 13.1.2. Перенаправление потоков ввода-вывода 13.1.3. Программные прерывания 13.1.4. Команда INT 13.1.5. Контрольные вопросы раздела 13.2. Функции MS-DOS (прерывание INT 21h) 13.2.1. Избранные функции для вывода данных 13.2.2. Пример программы "Hello World" 13.2.3. Избранные функции для ввода данных 13.2.4. Функции для работы со временем и датой 13.2.5. Контрольные вопросы раздела 13.3. Стандартные функции MS DOS для ввода и вывода информации из файлов 13.3.1. Закрытие дескриптора файла (ЗЕп) 13.3.2. Перемещение файлового указателя (42h) 13.3.3. Избранные библиотечные процедуры 13.3.4. Пример: программа копирования текстового файла 13.3.5. Анализ параметров командной строки в MS DOS 13.3.6. Пример: создание двоичного файла 13.3.7. Контрольные вопросы раздела 13.4. Резюме 13.5. Упражнения по программированию 13.5.1. Чтение текстового файла 13.5.2. Копирование текстового файла 13.5.3. Установка даты 13.5.4. Преобразование строки символов к верхнему регистру 13.5.5. Отображение даты создания файла 13.5.6. Программа поиска текстовой строки 13.5.7. Шифрование файла с помощью команды XOR 13.5.8. Программа подсчета слов Глава 14. Основы работы с диском 14.1. Дисковые устройства хранения информации 14.1.1. Дорожки, цилиндры и секторы 14.1.2. Дисковые разделы (тома) 14.1.3. Контрольные вопросы раздела 14.2. Файловые системы 14.2.1. Файловая система FAT 12 14.2.2. Файловая система FAT 16 14.2.3. Файловая система FAT32 14.2.4. Файловая система NTFS 14.2.5. Основные области диска 14.2.6. Контрольные вопросы раздела 14.3. Каталоги диска 14.3.1. Структура элемента каталога системы MS DOS 14.3.2. Поддержка длинных имен файлов в системе Microsoft Windows 14.3.3. Таблица размещения файлов (FAT) 14.3.4. Контрольные вопросы раздела 14.4. Чтение и запись секторов диска (функция 7305h) 14.4.1. Программа отображения секторов диска 14.4.2. Контрольные вопросы раздела 14.5. Системные функции управления файлами 14.5.1. Определение свободного дискового пространства (функция 7303h) 14.5.2. Создание подкаталога (функция 39h) 14.5.3. Удаление подкаталога (функция 3Ah) 14.5.4. Установка текущего каталога (функция ЗВп) 14.5.5. Определение текущего каталога (функция 47h) 14.5.6. Контрольные вопросы раздела 14.6. Резюме 14.7. Упражнения по программированию 14.7.1. Установка текущего диска 14.7.2. Размер диска 14.7.3. Размер свободного места на диске 14.7.4. Создание скрытого каталога 14.7.5. Определение числа свободных кластеров на диске 14.7.6. Отображение номера сектора 14.7.7. Отображение секторов в шестнадцатеричном формате Глава 15. Программирование с использованием функций BIOS 15.1. Введение 15.1.1. Область данных BIOS 15.2. Ввод данных с клавиатуры с помощью INT 16h 15.2.1. Принцип работы клавиатуры 15.2.2. Функции прерывания INT 16h 15.2.3. Контрольные вопросы раздела 15.3. Использование функций BIOS прерывания INT 10h для работы с видео 15.3.1. Основные моменты 15.3.2. Изменение цветов 15.3.3. Функции для работы с видео прерывания INT 10h 15.3.4. Примеры библиотечных процедур 15.3.5. Контрольные вопросы раздела 15.4. Отображение графических изображений с помощью функций прерывания INT 10h 15.4.1. Функции прерывания INT 10h для работы с пикселями 15.4.2. Программа Draw Line 15.4.3. Программа отображения декартовой координатной плоскости 15.4.4. Преобразование декартовых координат в экранные координаты 15.4.5. Контрольные вопросы раздела 15.5. Отображение графики путем непосредственной записи в видеопамять 15.5.1. Видеорежим 13h: 320x200, 256 цветов 15.5.2. Программа прямого вывода данных в видеопамять 15.5.3. Контрольные вопросы раздела 15.6. Работа с мышью 15.6.1. Функции прерывания INT33h 15.6.2. Программа регистрации движения мыши 15.6.3. Контрольные вопросы раздела 15.7. Резюме 15.8. Упражнения по программированию 15.8.1. Таблица ASCII-символов 15.8.2. Прокрутка текстового окна 15.8.3. Прокрутка цветных текстовых столбцов 15.8.4. Прокрутка столбцов в разных направлениях 15.8.5. Вывод прямоугольника с помощью функций прерывания INT 10h 15.8.6. Вывод графика функции с помощью функций прерывания INT 1 Oh 15.8.7. Модификация программы Mode 13. asm, одна линия 15.8.8. Модификация программы Mode 13. asm, несколько линий 15.8.9. Программа черчения прямоугольника в текстовом режиме Глава 16. Программируем для MS DOS на уровне эксперта 16.1. Введение 16.2. Определение сегментов 16.2.1. Директивы упрощенного определения сегментов 16.2.2. Явное определение сегментов 16.2.3. Префиксы замены сегмента 16.2.4. Объединение сегментов 16.2.5. Контрольные вопросы раздела 16.3. Выполнение программ 16.3.1. Программы с расширением. СОМ 16.3.2. Программы с расширением. ЕХЕ 16.3.3. Контрольные вопросы раздела 16.4. Обработка прерываний 16.4.1. Аппаратные прерывания 16.4.2. Команды управления прерываниями 16.4.3. Написание собственного обработчика прерываний 16.4.4. Резидентные программы 16.4.5. Пример приложения: программа NoRcset 16.4.6. Контрольные вопросы раздела 16.5. Резюме Глава 17. Дополнительные темы 17.1. Доступ к оборудованию на уровне портов ввода-вывода 17.1.1. Порты ввода-вы вода 17.2. Кодирование машинных команд процессоров Intel 17.2.1. Однобайтовые команды 17.2.2. Непосредственно заданные операнды 17.2.3. Команды с регистровыми операндами 17.2.4. Команды с операндами, расположенными в памяти 17.2.5. Контрольные вопросы раздела 17.3. Представление чисел с плавающей запятой 17.3.1. Формат IEEE представления двоичных чисел с плавающей запятой 17.3.2. Показатель степени 17.3.3. Нормализованное значение мантиссы 17.3.4. Кодирование двоичных чисел с плавающей запятой в формате IEEE 17.3.5. Преобразование десятичных дробей в двоичное число с плавающей запятой 17.3.6. Округление 17.3.7. Контрольные вопросы раздела 17.4. Математический сопроцессор 17.4.1. Структура устройства для выполнения операций с плавающей запятой семейства процессоров IA-32 17.4.2. Форматы команд с плавающей запятой 17.4.3. Несколько простых примеров кода Приложение А. Установка и использование компилятора MASM А.1. Установка программного обеспечения, находящегося на прилагаемом компакт-диске А.2. Компиляция и компоновка 32-разрядных программ для защищенного Режима А.2.1. Отладка программ для защищенного режима А.2.2. Файл make32. bat А.3. Компиляция и компоновка 16-разрядных программ для реального режима адресации Приложение Б. Система команд процессоров Intel Б.1. Введение Б.1.1. Флаги Б.1.2. Форматы команд и их описание Б.2. Набор команд Приложение В. Функции прерываний BIOS и MS DOS В.1. Введение В.2. Список прерываний IBM PC В.3. Список функций прерывания INT 21h (функции MS DOS) В.4. Список функций прерывания INT 10h (видео BIOS) В.5. Список функций прерывания INT 16h (BIOS клавиатуры) В.6. Список функций прерывания INT 33h (работа с мышью) Приложение Г. Справочник по MASM Г.1. Введение Г.2. Зарезервированные слова MASM Г.3. Имена регистров Г.4. Microsoft Assembler (ML) Г.5. Компоновщик (LINK) Г.6. Отладчик CodeView (CV) Г.7. Директивы компилятора MASM Г.8. Предопределенные символы Г.9. Операторы ассемблера Г. 10. Операторы, генерирующие машинный код Приложение Д. Справочная информация Д.1. Управляющие ASCI 1-коды Д.2. Скан-коды клавиатуры Д.3. Таблица ASCII-кодов знакогенератора IBM PC Приложение Е. Лицензионное соглашение Microsoft Microsoft MASM версии 6.11 и 6.15 Однопользовательские программные продукты Лицензия на программное обеспечение Microsoft Ограничения гарантийных обязательств Предметный указатель