Assembler. Учебный курс. Пирогов
Язык ассемблера фактически представляет собой машинный язык (язык процессора), где коды команд заменены именами.
Человек лучше ориентируется в именах, чем в числах, поэтому язык ассемблера проще для понимания, чем машинный язык. Кроме того, сами имена могут быть говорящими, например, MOV (от MOVE — перемещать), ADD (прибавлять) и т.п., что дает дополнительные удобства.
Другим упрощением языка ассемблера по отношению к машинному является использование меток вместо конкретных адресов. Это значительно упрощает работу, т.к. не нужно думать, по какому адресу расположена та или иная команда или данные.
Вот два основных момента, которые определяют язык ассемблера и отличают его от машинного языка. Дальнейшее развитие ассемблера шло по пути совершенствования макросредств. Ассемблер, имеющий в своем распоряжении макросредства, называют макроассемблером.
Я в своей книге почти не буду касаться макросредств, т.к. использование их, на мой взгляд, не слишком облегчает программирование на ассемблере, а, скорее, скрывает некоторые важные моменты.
Во всяком случае, я не советовал бы использовать их начинающим: детальное проникновение во все тонкости работы программы поможет Вам в будущем стать профессиональным программистом
Если вам понравилась эта книга поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересных и нужным вам книг!
Cхожие Книги
Программирование на языке Ассемблера М.Ю. Смоленцев
Программирование на языке ассемблера IBM PC. В. Н. Пильщиков
Программирование на Ассемблере для PIC. Носов
В.Ю. Пирогов: Ассемблер для Windows
Программирование на языке Ассемблер для Windows является не так уж сложной задачей, как кажется многим.
Автор освещает в книге многие основаполагающие темы такие, как обработка файлов, написание VXD-драйверов, программирование в локальной сети, использование многозадачности и многое другое.
Особое внимание в книге уделено некоторым методикам, которые используют хакеры при написании вредоносных программ. Знание способов атак хакеров не лишнее и должно помочь многим программистам в борьбе с атаками компьютерных преступников.
Книга содержит множество полностью разобранных примеров с комментариями. В книге описаны как относительно простые, так и сложные программы.
Материал книги содержит множество справочной информации, которая окажет неоценимую помощь при изучении языка.
Книга будет полезной прежде всего тем, кто имеет хотя бы небольшое представление об Ассемблере.
Издатель: Молгачева С.В.
Год издания: 2002
Скачано: 17832 раз
Скачать книгу
Комментарии
Eva, 08.09.2011 18:36
AlexRsk, 15.11.2011 03:41
Автор излагает на уровне, требующем предварительной подготовки, существенно большей, чем написано в предисловии. Перед прочтением данной книги рекомендую прочитать книгу Юрова и Гука.
[eth0], 17.05.2012 05:18
This is Cool. Very good it book
Blast, 29.12.2012 22:04
Milten, 25.06.2013 20:33
А мне не понравилась книга. Автор очень поверхостно излагает материал, больше своих предположений.
Володя, 22.03.2016 13:40
Если честно, на учебник эта книга не тянет совсем. Понадергал автор информации без какой-либо системы, я когда-то в университете изучал ассемблер поверхностно, потребовалось спустя годы более глубокое изучение — но половину написанного с первого раза не понимал. У Питера Абеля хорошо написано, но устарела его книга чуть-чуть уже, т.к. там регистры основные еще 16-битные, да и переводчик много ошибок делал.
Sergey, 17.06.2018 23:16
Assembler для windows пирогов
Название: Ассемблер для Windows (+CD)
Автор: Пирогов В.Ю.
Издательство: БХВ-Петербург
Год: 2007
Страниц: 886
ISBN: 978-5-9775-0084-5
Формат: PDF
Размер: 101 Мб
Язык: русский
Серия: Профессиональное программирование
Рассмотрены необходимые сведения для программирования Windows-приложений на ассемблерах MASM и TASM: разработка оконных и консольных приложений; создание динамических библиотек; многозадачное программирование; программирование в локальной сети, в том числе и с использованием сокетов; создание драйверов, работающих в режиме ядра; простые методы исследования программ и др.
В 4-м издании материал существенно переработан в соответствии с новыми возможностями ОС. Значительно шире рассмотрены вопросы управления файлами и API-программирования в Windows. Добавлен материал по программированию в ОС семейства Windows NT: Windows 2000/XP/ Server 2003/Vista.
На компакт-диске приведены многочисленные примеры, сопровождающие текст и проверенные на работоспособность в операционной системе Windows Vista.
Для программистов.
Введение
Введение ко второму изданию книги «Ассемблер для Windows»
Введение к третьему изданию книги «Ассемблер для Windows»
Часть I. Основы программирования в Windows
Глава 1.1. Средства программирования в Windows
Глава 1.2. Основы программирования в операционной системе Windows
Глава 1.3. Примеры простых программ на ассемблере
Глава 1.4. Ассемблер MASM
Глава 1.5. О кодировании текстовой информации в операционной системе Windows
Часть II. Простые программы, консольные приложения, обработка файлов
Глава 2.1. Вывод графики и текста в окно. Библиотека GDI
Глава 2.2. Графика: GDI+, DirectX, OpenGL
Глава 2.3. Консольные приложения
Глава 2.4. Понятие ресурса. Редакторы и трансляторы ресурсов
Глава 2.5. Примеры программ, использующих ресурсы
Глава 2.6. Управление файлами: начало
Глава 2.7. Директивы и макросредства ассемблера
Глава 2.8. Еще об управлении файлами (CreateFile и другие функции)
Часть III. Сложные примеры программирования в Windows
Глава 3.1. Таймер в оконных приложениях
Глава 3.2. Многозадачное программирование
Глава 3.3. Создание динамических библиотек
Глава 3.4. Сетевое программирование
Глава 3.5. Разрешение некоторых проблем программирования в Windows
Глава 3.6. Некоторые вопросы системного программирования в Windows
Глава 3.7. Совместное использование ассемблера с языками высокого уровня
Глава 3.8. Программирование сервисов
Часть IV. Отладка, анализ кода программ, драйверы
Глава 4.1. Обзор инструментов для отладки и дизассемблирования
Глава 4.2. Отладчик OllyDbg
Глава 4.3. Описание работы с дизассемблером W32Dasm и отладчиком SoftICE
Глава 4.4. Основы анализа кода программ
Глава 4.5. Исправление исполняемых модулей
Глава 4.6. Структура и написание драйверов
Приложения
Приложение 1. Справочник API-функций и сообщений Windows
Приложение 2. Справочник по командам и архитектуре микропроцессора Pentium
Приложение 3. Защищенный режим микропроцессора Pentium
Приложение 4. Структура исполняемых модулей
Приложение 5. Файл kern. inc, используемый в главе
Приложение 6. Пример консольного приложения с полной обработкой событий
Приложение 7. Описание компакт-диска
Список литературы
Предметный указатель
В.Ю. Пирогов: Ассемблер для Windows
Программирование на языке Ассемблер для Windows является не так уж сложной задачей, как кажется многим.
Автор освещает в книге многие основаполагающие темы такие, как обработка файлов, написание VXD-драйверов, программирование в локальной сети, использование многозадачности и многое другое.
Особое внимание в книге уделено некоторым методикам, которые используют хакеры при написании вредоносных программ. Знание способов атак хакеров не лишнее и должно помочь многим программистам в борьбе с атаками компьютерных преступников.
Книга содержит множество полностью разобранных примеров с комментариями. В книге описаны как относительно простые, так и сложные программы.
Материал книги содержит множество справочной информации, которая окажет неоценимую помощь при изучении языка.
Книга будет полезной прежде всего тем, кто имеет хотя бы небольшое представление об Ассемблере.
Издатель: Молгачева С.В.
Год издания: 2002
Скачано: 17832 раз
Скачать книгу
Комментарии
Eva, 08.09.2011 18:36
AlexRsk, 15.11.2011 03:41
Автор излагает на уровне, требующем предварительной подготовки, существенно большей, чем написано в предисловии. Перед прочтением данной книги рекомендую прочитать книгу Юрова и Гука.
[eth0], 17.05.2012 05:18
This is Cool. Very good it book
Blast, 29.12.2012 22:04
Milten, 25.06.2013 20:33
А мне не понравилась книга. Автор очень поверхостно излагает материал, больше своих предположений.
Володя, 22.03.2016 13:40
Если честно, на учебник эта книга не тянет совсем. Понадергал автор информации без какой-либо системы, я когда-то в университете изучал ассемблер поверхностно, потребовалось спустя годы более глубокое изучение — но половину написанного с первого раза не понимал. У Питера Абеля хорошо написано, но устарела его книга чуть-чуть уже, т.к. там регистры основные еще 16-битные, да и переводчик много ошибок делал.
Sergey, 17.06.2018 23:16
pirogov_vju
Пирогов Владислав Юрьевич
О программировании, ИТ и обо всем по немногу
Первой вопрос, который, я хочу рассмотреть и который, мне кажется, сейчас очень важным, это 64-битовое программирование. Естественно речь пойдет об ассемблере. В качестве такового возьмем fasm. Во-первых, поддерживает 64-битовое программирование, во-вторых, этот ассемблер является кроссплатформенным. Для того, чтобы начать писать 64-битовые программы достаточно 1. Узнать структуру программы; 2. Использовать правильное соглашение вызова системных и вообще функций.
Программирование в Windows.
В 64-битовых Windows принята следующая конвенция вызова функций (в том числе вызов функций API).
1. Первые четыре параметра передаются в функцию через регистры: rcx, rdx, r8, r9. Остальные параметры (если они есть) передаются через стек.
2. Перед вызовом функции резервируется область в стеке, на случай, если вызываемая функция «захочет» временно сохранить параметры в стеке. Таким образом, параметры, которые передаются через стек, помещаются туда после резервируемой области.
3. При передаче параметров, размер которых меньше 64 бит, передаются как 64-битовые параметры. При этом следует обнулить старшие биты. Параметры, большие 64-бит передаются по ссылке.
4. Данные возвращаются через регистр rax. Если возвращаемое значение имеет размер больший 64 бит, то данное передается через область памяти, адрес которой передается в первом параметре. Для возвращения может также использоваться регистр xmm0.
5. Все регистры при вызове функций сохраняются за исключением rax, rcx, rdx, r8, r9, r10, r11, сохранность которых не гарантируется.
6. Граница стека должна быть выровнена по адресу кратному 16.
Рассмотрим в общих чертах схему вызова функции API с пятью параметрами.
.
sub rsp,40 ; резервируем стек
mov qword ptr [rsp+32],par5
mov r9,par4
mov r8,par3,
mov rdx,par2
mov rcx,par1
call f_api64
.
add rsp,40 ;восстанавливаем стек
.
Обратите внимание, что в нашем случае стек с учетом адреса возврата при вызове функции оказывается выровненным на величину кратную 16 (48 байт). С учетом такого выравнивания вызов функции, содержащей только 4 параметра будет выглядеть так
sub rsp,40 ; резервируем стек
mov r9,par4
mov r8,par3,
mov rdx,par2
mov rcx,par1
call f_api64
.
add rsp,40 ;восстанавливаем стек
Рассмотрим следующую программу
format PE64 GUI
entry start
section ‘.text’ code readable executable
start:
sub rsp,8*5
mov r9,0
lea r8,[_caption]
lea rdx,[_message]
mov rcx,0
call [MessageBoxA]
add rsp,40
sub rsp,16
mov ecx,eax
call [ExitProcess]
section ‘.data’ data readable writeable
_caption db ‘Win64 assembly program’,0
_message db ‘Hello World!’,0
section ‘.idata’ import data readable writeable
dd 0,0,0,RVA kernel_name,RVA kernel_table
dd 0,0,0,RVA user_name,RVA user_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dq RVA _ExitProcess
dq 0
user_table:
MessageBoxA dq RVA _MessageBoxA
dq 0
kernel_name db ‘KERNEL32.DLL’,0
user_name db ‘USER32.DLL’,0
_ExitProcess dw 0
db ‘ExitProcess’,0
_MessageBoxA dw 0
db ‘MessageBoxA’,0