Информация о книге

978-5-9775-0591-8

Главная  » Научно-техническая литература » Информационные технологии. Компьютеры » Программирование » Другие языки программирования » Ассемблер — это просто. Учимся программировать (+ CD-ROM)

Калашников О.В., Ассемблер — это просто. Учимся программировать (+ CD-ROM)

БХВ-Петербург, 2011 г., 336 стр., 978-5-9775-0591-8 , 233*162*16 мм., тираж: 9000


Описание книги

Подробно и доходчиво объясняются все основные вопросы программирования на Ассемблере. Рассмотрены команды процессоров Intel, 16- и 32-разрядные регистры, основы работы с сопроцессором, сегментация памяти в реальном масштабе времени, управление клавиатурой и последовательным портом, работа с дисками и многое другое. Описано, как разработать безобидный нерезидентный вирус и антивирус против этого вируса, как написать файловую оболочку (типа Norton Commander или FAR Manager) и как писать резидентные программы. Каждая глава состоит из объяснения новой темы, описания алгоритмов программ, многочисленных примеров и ответов на часто задаваемые вопросы. Компакт-диск содержит исходные коды всех примеров, приведенных в книге, с подробными описаниями.

Скачать, но не бесплатно эту книгу можно в интернет-магазинах

  Литрес - 143 руб.

Читать онлайн


Доступен для чтения фрагмент книги

Ключевые слова

Поделиться ссылкой на книгу



Содержание книги

Предисловие
Несколько советов
Ответы на некоторые вопросы
ЧАСТЬ 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. Стек
6.2. Программа для практики
6.2.1. Оператор nop
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. Работа с флагами процессора
10.5.1. Как проверить работу программы?
Глава 11. Управление видеоадаптером
11.1. Оболочка
11.2. Управление видеокартой
Глава 12. Повторная загрузка резидента
12.1. Резидент
12.2. Проверка на повторную загрузку резидента
12.3. Команды работы со строками
12.4. Использование xor и sub для быстрого
обнуления регистров
12.5. Задание для освоения информации из данной
главы
Глава 13. Поиск и считывание файлов: вирус
13.1. Теория
13.2. Практика
13.3. Команда пересылки данных movs
13.4. Передача управления программе,
расположенной в другом сегменте
13.5. Поиск файлов
Глава 14. Вывод окна в центре экрана
14.1. Модели памяти
14.1.1. Почему мы пишем только файлы типа COM?
14.1.2. Что такое модель памяти и какие модели
бывают?
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. Прерывание 03h
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. Оператор scas
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. Системные
переменные (окружение 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.2. Процедура вывода имен файлов на экран
28.3. Новые переменные в оболочке
28.4. Обработка клавиш <PageUp> и <PageDown>
28.5. Обработка клавиш <Home> и <End>
Глава 29. Загрузка и запуск программ
29.1. Подготовка к запуску программы и ее
загрузка
29.1.1. Выделяем память для загружаемой
программы
Зачем необходимо урезать память перед
загрузкой?
Зачем во второй строке мы сдвигаем на 4 бита
вправо это смещение?
А для чего увеличиваем bx на единицу (3)?
29.1.2. Переносим стек в область PSP
29.1.3. Подготовка EPB
Еще несколько слов о системных переменных
(сегменте окружения DOS)
Для чего нужно создавать свое окружение DOS?
Сегмент и смещение командной строки
Первый и второй адрес блоков FCB
29.1.4. Сохранение регистров
29.1.5. Запуск программы
29.2. "Восстановительные работы"
Глава 30. Работа с расширенной памятью
30.1. Расширенная (XMS) память. Общие принципы
30.2. Программа XMSmem.asm. Получение объема
XMS-памяти
30.2.1. Подготовка к использованию расширенной
памяти и вывод объема 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.1. Загрузка MASM 6.10-6.13
П1.2. Ассемблирование
П1.3. Компоновка
П1.3.1. Ассемблирование и компоновка программ
пакетами Microsoft (MASM)
Приложение 2. Типичные ошибки при
ассемблировании программы
Приложение 3. Таблицы и коды символов
П3.1. Основные символы ASCII
П3.2. Расширенные коды ASCII
П3.3. Скан-коды клавиатуры
Приложение 4. Содержимое компакт-диска
Предметный указатель


Об авторе


Отзывы

Полезная книга  [23 March 2012]
Книга понравилась, но я не стал бы ее рекомендовать новичкам в программировании. Для любителей самостоятельно поразбираться самое оно.
Хорошая книга  [18 December 2011]
Очень хорошо изложен материал, легко, доступно, есть примеры на диске, вообще книга очень полезная. Единственный недостаток, на мой взгляд, - этот учебник все же рассчитан не совсем на новичков. Человек должен иметь представление о программировании, самые простые навыки работы с консолью и отладчиком, тогда эта книга - лучший вариант.
согласен с отзывом ХХХ  [22 June 2011]
книга довольно неплохая , но начинать с неё нельзя. Сначала нужно посмотреть что-то по проще с большим количеством рисунков и примеров.
не согласен  [15 March 2011]
Это уже вторая версия, но насколько она замечательна?
Если вы только начинаете изучать ассемблер и ничего не знаете то навряд ли что то сможете осилить по ней.
Мозги нагрузят конкретно и в определенный момент вы поймете что запутались.
Более того в голове не составится полной светлой картины.
Для легкого старта покупайте эту книгу пока есть:
Рудольф Марек
Ассемблер на примерах
http://www.ozon.ru/context/detail/id/4579142/
Отличная книга!  [11 March 2011]
Замечательная книга: отлично подан материал - без официоза и скучных справочных данных, живым языком. Рекомендую всем программистам.

Последние поступления в рубрике "Другие языки программирования"



Функциональная верификация VHDL-описаний синхронных цифровых устройств Функциональная верификация VHDL-описаний синхронных цифровых устройств Бибило П.Н.

Рассматриваются проблемы функциональной верификации проектов синхронных цифровых устройств, представленных на языке VHDL, который широко используется в качестве языка исходного описания проектов при создании электронной аппаратуры на современной......

Scala для нетерпеливых Scala для нетерпеливых Хорстман К.

Написанная для опытных программистов на Java, C++ и C#, которые желают освоить функциональное программирование или язык Scala, книга в сжатой форме знакомит с основными идеями и приемами программирования, что позволяет быстро осваивать их и применять......

R. Книга рецептов R. Книга рецептов Лонг Д.

Язык R - мощный инструмент статистического программирования, десятки тысяч людей ежедневно используют его для проведения серьезного статистического анализа. Но не все задачи, даже простые, удастся быстро решить с его помощью, если не знать......

Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Калашников О.В., Ассемблер — это просто. Учимся программировать (+ CD-ROM) в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.