Игорь Орещенков - Введение в NASM (низкоуровневое программирование для Windows)
Название: | Введение в NASM (низкоуровневое программирование для Windows) | |
Автор: | Игорь Орещенков | |
Жанр: | Статьи и рефераты, Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Assembler | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | 2004 | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Введение в NASM (низкоуровневое программирование для Windows)"
Краткое введение в макроассемблер NASM для Windows.
Читаем онлайн "Введение в NASM (низкоуровневое программирование для Windows)". [Страница - 6]
%endif
%endmacro
Эти макросы удобно сохранить в файле import.inc и подключать его при описании библиотек импорта. Используются они следующим образом:
DLL KERNEL32.DLL
FUNCT ExitProcess
FUNCT GetCommandLine, GetCommandLineA
…
DLL USER32.DLL
FUNCT MessageBox, MessageBoxA
FUNCT CreateWindowEx, CreateWindowExA
…
…
Как видно из этого простого примера, макрос DLL начинает блок описания функций, импортируемых из определенной динамической библиотеки. Существенно то, что имя DLL-файла обязательно должно указываться с расширением, иначе программа, вполне работоспособная в Windows 9x/Me, откажется запускаться под Windows NT/2000. Макрос FUNCT служит для описания импортируемых функций. Первый его параметр задает идентификатор функции в том виде, в каком он будет использоваться в программе, а второй соответствует идентификатору, записанному в самой DLL-библиотеке. Если оба идентификатора совпадают, второй параметр можно опустить.
Теперь пришло время продемонстрировать пример простой программы, которая будет выводить на экран диалоговое окно с содержимым командной строки. Сначала нужно набрать исходные тексты макросов DLL, FUNCT, DO и WITH, которые приведены выше, и сохранить их в файле import.inc. Затем следует создать файл import.asm, в котором описать используемые в примере функции Win32 API следующим образом:
DLL KERNEL32.DLL
FUNCT GetCommandLine, GetCommandLineA
FUNCT ExitProcess
DLL USER32.DLL
FUNCT MessageBox, MessageBoxA
Теперь в соответствии с тем, что говорилось о разработке модульных программ, нужно связать INC- и ASM-файлы, создав файл import.nsm следующего содержания:
import.asm
-p import.inc
-f obj
Можно попробовать выполнить компиляцию этого файла так, как было описано выше. В результате должен получиться файл import.obj, который позволит разрабатываемой программе обращаться к описанным функциям Win32 API. Исходный текст самой программы нужно записать в файле test.asm:
segment .data
szCaptiondb «The command line is…»
segment .text
start:
DO GetCommandLine
DO MessageBox WITH 0, eax, szCaption, 0
xor eax, eax
DO ExitProcess WITH eax
а в файл test.inc поместить описания экспорта-импорта в следующей форме:
global start
extern MessageBox
extern GetCommandLine
extern ExitProcess
Увязать оба созданных файла, как и в предыдущем случае, следует с помощью файла test.nsm следующего содержания:
test.asm
-p test.inc
-p import.inc
-f win32
После того, как оба модуля, IMPORT и TEST, будут успешно скомпилированы, т.е. появятся объектные файлы import.obj и test.obj, можно переходить к созданию исполняемой программы с помощью следующей команды:
C:\> alink test.obj import.obj –oPE –entry start]
Если все было проделано правильно, то в каталоге появится файл test.exe, который можно запустить. Если в командной строке ничего не указывать, на экран будет выведено окно с полным путем к EXE-файлу. Если при запуске написать в командной строке какой-нибудь текст, он будет выведен на экран следом за путем к файлу. Так работает функция GetCommandLine.
В заключение обобщим то, о чем шла речь в этой статье. Вначале была рассмотрена область применения микропроцессорной техники, чем аргументирована важность навыков низкоуровневого программирования. Было предложено осуществить знакомство с этим процессом в привычной операционной среде IBM-совместимого компьютера. Далее в целях облегчения старта для новичков в области программирования был рассмотрен спектр инструментальных средств и предложен конкретный набор, включающий в себя компилятор исходных текстов и ресурсов, компоновщик объектных и библиотечных файлов, отладчик и текстовый редактор. Были даны рекомендации по технике модульного программирования, рассмотрены основные правила использования функций Win32 API в программах на ассемблере, приведен пример простейшего приложения, разработанного с учетом предложенных рекомендаций. Если читатель дошел до этих последних строк статьи, он уже может сделать предварительный вывод о том, насколько продуктивно заниматься низкоуровневым программированием под Windows. В любом случае стоит отметить тот замечательный факт, что большинство инструментов, описанных в этой статье, являются абсолютно бесплатными и могут легально использоваться в том числе и в коммерческих разработках.
Конечно, в одной статье невозможно рассказать обо всех аспектах низкоуровневого программирования. Заинтересовавшемуся читателю придется перечитать многие страницы технических руководств и других статей, прежде чем он будет вознагражден реально работающей --">Книги схожие с «Введение в NASM (низкоуровневое программирование для Windows)» по жанру, серии, автору или названию:
Дина Полоскова - Квест для демиурга (СИ) Жанр: Фэнтези: прочее Год издания: 2015 |
Дарья Андреевна Кузнецова - Симфония для пяти струн (СИ) Жанр: Детективная фантастика Год издания: 2015 |
Ричард Темплар - Правила карьеры. Все, что нужно для служебного роста Жанр: Деловая литература: прочее Год издания: 2011 |
Милена Стайл - Я для тебя остановлю эту планету (СИ) Жанр: Современные любовные романы Год издания: 2017 |