Литература часть 2 по АЭВМ / Юров / учебник
.pdfВ. Юров
ASSEMBLER
В учебнике рассматриваются вопросы программирования на языке ассемблера для компьютеров на базе микропроцессоров фирмы Intel. Основу книги составляет материал, являющийся частью курса, читаемого автором в высшем учебном заведении и посвященного вопросам системного программирования. По сравнению с предыдущей книгой автора — «Assembler: учебный курс», книга существенно переработана. В нее добавлены разделы, посвященные программированию под Windows, и описанию команд процессоров Pentium III.
К книге прилагается дискета, которая содержит все листинги программ, рассматриваемых в учебнике, и соответствующий пояснительный материал.
Для студентов вузов, программистов и всех желающих изучить язык
Assembler.
Краткое содержание |
|
Предисловие |
9 |
Урок 1. Общие сведения об ЭВМ |
14 |
Урок 2. Архитектура персонального компьютера |
26 |
Урок 3. Простая программа на ассемблере |
57 |
Урок 4. Жизненный цикл программы на ассемблере |
66 |
Урок 5. Структура программы на ассемблере |
86 |
Урок 6. Система команд микропроцессора |
111 |
Урок 7. Команды обмена данными |
133 |
Урок 8. Арифметические команды |
153 |
Урок 9. Логические команды |
184 |
Урок 10. Команды передачи управления |
202 |
Урок 11. Цепочечные команды |
229 |
Урок 12. Сложные структуры данных |
250 |
Урок 13. Макросредства языка ассемблера |
278 |
Урок 14. Модульное программирование |
310 |
Урок 15. Прерывания |
353 |
Урок 16. Защищенный режим работы микропроцессора |
380 |
Урок 17. Обработка прерываний в защищенном режиме. |
404 |
Урок 18. Создание Windows-приложений на ассемблере |
419 |
Урок 19. Архитектура и программирование сопроцессора |
500 |
Урок 20. ММХ-технология микропроцессоров Intel |
564 |
Вместо заключения |
623 |
Содержание |
|
Предисловие |
9 |
Урок 1. Общие сведения об ЭВМ |
14 |
Урок 2. Архитектура персонального компьютера |
26 |
Архитектура ЭВМ |
27 |
Набор регистров |
38 |
Организация памяти |
46 |
Типы данных |
51 |
Формат команд |
54 |
Обработка прерываний |
55 |
Урок 3. Простая программа на ассемблере |
57 |
Урок 4. Жизненный цикл программы на ассемблере |
66 |
Трансляция программы |
71 |
Компоновка программы |
77 |
Отладка программы |
79 |
Утилита МАКЕ |
83 |
Урок 5. Структура программы на ассемблере |
86 |
Синтаксис ассемблера |
88 |
Директивы сегментации |
98 |
Простые типы данных ассемблера |
105 |
Урок 6. Система команд микропроцессора |
111 |
Системы счисления |
112 |
Двоичная система счисления |
113 |
Шестнадцатеричная система счисления |
114 |
Десятичная система счисления |
116 |
Перевод чисел из одной системы счисления в другую |
116 |
Перевод в десятичную систему счисления |
116 |
Перевод в двоичную систему счисления |
116 |
Перевод в шестнадцатеричную систему счисления |
117 |
Перевод дробных чисел |
118 |
Числа со знаком |
121 |
Структура машинной команды |
123 |
Способы задания операндов команды |
126 |
Функциональная классификация машинных команд |
131 |
Урок 7. Команды обмена данными |
133 |
Пересылка данных |
135 |
Ввод-вывод в порт |
137 |
Работа с адресами и указателями |
143 |
Преобразование данных |
145 |
Работа со стеком |
147 |
Урок 8. Арифметические команды |
153 |
Общий обзор |
154 |
Целые двоичные числа |
155 |
Десятичные числа |
157 |
Арифметические операции над целыми двоичными числами |
159 |
Сложение двоичных чисел без знака |
159 |
Сложение двоичных чисел со знаком |
160 |
Вычитание двоичных чисел без знака |
162 |
Вычитание двоичных чисел со знаком |
164 |
Вычитание и сложение операндов большой размерности |
165 |
Умножение двоичных чисел без знака |
166 |
Умножение двоичных чисел со знаком |
168 |
Деление двоичных чисел без знака |
168 |
Деление двоичных чисел со знаком |
170 |
Вспомогательные команды для целочисленных операций |
170 |
Команды преобразования типов |
170 |
Другие полезные команды |
172 |
Арифметические операции над двоично-десятичными числами |
173 |
Неупакованные BCD-числа |
174 |
Упакованные BCD-числа |
180 |
Урок 9. Логические команды |
184 |
Логические данные |
186 |
Логические команды |
187 |
Команды сдвига |
191 |
Линейный сдвиг |
192 |
Циклический сдвиг |
194 |
Дополнительные команды сдвига |
196 |
Примеры работы с битовыми строками |
198 |
Рассогласование битовых строк |
198 |
Вставка битовых строк |
199 |
Извлечение битовых строк |
200 |
Пересылка битов |
200 |
Урок 10. Команды передачи управления |
202 |
Безусловные переходы |
208 |
Команда безусловного перехода jmp |
208 |
Процедуры |
212 |
Условные переходы |
217 |
Команда сравнения cmp |
218 |
Команды условного перехода и флаги |
220 |
Команды условного перехода и регистр ecx/cx |
222 |
Организация циклов |
222 |
Урок 11. Цепочечные команды |
229 |
Пересылка цепочек |
233 |
Команда movs |
234 |
Команды пересылки байтов, слов и двойных слов |
235 |
Сравнение цепочек |
236 |
Команда cmps |
236 |
Команды сравнения байтов, слов и двойных слов |
239 |
Сканирование цепочек |
239 |
Команда scas |
240 |
Сканирование строки байтов, слов, двойных слов |
242 |
Загрузка элемента цепочки в аккумулятор |
242 |
Команда lods |
242 |
Загрузка в регистр al/ax/eax байтов, слов, двойных слов |
244 |
Перенос элемента из аккумулятора в цепочку |
244 |
Команда stos |
244 |
Сохранение в цепочке байта, слова, двойного слова из регистра |
246 |
al/ax/eax |
|
Ввод элемента цепочки из порта ввода-вывода |
247 |
Вывод элемента цепочки в порт ввода-вывода |
247 |
Урок 12. Сложные структуры данных |
250 |
Массивы |
252 |
Описание и инициализация массива в программе |
252 |
Доступ к элементам массива |
254 |
Типовые операции с массивами |
261 |
Структуры |
264 |
Описание шаблона структуры |
265 |
Определение данных с типом структуры |
265 |
Методы работы со структурой |
266 |
Объединения |
268 |
Записи |
270 |
Описание записи |
271 |
Определение экземпляра записи |
271 |
Работа с записями |
273 |
Дополнительные возможности обработки |
275 |
Урок 13. Макросредства языка ассемблера |
278 |
Псевдооператоры equ и = |
280 |
Макрокоманды |
283 |
Макродирективы |
291 |
Директивы WHILE и REPT |
292 |
Директива IRP |
293 |
Директива IRPC |
294 |
Директивы условной компиляции |
294 |
Директивы компиляции по условию |
295 |
Директивы генерации ошибок |
302 |
Константные выражения в условных директивах |
305 |
Дополнительное управление трансляцией |
307 |
Урок 14. Модульное программирование |
310 |
Технологии программирования |
311 |
Структурное программирование |
312 |
Концепция модульного программирования |
313 |
Процедуры в языке ассемблера |
315 |
Организация интерфейса с процедурой |
317 |
Связь ассемблера с языками высокого уровня |
330 |
Связь Pascal—ассемблер |
333 |
Команды enter и leave |
343 |
Связь С—ассемблер |
346 |
Урок 15. Прерывания |
353 |
Контроллер прерываний |
357 |
Программирование контроллера прерываний 18259А |
362 |
ICW1 — определить особенности последовательности приказов |
363 |
ICW2 — определение базового адреса |
363 |
ICW3 — связь контроллеров |
364 |
ICW4 — дополнительные особенности обработки прерываний |
366 |
OCW1 — управление регистром масок IMR |
366 |
OCW2 — управление приоритетом |
366 |
OCW3 — общее управление контроллером |
367 |
Каскадирование микросхем i8259A |
368 |
Реальный режим работы микропроцессора |
369 |
Обработка прерываний в реальном режиме |
371 |
Урок 16. Защищенный режим работы микропроцессора |
380 |
Системные регистры микропроцессора |
382 |
Регистры управления |
383 |
Регистры системных адресов |
384 |
Регистры отладки |
385 |
Структуры данных защищенного режима |
386 |
Пример программы защищенного режима |
391 |
Подготовка таблиц глобальных дескрипторов GDT |
392 |
Запрет обработки аппаратных прерываний |
397 |
Переключение микропроцессора в защищенный режим |
398 |
Работа в защищенном режиме |
399 |
Переключение микропроцессора в реальный режим |
401 |
Разрешение прерываний |
402 |
Стандартное для MS-DOS завершение работы программы |
402 |
Урок 17. Обработка прерываний в защищенном режиме |
404 |
Шлюз ловушки |
411 |
Шлюз прерывания |
412 |
Шлюз задачи |
413 |
Инициализация таблицы IDT |
415 |
Обработчики прерываний |
416 |
Программирование контроллера прерываний 8259А |
416 |
Загрузка регистра IDTR |
417 |
Урок 18. Создание Windows-приложений на ассемблере |
419 |
Каркасное Windows-приложение на C/C++ |
423 |
Каркасное Windows-приложение на ассемблере |
435 |
Стартовый код (строки 54-73) |
445 |
Главная функция (строки 74-162) |
447 |
Обработка сообщений в оконной функции |
456 |
Средства TASM для разработки Windows-приложений |
459 |
Углубленное программирование на ассемблере для Win32 |
462 |
Ресурсы Windows-приложений на языке ассемблера |
463 |
Меню в Windows-приложениях |
464 |
Перерисовка изображения |
472 |
Окна диалога в Windows-приложениях |
480 |
Урок 19. Архитектура и программирование сопроцессора |
500 |
Архитектура сопроцессора |
502 |
Регистр состояния swr |
507 |
Регистр управления cwr |
508 |
Регистр тегов twr |
509 |
Форматы данных |
509 |
Двоичные целые числа |
510 |
Упакованные целые десятичные (BCD) числа |
511 |
Вещественные числа |
512 |
Специальные численные значения |
516 |
Система команд сопроцессора |
520 |
Команды передачи данных |
522 |
Команды загрузки констант |
525 |
Команды сравнения данных |
525 |
Арифметические команды |
528 |
Команды трансцендентных функций |
537 |
Команды управления сопроцессором |
549 |
Исключения сопроцессора и их обработка |
554 |
Исключение недействительная операция |
555 |
Деление на ноль |
556 |
Денормализация операнда |
556 |
Переполнение и антипереполнение |
556 |
Неточный результат |
556 |
Немаскируемая обработка исключений |
557 |
Использование отладчика |
559 |
Общие рекомендации по программированию сопроцессора |
561 |
Урок 20. ММХ-технология микропроцессоров Intel |
564 |
MMX-расширение архитектуры микропроцессора Pentium |
566 |
Модель целочисленного MMX-расширения |
566 |
Особенности команд MMX-расширение |
568 |
Система команд |
574 |
Отладка программ |
578 |
Пример применения ММХ-технологии |
593 |
Дополнительные целочисленные ММХ-команды (Pentium III) |
606 |
ХММ-расширение архитектуры микропроцессора Pentium |
608 |
Модель ХММ-расширения |
609 |
Система команд |
611 |
Вместо заключения |
623 |