Главная страница

Олег Калашников Санкт-Петербург бхв-петербург 2011 удк ассемблер ббк 32. 973. 26-018. 1 К


Скачать 13.66 Mb.
НазваниеОлег Калашников Санкт-Петербург бхв-петербург 2011 удк ассемблер ббк 32. 973. 26-018. 1 К
АнкорKalashnikov_O_A_Assembler_-_eto_prosto_Uchimsya_programmirovat_2-e_izdanie_2011.pdf
Дата05.04.2018
Размер13.66 Mb.
Формат файлаpdf
Имя файлаKalashnikov_O_A_Assembler_-_eto_prosto_Uchimsya_programmirovat_2
оригинальный pdf просмотр
ТипДокументы
#31670
страница1 из 26
Каталогid5710161

С этим файлом связано 35 файл(ов). Среди них: Gardner_L_Grigsbi_D_Razrabotka_veb-saytov_dlya_mobilnykh_ustroys, PHP_Obekty_shablony_i_metodiki_programmirovania.pdf, Kalashnikov_O_A_Assembler_-_eto_prosto_Uchimsya_programmirovat_2, Razrabotka_Linux-prilozheniy.pdf, Roman_Savin_-_Testirovanie-dot-com.pdf, Mashinnoe_obuchenie_Lektsia_2_Metricheskie_metody_klassifikatsii и ещё 25 файл(а).
Показать все связанные файлы
  1   2   3   4   5   6   7   8   9   ...   26

Олег
Калашников
Санкт-Петербург
«БХВ-Петербург»
2011

УДК Ассемблер
ББК 32.973.26-018.1 К
Калашников О. А. К Ассемблер — это просто. Учимся программировать. — е изд, перераб. и доп. —
СПб.: БХВ-Петербург, 2011. — 336 сил Подробно и доходчиво объясняются все основные вопросы программирования на ассемблере. Рассмотрены команды процессоров Intel, 16- и разрядные регистры, основы работы с сопроцессором, сегментация памяти в реальном масштабе времени, управление клавиатурой и последовательным портом, работа с дисками и многое другое. Описано, как разработать безобидный нерезидентный вирус и антивирус против этого вируса, как написать файловую оболочку (типа Norton Commander или FAR Manager) и как писать резидентные программы. Каждая глава состоит из объяснения новой темы, описания алгоритмов программ, многочисленных примеров и ответов на часто задаваемые вопросы. Во второе издание внесены исправления и добавлены новые примеры. Компакт-диск содержит исходные коды всех примеров, приведенных в книге, с подробными описаниями. Для программистов
УДК Ассемблер
ББК 32.973.26-018.1 Группа подготовки издания Главный редактор Екатерина Кондукова Зам. главного редактора Игорь Шишигин Зав. редакцией Григорий Добин Редактор Анна Кузьмина Компьютерная верстка Натальи Караваевой Корректор Виктория Пиотровская Дизайн серии Инны Тачиной Оформление обложки Елены Беляевой Зав. производством Николай Тверских Лицензия ИД № 02429 от 24.07.00. Подписано в печать 31
.01.11. Формат 70 100 Печать офсетная. Усл. печ. л.
27,09. Тираж
2 000 экз. Заказ №
"БХВ
-
Петербург", 190005, Санкт
-
Петербург, Измайловский пр, Санитарно- эпидемиологическое заключение на продукцию Дот г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека
Отпечатано с готовых диапозитивов в ГУП "Типография "Наука, Санкт
-
Петербург, 9 линия, 12.
ISBN 978-5-9775-0591-8
© Калашников О. А, 2011
© Оформление, издательство "БХВ-Петербург", 2011

Оглавление
Предисловие ................................................................................................................................... 1 Несколько советов .......................................................................................................................... 2 Ответы на некоторые вопросы ...................................................................................................... 3 ЧАСТЬ I. ЗНАКОМЬТЕСЬ АССЕМБЛЕР ............................................................................. 7
Глава 1. Первая программа ........................................................................................................ 9

