Математика | ||||
Assembler для DOS, Windows и UNIX-Зубков С. . - М.: ДМК. Пресс, 2000. - 608 с.: ил. Серия «Для программистов-В. | ||||
Зубков С. В.
91 Assembler для DOS, Windows и UNIX. - М.: ДМК. Пресс, 2000. - 608 с.: ил. Серия «Для программистов»). ISBN 5-94074-003-0 В книге освещаются все аспекты современного программирования на ассемблере для DOS, Windows 95/NT и UNIX (Solaris, Linux и FreeBSD), включая создание резидентных программ и драйверов, прямое программирование периферийных устройств, управление защищенным режимом и многое другое. Детально рассматривается архитектура процессоров Intel вплоть до Pentium III. Все главы иллюстрируются подробными примерами работоспособных программ. Издание ориентировано как на профессионалов, так и на начинающих без опыта программирования. ББК 32.973.26-018.1 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность наличия технических и просто человеческих ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. © ЛМК ППРГ.Г. 9000 Содержание Введение............................................................................................и Глава 1. Предварительные сведения ..................................13 1.1. Что нужно для работы с ассемблером................................13 1.2. Представление данных в компьютерах...............................14 1.2.1. Двоичная система счисления...................................................14 1.2.2. Биты, байты ислова................................................................. 15 1.2.3. Шестнадцатеричная система счисления .................................. 16 1.2.4. Числа со знаком ....................................................................... 17 1.2.5. Логические операции...............................................................18 1.2.6. Коды символов........................................................................18 1.2.7. Организация памяти ................................................................ 19 Глава 2. Процессоры Intel в реальном режиме...............20 2.1. Регистры процессора.............................................................20 2.1.1. Регистры общего назначения ...................................................20 2.1.2. Сегментные регистры..............................................................22 2.1.3. Стек.........................................................................................22 2.1.4. Регистр флагов ........................................................................23 2.2. Способы адресации................................................................24 2.2.1. Регистровая адресация............................................................ 24 2.2.2. Непосредственная адресация.................................................. 25 2.2.3. Прямая адресация ...................................................................25 2.2.4. Косвенная адресация...............................................................25 2.2.5. Адресация по базе со сдвигом..................................................26 2.2.6. Косвенная адресация с масштабированием ............................26 2.2.7. Адресация по базе с индексированием ....................................27 2.2.8. Адресация по базе с индексированием и масштабированием...............................................................27 2.3. Основные непривилегированные команды.......................28 2.3.1. Пересылка данных...........................................>t......................28 2.3.2. Двоичная арифметика..............................................................34 2.3.3. Десятичная арифметика..........................................................38 2.3.4. Логические операции...............................................................41 2.3.5. Сдвиговые операции................................................................43 2.3.6. Операции над битами и байтами ..............................................45 2.3.7. Команды передачи управления................................................47 2.3.8. Строковые операции ...................................,............................54 2.3.9. Управление флагами ................................................................57 2.3.10. Загрузка сегментных регистров.............................................59 2.3.11. Другие команды.....................................................,...,............59 2.4. Числа с плавающей запятой.....................................'............63 2.4.1. Типы данных FPU ..'....................................................................63 2.4.2. Регистры FPU........................................................................... 65 2.4.3. Исключения FPU....................................................................... 67 2.4.4. Команды пересылки данных FPU ..............................................68 2.4.5. Базовая арифметика FPU.........................................................70 2.4.6. Команды сравнения FPU..........................................................74 2.4.7. Трансцендентные операции FPU..............................................76 2.4.8. Константы FPU.........................................................................78 2.4.9. Команды управления FPU .........................................................78 2.5. Расширение IA ММХ................................................................82 2.5.1. Регистры ММХ.........................................................................82 2.5.2. Типы данн'ых ММХ....................................................................83 2.5.3. Команды пересылки данных ММХ ...............Г............................83 2.5.4. Команды преобразования типов ММХ......................................84 2.5.5. Арифметические операции ММХ..............................................85 v 2.5.6. Команды сравнения ММХ.........................................................88 2.5.7. Логические операции ММХ ......................................................88 2.5.8. Сдвиговые операции ММХ.......................................................89 2.5.9. Команды управления состоянием ММХ....................................90 2.5.10. Расширение AMD 3D..............................................................90 2.6. Расширение SSE......................................................................91 2.6.1. Регистры SSE...........................................................................91 2.6.2. Типы данных SSE.......................................................................92 2.6.3. КомандыЗЗЕ ...........................................................................92 2.6.4. Определение поддержки SSE ................................................ 105 2.6.5. Исключения............................................................................ 105 Глава 3. Директивы и операторы ассемблера.............юб 3.1. Структура,программы...........................................................106 3.2. Директивы распределения памяти................................... 108 3.2.1. Псевдокоманды определения переменных.............................108 3.2.2. Структуры.............................................................................. 109 Содержание 3.3. Организация программы.....................................................110 3.3.1. Сегменты............................................................................... 110 3.3.2. Модели памяти и упрощенные директивы определения сегментов......................................................... 112 3.3.3. Порядок загрузки сегментов .....................................,............ 114 3.3.4. Процедуры............................................................................. 115 3.3.5. Конец программы.................................................................. 115 3.3.6. Директивы задания набора допустимых команд .................... 116 3.3.7. Директивы управления программным счетчиком ................... 116 3.3.8. Глобальные объявления......................................................... 117 3.3.9. Условное ассемблирование ................................................... 118 3.4. Выражения..............................................................................120 3.5. Макроопределения...............................................................121 3.5.1. Блоки повторений.................................................................. 123 3.5.2. Макрооператоры..................................................................... 124 3.5.3. Другие директивы, используемые в макроопределениях....... 124 3.6. Другие директивы..................................................................125 3.6.1. Управление файлами............................................................. 125 3.6.2. Управление листингом........................................................... 125 3.6.3. Комментарии ...............................................,..>...................... 126 Глава 4. Основы программирования для MS DOS .......127 4.1. Программа типа COM...........................................................128 4.2. Программа типа ЕХЕ.............................................................130 4.3. Вывод на экран в текстовом режиме................................ 131 4.3.1. Средства DOS..........................................................:............. 131 4.3.2. Средства BIOS....................................................................... 134 4.3.3. Прямая работа с видеопамятью............................................. 139 4.4. Ввод с клавиатуры..................................................................140 4.4.1. Средства DOS........................................................................ 140 4.4.2. Средства BIOS....................................................................... 148 4.5. Графические видеорежимы................................................ 151 4.5.1. Работа с VGA-режимами........................................................ 151 4.5.2. Работа с SVGA-режимами...................................................... 155 4.6. Работа с мышью.....................................................................166 4.7. Другие устройства.........................................*,......................171 4.7.1. Системный таймер................................................................. 171 4.7.2. Последовательный порт......................................................... 178 4.7.3. Параллельный порт................................................................ 181 4.8. Работа с файлами..................................................................182 4.8.1. Создание и открытие файлов................................................. 183 4.8.2. Чтение и запись в файл .......................................................... 186 4.8.3. Закрытие и удаление файла................................................... 187 4.8.4. Поиск файлов......................................................................... 188 4.8.5. Управление файловой системой ............................................ 192 4.9. Управление памятью.............................................................193 4.9.1. Обычная память ..................................................................... 193 4.9.2. Область памяти UMB..............................................................195 4.9.3. Область памяти НМД..............................................................195 4.9.4. Интерфейс EMS ...................................................................... 196 4.9.5. Интерфейс XMS ..................................................................... 197 4.10. Загрузка и выполнение программ...................................202 4.11. Командные параметры и переменные среды...............208 Глава 5. Более сложные приемы программирования .. 212 5.1. Управляющие структуры......................................................212 5.1.1. Структуры IF... THEN... ELSE ...................................................212 5.1.2. Структуры CASE.....................................................................213 5.1.3. Конечные автоматы ................................................................214 5.1.4. Циклы.....................................................................................215 5.2. Процедуры и функции ..........................................................216 5.2.1. Передача параметров ............................................................216 5.2.2. Локальные переменные .........................................................221 5.3. Вложенные процедуры......................................................... 222 5.3.1. Вложенные процедуры со статическими ссылками................222 5.3.2. Вложенные процедуры с дисплеями ......................................223 5.4. Целочисленная арифметика повышенной точности.....224 5.4.1. Сложение и вычитание ...........................................................225 5.4.2. Сравнение .............................................................................225 5.4.3. Умножение .............................................................................226 5.4.4. Деление.................................................................................227 5.5. Вычисления с фиксированной запятой............................228 5.5.1. Сложенней вычитание ...........................................................228 5.5.2. Умножение..............................................................................228 5.5.3,Деление.................................................................................229 5.5.4. Трансцендентные функции....................................................229 5.6. Вычисления с плавающей запятой....................................233 содержание ц 5.7. Популярные алгоритмы..........................................................238 5.7.1. Генераторы случайных чисел ............................................;.... 238 5.7.2. Сортировки ......................,.....................................................242 5.8. Перехват прерываний...........................................................245 5.8.1. Обработчики прерываний ......................................................246 5.8.2. Прерывания от внешних устройств........................................249 5.8.3. Повторная входи.мость..............................................:............253 5.9. Резидентные программы.....................................................256 5.9.1. Пассивная резидентная программа .......................................256 5.9.2. Мультиплексорное прерывание.............................................262 5.9.3. Выгрузка резидентной программы из памяти........................276 5.9.4. Полурезидентные программы ................................................292 5.9.5. Взаимодействие между процессами......................................297 5.10. Программирование на уровне портов ввода-вывода ....305 5.10.1. Клавиатура ...........................................................................305 5.10.2. Последовательный порт.......................................................309 5.10.3. Параллельный порт..............................................................315 5.10.4. Видеоадаптеры VGA .............................................................316 5.10.5. Таймер................................................................................. 331 5.10.6. Динамик...............................................................................335 5.10.7. Часы реального времени и CMOS-память ............................336 5.10.8. Звуковые платы ....................................................................339 5.10.9. Контроллер DMA..................................................................359 5.10.10. Контроллер прерываний.....................................................366 5.10.11. Джойстик............................................................................371 5.11. Драйверы устройств в DOS..............................................'. 374 5.11.1. Символьные устройства.......................................................375 5.11.2. Блочные устройства.............................................................384 Глава 6. Программирование в защищенном режиме ... зев 6.1. Адресация в защищенном режиме....................................388 6.2. Интерфейс VCPI.....................................................................391 6.3. Интерфейс DPMI....................................................................394 6.3.1. Переключение в защищенный режим.....................................394 6.3.2. Функции DPMI управления дескрипторами ............................395 6.3.3. Передача управления между режимами в DPMI.....................396 6.3.4. Обработчики прерываний......................................................398 6.3.5. Пример программы —........................:.................................399 6.4. Расширители DOS.................................................................403 6.4.1. Способы объединения программы с расширителем ..............403 6.4.2. Управление памятью в DPMI i...................................................405 6.4.3. Вывод на экран через линейный кадровый буфер ..................406 Глава 7. Программирование для Windows 95/NT.........413 7.1. Первая программа.................................................................413 7.2. Консольные приложения......................................................416 7.3. Графические приложения....................................................421 7.3.1. Окно типа MessageBox...........................................................421 7.3.2. Окна........................................................................................422 7.3.3. Меню......................................................................................427 7.3.4. Диалоги .................................................................................431 7.3.5. Полноценное приложение......................................................436 7.4. Динамические библиотеки..................................................451 7.5. Драйверы устройств .............................................................457 Глава 8. Ассемблер и языки высокого уровня.............. 460 8.1. Передача параметров...........................................................460 8.1.1. Конвенция Pascal...................................................................460 8.1.2. Конвенция С...........................................................................461 8.1.3. Смешанные конвенции ..........................................................463 8.2. Искажение имен.....................................................................463 8.3. Встроенный ассемблер........................................................463 8.3.1. Ассемблер, встроенный в Pascal.............................................464 8.3.2. Ассемблер, встроенный вС....................................................464 Глава 9. Оптимизация........................~.................................... 465 9.1. Высокоуровневая оптимизация.........................................465 9.2. Оптимизация на среднем уровне......................................465 9.2.1. Вычисление констант вне цикла.............................................466 9.2.2. Перенос проверки условия в конец цикла ..............................466 9.2.3. Выполнение цикла задом наперед.........................................466 9.2.4. Разворачивание циклов .........................................................467 9.3. Низкоуровневая оптимизация............................................468 9.3.1. Общие принципы низкоуровневой оптимизации ....................468 9.3.2. Особенности архитектуры процессоров Pentium иРептштММХ.......................................................................471 9.3.3. Особенности архитектуры процессоров Pentium Pro и Pentium II.............................................................................472 Цена: 300руб. |
||||