Библиотека knigago >> Учебники и пособия >> Статьи и рефераты >> Введение в NASM (низкоуровневое программирование для Windows)


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2064, книга: Мишка по имени Оги
автор: Анастасия Ефимова

Я прочитал очаровательную книжку "Мишка по имени Оги" Анастасии Ефимовой. Это замечательная сказка для детей с трогательными персонажами и мудрыми уроками. Оги - очаровательный медвежонок, который сталкивается с различными испытаниями на своем пути. Но благодаря упорству и помощи друзей он учится преодолевать трудности и ценить то, что у него есть. Сказка полна волшебства и приключений, но вместе с тем она учит детей важным ценностям. Она показывает, что даже при самых маленьких...

Игорь Орещенков - Введение в NASM (низкоуровневое программирование для Windows)

Введение в NASM (низкоуровневое программирование для Windows)
Книга - Введение в NASM (низкоуровневое программирование для Windows).  Игорь Орещенков  - прочитать полностью в библиотеке КнигаГо
Название:
Введение в NASM (низкоуровневое программирование для Windows)
Игорь Орещенков

Жанр:

Статьи и рефераты, Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Assembler

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Введение в NASM (низкоуровневое программирование для Windows)"

Краткое введение в макроассемблер NASM для Windows.

Читаем онлайн "Введение в NASM (низкоуровневое программирование для Windows)". [Страница - 6]

import %1 DLL %2

%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. В любом случае стоит отметить тот замечательный факт, что большинство инструментов, описанных в этой статье, являются абсолютно бесплатными и могут легально использоваться в том числе и в коммерческих разработках.

Конечно, в одной статье невозможно рассказать обо всех аспектах низкоуровневого программирования. Заинтересовавшемуся читателю придется перечитать многие страницы технических руководств и других статей, прежде чем он будет вознагражден реально работающей --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.