1.1. Шестнадцатеричная система счисления ................................................................................ 9 1.2. Наша первая программа ........................................................................................................ 12 1.3. Введение в прерывания ......................................................................................................... 13 1.4. Резюме .................................................................................................................................... 16 Глава 2. Регистры процессора .................................................................................................. 17
2.1. Введение в регистры микропроцессоров 8086—80186 ...................................................... 17 2.1.1. Регистры данных ............................................................................................................. 17 2.1.2. Регистры-указатели ......................................................................................................... 18 2.1.3. Сегментные регистры ..................................................................................................... 18 2.2. Команды сложения и вычитания .......................................................................................... 19 2.2.1. Оператор add ................................................................................................................... 19 2.2.2. Оператор sub ................................................................................................................... 19 2.2.3. Оператор inc .................................................................................................................... 20 2.2.4. Оператор dec ................................................................................................................... 21 2.3. Программа для практики ....................................................................................................... 21 Глава 3. Сегментация памяти в реальном режиме .............................................................. 23
3.1. Двоичная система счисления. Бит и байт ............................................................................ 23 3.1.1. Как перевести двоичное число в десятичное ................................................................ 25 3.1.2. Как перевести десятичное число в двоичное ................................................................ 25 3.1.3. Как перевести шестнадцатеричное число в десятичное .............................................. 26 3.2. Сегментация памяти в реальном режиме ............................................................................. 26 3.2.1. Исследование программы в отладчике ......................................................................... 28 3.3. Наше первое прерывание ...................................................................................................... 32 3.3.1. Что такое ASCII? ............................................................................................................. 32 3.4. Программа для практики ....................................................................................................... 33 3.5. Подведем итоги ...................................................................................................................... 34 ЧАСТЬ II. УСЛОЖНЯЕМ ЗАДАЧИ ....................................................................................... 37 Глава 4. Создание циклов ......................................................................................................... 39
4.1. Еще немного о сегментации памяти. 39 4.1.2. Введение в адресацию .................................................................................................... 39 4.2. Создание циклов .................................................................................................................... 42 4.2.1. Пример высокоуровневой оптимизации ....................................................................... 43 4.3. Условный и безусловный переходы ..................................................................................... 44 4.3.1. Пример низкоуровневой оптимизации .......................................................................... 45
Оглавление
4.4. Программа для практики ....................................................................................................... 45 4.4.1. Принцип работы программы. 46 Глава 5. Подпрограммы ............................................................................................................ 47
5.1. Исправляем ошибку ............................................................................................................... 47 5.2. Подпрограммы ....................................................................................................................... 48 5.3. Программа для практики ....................................................................................................... 51 5.4. Несколько слов об отладчике AFD ....................................................................................... 53 Глава 6. Работа со стеком ......................................................................................................... 54
6.1. Стек ......................................................................................................................................... 54 6.2. Программа для практики ....................................................................................................... 61 6.2.1. Оператор nop ................................................................................................................... 61 6.2.2. Хитрая программа ........................................................................................................... 62 Глава 7. Операторы сравнения ................................................................................................ 64
7.1. Разбор программы из главы 6
............................................................................................... 64 7.2. Оператор сравнения ............................................................................................................... 66 7.3. Понятия условного и безусловного переходов. 69 7.4. Расширенные коды ASCII ..................................................................................................... 69 7.5. Программа для практики ....................................................................................................... 71 Глава 8. Учимся работать с файлами ..................................................................................... 74
8.1. Программа из прошлой главы .............................................................................................. 74 8.2. Основы работы с файлами .................................................................................................... 76 8.3. Программа для практики ....................................................................................................... 82 Глава 9. Работа с файлами ........................................................................................................ 84
9.1. Программа из прошлой главы .............................................................................................. 84 9.2. Программа для практики ....................................................................................................... 87 ЧАСТЬ III. ФАЙЛОВАЯ ОБОЛОЧКА, ВИРУС, РЕЗИДЕНТ ........................................... 91 Глава 10. Введение в вирусологию. Обработчик прерываний .......................................... 93
10.1. Программа из прошлой главы ............................................................................................ 93 10.2. Вирус ..................................................................................................................................... 97 10.2.1. Структура и принцип работы вируса .......................................................................... 98 Что должен делать вирус .................................................................................................... 98 Какой объем памяти занимает вирус ................................................................................. 98 Что может вирус .................................................................................................................. 98 Какой вирус мы будем изучать .......................................................................................... 98 Что будет делать вирус ....................................................................................................... 98 Как оформляется вирус ....................................................................................................... 98 10.3. Резидент ................................................................................................................................ 99 10.3.1. Подробней о прерываниях ........................................................................................... 99 10.4. Первый обработчик прерывания ...................................................................................... 101 10.4.1. Новые операторы и функции прерываний ................................................................ 104 10.5. Работа с флагами процессора ........................................................................................... 104 10.5.1. Как проверить работу программы ........................................................................... 106 Глава 11. Управление видеоадаптером ................................................................................ 109
11.1. Оболочка ............................................................................................................................. 109 11.2. Управление видеокартой ................................................................................................... 112
Оглавление Глава 12. Повторная загрузка резидента ............................................................................. 115
12.1. Резидент .............................................................................................................................. 115 12.2. Проверка на повторную загрузку резидента. 115 12.3. Команды работы со строками ........................................................................................... 118 12.4. Использование xor и sub для быстрого обнуления регистров ........................................ 125 12.5. Задание для освоения информации изданной главы ...................................................... 126 Глава 13. Поиски считывание файлов вирус. 127
13.1. Теория ................................................................................................................................. 127 13.2. Практика ............................................................................................................................. 128 13.3. Команда пересылки данных movs ..................................................................................... 132 13.4. Передача управления программе, расположенной в другом сегменте ......................... 134 13.5. Поиск файлов ..................................................................................................................... 135 Глава 14. Вывод окна в центре экрана ................................................................................. 137
14.1. Модели памяти ................................................................................................................... 137 14.1.1. Почему мы пишем только файлы типа COM?.......................................................... 137 14.1.2. Что такое модель памяти и какие модели бывают ................................................. 137 14.2. Оболочка SuperShell .......................................................................................................... 139 14.2.1. Управление курсором ................................................................................................. 139 14.2.2. Операторы работы со стеком процессора 80286+ ................................................... 140 14.3. Процедура рисования рамки (окна) .................................................................................. 142 14.3.1. Прямое отображение в видеобуфер........................................................................... 142 14.3.2. Процедура Draw_frame ............................................................................................... 143 Что такое линейный адрес и зачем он нужен ................................................................. 144 14.4. Практика ............................................................................................................................. 145 14.5. Новые операторы ............................................................................................................... 145 Глава 15. Обработка аппаратных прерываний .................................................................. 148
15.1. Теория ................................................................................................................................. 148 15.1.1. Сохранение предыдущего вектора прерывания ....................................................... 150 15.1.2. Способы передачи управления на прежний адрес прерывания .............................. 151 Первый способ .................................................................................................................... 151 Второй способ ..................................................................................................................... 151 15.2. Инструкции ret и retf .......................................................................................................... 152 15.2.1. Оператор ret ................................................................................................................. 152 15.2.2. Оператор retf................................................................................................................ 153 15.3. Механизм работы аппаратных прерываний. Оператор iret ............................................ 155 15.4. Практика ............................................................................................................................. 157 15.5. Логические команды процессора ..................................................................................... 159 15.5.1. Оператор or ................................................................................................................. 159 15.5.2. Оператор and ............................................................................................................... 160 15.5.3. Оператор xor ................................................................................................................ 161 15.6. Аппаратные прерывания нашего резидента .................................................................... 162 15.6.1. Аппаратное прерывание 05h ...................................................................................... 162 15.6.2. Аппаратное прерывание 09h ...................................................................................... 162 15.6.3. Аппаратное прерывание 1Ch ..................................................................................... 163 15.7. Резюме ................................................................................................................................ 164 Глава 16. Принципы работы отладчиков ............................................................................ 165
16.1. Как работает отладчик ....................................................................................................... 165 16.1.1. Прерывание 03h .......................................................................................................... 165
Оглавление
16.2. Способы обойти отладку программы ............................................................................... 170 16.2.1. Таблица векторов прерываний. 170 16.3. Практика ............................................................................................................................. 172 Глава 17. Заражение файлов вирусом ................................................................................... 174
17.1. Определение текущего смещения выполняемого кода .................................................. 174 17.2. Вирус ................................................................................................................................... 176 17.2.1. Первые байты "файла-жертвы" .................................................................................. 180 17.2.2. Передача управления "файлу-жертве" ...................................................................... 181 Глава 18. Высокоуровневая оптимизация программ ........................................................ 183
18.1. Пример высокоуровневой оптимизации .......................................................................... 183 18.2. Ошибка в главе 17 .............................................................................................................. 184 18.3. Оболочка Super Shell ......................................................................................................... 185 18.3.1. Передача данных процедуре через стек .................................................................... 185 18.3.2. Передача параметров в стеке ..................................................................................... 192 18.3.3. Вычисление длины строки на стадии ассемблирования.......................................... 192 18.3.4. Процедуры Copy_scr / Restore_scr (display.asm) ...................................................... 193 18.3.5. Оператор scas .............................................................................................................. 194 18.3.6. Подсчет длины нефиксированной строки ................................................................. 196 18.3.7. Вывод строки на экран путем прямого отображения в видеобуфер ...................... 198 18.4. Резюме ................................................................................................................................ 199 Глава 19. Создание резидентного шпиона ........................................................................... 200
19.1. Резидент .............................................................................................................................. 200 19.2. Что нужно вам вынести из этой главы ........................................................................... 204 Глава 20. Финальная версия вируса ..................................................................................... 205
20.1. Вирус ................................................................................................................................... 206 20.1.1. Альтернативы ret, call и jmp ....................................................................................... 206 20.1.2. Заражение файла ......................................................................................................... 207 20.1.3. Общая схема работы вируса ...................................................................................... 210 20.2. Резюме ................................................................................................................................ 211 Глава 21. Работа с блоками основной памяти .................................................................... 213
21.1. Оболочка SuperShell .......................................................................................................... 213 21.1.1. Теория .......................................................................................................................... 213 21.1.2. Практика ...................................................................................................................... 214 Новшество первое ............................................................................................................... 214 Новшество второе ............................................................................................................... 215 21.1.3. Оператор test................................................................................................................ 215 21.2. Работа с основной памятью DOS ..................................................................................... 219 21.2.1. Управление памятью .................................................................................................. 219 21.2.2. Считываем файлы в отведенную память .................................................................. 222 Глава 22. Часто задаваемые вопросы ................................................................................... 223 Глава 23. Область PSP и DTA. Системные переменные (окружение DOS) ................... 225
23.1. Структура командной строки ............................................................................................ 226 23.2. Системные переменные (окружение MS-DOS) ............................................................... 227 23.3. Основной резидент ............................................................................................................ 231 23.3.1. Команды безусловного перехода ............................................................................... 232
Оглавление
23.3.2. Команды управления флагами ................................................................................... 233 23.3.3. Изменение параметров резидента налету. Задание для закрепления сведений изданной главы ...................................................... 237 Глава 24. Резидентный антивирус ........................................................................................ 238
24.1. Регистры микропроцессоров 80386/80486. Хранение чисел в памяти ......................... 238 24.1.1. 16- и разрядные отладчики ................................................................................... 240 24.1.2. Директива use16/use32 ................................................................................................ 241 24.1.3. Сопоставление ассемблера и языков высокого уровня ........................................... 241 24.2. Резидентный антивирус. Практика ................................................................................... 242 24.3. Резюме ................................................................................................................................ 247 Глава 25. Работа с сопроцессором ......................................................................................... 248
25.1. Ответы на некоторые вопросы ......................................................................................... 248 25.2. Введение в работу с сопроцессором ................................................................................ 249 25.3. Первая программа с использованием сопроцессора ....................................................... 254 25.4. Вывод десятичного числа с помощью сопроцессора ..................................................... 255 25.5. Оболочка ............................................................................................................................. 256 25.5.1. Получение и вывод длинного имени файла .............................................................. 256 Глава 26. История развития ПК ............................................................................................ 258
26.1. Краткая история развития совместимых компьютеров ......................................... 258 26.2. С чего все начиналось ....................................................................................................... 259 26.3. Оболочка ............................................................................................................................. 260 26.3.1. Чтение файлов из каталога и размещение их в отведенной памяти ....................... 261 26.3.2. Размещение файлов в памяти нашей оболочки ........................................................ 262 Глава 27. Удаление резидента из памяти ............................................................................. 264
27.1. Обзор последнего резидента ............................................................................................. 264 27.1.1. Перехват прерывания 21h .......................................................................................... 264 27.1.2. Как удалять загруженный резидент из памяти ....................................................... 267 27.1.3. Случаи, когда резидент удалить невозможно ........................................................... 268 27.2. Практика ............................................................................................................................. 269 Глава 28. Алгоритм считывания имен файлов в память ................................................. 271
28.1. Новый алгоритм считывания файлов в память ............................................................... 271 28.2. Процедура вывода имен файлов на экран ........................................................................ 273 28.3. Новые переменные в оболочке ......................................................................................... 274 28.4. Обработка клавиши. Обработка клавиши Глава 29. Загрузка и запуск программ ................................................................................. 278
29.1. Подготовка к запуску программы и ее загрузка .............................................................. 278 29.1.1. Выделяем память для загружаемой программы ....................................................... 279 Зачем необходимо урезать память перед загрузкой ....................................................... 279 Зачем во второй строке мы сдвигаем набита вправо это смещение ......................... 280 А для чего увеличиваем bx на единицу (3)?...................................................................... 280 29.1.2. Переносим стек в область PSP ................................................................................... 280 29.1.3. Подготовка EPB .......................................................................................................... 281 Еще несколько слово системных переменных (сегменте окружения DOS) ................. 282 Для чего нужно создавать свое окружение DOS? ............................................................ 283 Сегмент и смещение командной строки ........................................................................... 283 Первый и второй адрес блоков FCB .................................................................................. 284
Оглавление
29.1.4. Сохранение регистров ................................................................................................ 284 29.1.5. Запуск программы ....................................................................................................... 285 29.2. "Восстановительные работы" ........................................................................................... 286 Глава 30. Работа с расширенной памятью .......................................................................... 288
30.1. Расширенная (XMS) память. Общие принципы .............................................................. 288 30.2. Программа XMSmem.asm. Получение объема памяти ......................................... 289 30.2.1. Подготовка к использованию расширенной памяти и вывод объема памяти ..................................................................................... 289 30.3. Программа XMSblock.asm. Чтение файла в расширенную память и вывод его на экран .......................................................................................................... 291 30.3.1. Работа с расширенной памятью ................................................................................. 293 30.3.2. Структура массива при работе с памятью ...................................................... 293 30.4. Программа XMScopy.asm. Копирование файла с использованием расширенной памяти ......................................................................................................... Глава 31. Обзор дополнительных возможностей оболочки ............................................. 296
31.1. Оболочка Super Shell ......................................................................................................... 296 31.1.1. Вызов внешних вспомогательных программ ........................................................... 297 31.1.2. Редактирование файла ................................................................................................ 298 31.2. Антивирусные возможности оболочки ............................................................................ 299 31.2.1. Как защитить компьютер от заражения его резидентными вирусами ................... 299 31.2.2. Как защитить компьютер от программ-разрушителей дисковой информации ..... 300 Глава 32. Все о диске и файловой системе ............................................................. 302
32.1. Что находится на диске ................................................................................................... 302 32.1.1. Таблица разделов жесткого диска ............................................................................. 302 32.1.2. Загрузочный сектор .................................................................................................... 303 32.1.3. Таблица размещения файлов (FAT) .......................................................................... 304 32.2. Удаление и восстановление файла ................................................................................... 305 32.3. Ошибки файловой системы. 306 32.3.1. Потерянные кластеры файловой системы FAT, FAT32 .......................................... 306 ПРИЛОЖЕНИЯ Приложение 1. Ассемблирование программ (получение машинного кода из ассемблерного листинга) .................................................................................................... 309 П. Загрузка MASM 6.10—6.13 .............................................................................................. 309 П. Ассемблирование .............................................................................................................. 309 П. Компоновка ....................................................................................................................... 310 П. Ассемблирование и компоновка программ пакетами Microsoft (MASM) ............ 311 Приложение 2. Типичные ошибки при ассемблировании программы .......................... 312 Приложение 3. Таблицы и коды символов .......................................................................... 313 П. Основные символы ASCII ................................................................................................ 313 П. Расширенные коды ASCII ................................................................................................ 320 П. Скан-коды клавиатуры ..................................................................................................... 322 Приложение 4. Содержимое компакт-диска ........................................................................ 324 Предметный указатель ............................................................................................................ 325

  1   2   3   4   5   6   7   8   9   ...   26

перейти в каталог файлов
связь с админом