Главная » 2013»Март»28 » Ассемблер? Это просто! Учимся программировать(+ CD-ROM)
10:08
Ассемблер? Это просто! Учимся программировать(+ CD-ROM)
Подробно и доходчиво объясняются все основные вопросы программирования на ассемблере. Рассмотрены команды процессоров Intel, 16- и 32-разрядные регистры, основы работы с сопроцессором, сегментация памяти в реальном масштабе времени, управление клавиатурой и последовательным портом, работа с дисками и многое другое. Описано, как разработать безобидный нерезидентный вирус и антивирус против этого вируса, как написать файловую оболочку (типа Norton Commander или FAR Manager) и как писать резидентные программы. Каждая глава состоит из объяснения новой темы, описания алгоритмов программ, многочисленных примеров и ответов на часто задаваемые вопросы. Компакт-диск содержит исходные коды всех примеров, приведенных в книге, с подробными описаниями.
Название: Ассемблер? Это просто! Учимся программировать(+ CD-ROM) Автор: Калашников О. А. Издательство: БХВ-Петербург Год: 2006 Страниц: 375 Формат: PDF Размер: 30,2 МБ ISBN: 5-94157-709-5 Качество: Отличное
Содержание:
Предисловие Несколько советов Ответы на некоторые вопросы ЧАСТЬ I. ЗНАКОМЬТЕСЬ: АССЕМБЛЕР Глава 1. Первая программа 1.1. Шестнадцатеричная система счисления 1.2. Наша первая программа 1.3. Введение в прерывания 1.4. Послесловие Глава 2. Регистры процессора 2.1. Введение в регистры микропроцессоров 8086-80186 2.1.1. Регистры данных 2.1.2. Регистры-указатели 2.1.3. Сегментные регистры 2.2. Команды сложения и вычитания 2.2.1. Оператор add 2.2.2. Оператор sub 2.2.3. Оператор inc 2.2.4. Оператор dec 2.3. Программа для практики Глава 3. Сегментация памяти в реальном режиме 3.1. Двоичная система счисления. Бит и байт 3.1.1. Как перевести двоичное число в десятичное 3.1.2. Как перевести десятичное число в двоичное 3.1.3. Как перевести шестнадцатеричное число в десятичное 3.2. Сегментация памяти в реальном режиме 3.2.1. Исследование программы в отладчике 3.3. Наше первое прерывание 3.3.1. Что такое ASCII? 3.4. Программа для практики 3.5. Подведем итоги ЧАСТЬ II. ОТ ЗНАКОМСТВА - К ДРУЖБЕ Глава 4. Создание циклов 4.1. Еще немного о сегментации памяти 4.1.2. Введение в адресацию 4.2. Создание циклов 4.2.1. Пример высокоуровневой оптимизации 4.3. Условный и безусловный переход 4.3.1. Пример низкоуровневой оптимизации 4.4. Программа для практики 4.4.1. Принцип работы программы Глава 5. Подпрограммы 5.1. Исправляем ошибку 5.2. Подпрограммы 5.3. Программа для практики 5.4. Несколько слов об отладчике AFD Глава 6. Работа со стеком 6.1. Стек/стэк (Stack) 6.2. Программа для практики 6.2.1. Оператор пор 6.2.2. Хитрая программа Глава 7. Операторы сравнения 7.1. Разбор программы из главы 6 7.2. Оператор сравнения 7.3. Понятия условного и безусловного переходов 7.4. Расширенные коды ASCII 7.5. Программа для практики Глава 8. Учимся работать с файлами 8.1. Программа из прошлой главы 8.2. Основы работы с файлами 8.3. Программа для практики Глава 9. Работа с файлами 9.1. Программа из прошлой главы 9.2. Программа для практики ЧАСТЬ III. ФАЙЛОВАЯ ОБОЛОЧКА, ВИРУС, РЕЗИДЕНТ Глава 10. Введение в вирусологию. Обработчик прерываний 10.1. Программа из прошлой главы 10.2. Вирус 10.2.1. Структура и принцип работы вируса 10.3. Резидент 10.3.1. Подробней о прерываниях 10.4. Первый обработчик прерывания 10.4.1. Новые операторы и функции прерываний 10.5. Работа с флагами процессора Глава 11. Управление видеоадаптером 11.1. Оболочка 11.2. Управление видеокартой Глава 12. Повторная загрузка резидента 12.1. Резидент 12.2. Проверка на повторную загрузку резидента 12.3. Команды работы со строками 12.4. Использование xor и sub для быстрого обнуления регистров 12.5. Задание для освоения информации изданной главы Глава 13. Поиск и считывание файлов 13.1. Вирус 13.1.1. Теория 13.1.2. Практика 13.1.3. Команда пересылки данных movs 13.1.4. Передача управления программе, расположенной в другом сегменте 13.1.5. Поиск файлов Глава 14. Вывод окна в центре экрана 14.1. Модели памяти 14.2. Оболочка SuperShell 14.2.1. Управление курсором 14.2.2. Операторы работы со стеком процессора 80286+ 14.3. Процедура рисования рамки (окна) 14.3.1. Прямое отображение в видеобуфер 14.3.2. Процедура Draw_frame 14.4. Практика 14.5. Новые операторы Глава 15. Обработка аппаратных прерываний 15.1. Теория 15.1.1. Сохранение предыдущего вектора прерывания 15.1.2. Способы передачи управления на прежний адрес прерывания 15.2. Инструкции ret и retf 15.2.1. Оператор ret 15.2.2. Оператор retf 15.3. Механизм работы аппаратных прерываний. Оператор iret 15.4. Практика 15.5. Логические команды процессора 15.5.1. Оператор or 15.5.2. Оператор and 15.5.3. Оператор xor 15.6. Аппаратные прерывания нашего резидента 15.6.1. Аппаратное прерывание 05h 15.6.2. Аппаратное прерывание 09h 15.6.3. Аппаратное прерывание 1Ch 15.7. Заключение Глава 16. Принципы работы отладчиков 16.1. Как работает отладчик 16.1.1. Прерывание 03 16.2. Способы обойти отладку программы 16.2.1. Таблица векторов прерываний 16.3. Практика Глава 17. Заражение файлов вирусом 17.1. Определение текущего смешения выполняемого кода 17.2. Вирус 17.2.1. Первые байты «файла-жертвы» 17.2.2. Передача управления «файлу-жертве» Глава 18. Высокоуровневая оптимизация программ 18.1. Пример высокоуровневой оптимизации 18.2. Ошибка в главе 17 18.3. Оболочка Super Shell 18.3.1. Передача данных процедуре через стек 18.3.2. Передача параметров в стеке 18.3.3. Вычисление длины строки на стадии ассемблирования 18.3.4. Процедуры Copy_scr/ Restore_scr (display.asm) 18.3.5. Оператор seas 18.3.6. Подсчет длины нефиксированной строки 18.3.7. Вывод строки на экран путем прямого отображения в видеобуфер 18.4. Послесловие Глава 19. Создание резидентного шпиона 19.1. Резидент 19.2. Что нужно вам вынести из этой главы? Глава 20. Финальная версия вируса 20.1. Вирус 20.1.1. Альтернативы ret, call и jmp 20.1.2. Заражение файла 20.1.3. Общая схема работы вируса 20.2. Послесловие Глава 21. Работа с блоками основной памяти 21.1. Оболочка SuperShell 21.1.1. Теория 21.1.2. Практика 21.1.3. Оператор test 21.2. Работа с основной памятью в DOS 21.2.1. Управление памятью 21.2.2. Считываем файлы в отведенную память Глава 22. Часто задаваемые вопросы Глава 23. Область PSP и DTA. Окружение MS-DOS 23.1. Структура командной строки 23.2. Окружение MS-DOS 23.3. Основной резидент 23.3.1. Команды безусловного перехода 23.3.2. Команды управления флагами 23.3.3. Изменение параметров резидента «на лету» 23.4. Задание для освоения информации изданной главы Глава 24. Резидентный антивирус 24.1. Регистры микропроцессоров 80386/80486. Хранение чисел в памяти 24.1.1. 16- и 32-разрядные отладчики 24.1.2. Директива use16/use32 24.1.3. Сопоставление ассемблера и языков высокого уровня 24.2. Резидентный антивирус. Практика 24.3. Послесловие Глава 25. Работа с сопроцессором 25.1. Ответы на некоторые вопросы 25.2. Введение в работу с сопроцессором 25.3. Первая программа с использованием сопроцессора 25.4. Вывод десятичного числа с помощью сопроцессора 25.5. Оболочка 25.5.1. Получение и вывод длинного имени файла Глава 26. История развития ПК 26.1. Краткая история развития IBM-совместимых компьютеров 26.2. С чего все начиналось 26.3. Оболочка 26.3.1. Чтение файлов из каталога и размещение их в отведенной памяти 26.3.2. Размещение файлов в памяти нашей оболочки Глава 27. Удаление резидента из памяти 27.1. Обзор последнего резидента 27.1.1. Перехват прерывания 21h 27.1.2. Как удалять загруженный резидент из памяти? 27.1.3. Случаи, когда резидент удалить невозможно 27.2. Практика Глава 28. Алгоритм считывания имен файлов в память 28.1. Оболочка 28.1.1. Новый алгоритм считывания файлов в память 28.1.2. Процедура вывода имен файлов на экран 28.1.3. Новые переменные в оболочке 28.1.4. Обработка клавиш <PageUp> и <PageDown> 28.1.5. Обработка клавиш <Home> и <End> Глава 29. Загрузка и запуск программ 29.1. Подготовка к запуску программы и ее загрузка 29.1.2. Шаг 1. Выделяем память для загружаемой программы 29.1.3. Шаг 2. Переносим стек в область PSP 29.1.4. Шаг 3. Подготовка ЕРВ 29.1.5. Шаг 4. Сохранение регистров 29.1.6. Шаг 5. Запуск программы 29.2. «Восстановительные работы» Глава 30. Работа с расширенной памятью в DOS 30.1. Расширенная (XMS) память. Общие принципы 30.2. Программа XMSmem.asm. Получение объема XMS-памяти 30.3. Программа XMSblock.asm. Чтение файла в расширенную память и вывод его на экран 30.3.1. Работа с расширенной памятью 30.3.2. Структура массива при работе с XMS-памятью 30.4. Программа XMScopy. asm. Копирование файла с использованием расширенной памяти Глава 31. Обзор дополнительных возможностей оболочки 31.1. Оболочка Super Shell 31.1.1. Вызов внешних вспомогательных программ 31.1.2. Редактирование файла 31.2. Антивирусные возможности оболочки 31.2.1. Как защитить компьютер от заражения его резидентными вирусами 31.2.2. Как защитить компьютер от программ-разрушителей дисковой информации Глава 32. Все о диске и файловой системе 32.1. Что находится на диске? 32.1.1. Таблица разделов жесткого диска 32.1.2. Загрузочный сектор 32.1.3. Таблица размещения файлов (FAT) 32.2. Удаление и восстановление файла 32.3. Ошибки файловой системы 32.3.1. Потерянные кластеры файловой системы FAT, FAT32 ПРИЛОЖЕНИЯ Приложение 1. Ассемблирование программ (получение машинного кода из ассемблерного листинга) Шаг 1. Установка MASM 6.10-6.13 Шаг 2. Ассемблирование Шаг 3. Компоновка Ассемблирование и компоновка программ пакетами Microsoft (MASM) и Borland (TASM) Приложение 2. Типичные ошибки при ассемблировании программы Приложение 3. Таблицы и коды символов Основные символы ASCII Расширенные коды ASCII Скан-коды клавиатуры Приложение 4. Содержимое компакт-диска Предметный указатель