- PVSM.RU - https://www.pvsm.ru -
Однажды, совсем недавно, на планшетах с Windows Microsoft потеряла [1] миллионы долларов. Ну а мы сегодня просто будем писать под них на ассемблере.
Нам понадобятся следующие вещи.
Для начала создадим отдельную папку для проекта, в которой создадим файл arm.asm, содержимое которого под катом.
AREA data, DATA
Text DCB "Hello world(text)", 0x0
Caption DCB "Hello world(caption)", 0x0
EXPORT WinMainCRTStartup
IMPORT __imp_MessageBoxA
IMPORT __imp_ExitProcess
AREA text, CODE
WinMainCRTStartup PROC
movs r3,#0
ldr r2,Caption_ptr
ldr r1,Text_ptr
movs r0,#0
ldr r4,MessageBoxA_ptr
ldr r4,[r4]
blx r4
movs r0,#0
ldr r4,ExitProcess_ptr
ldr r4,[r4]
blx r4
MessageBoxA_ptr DCD __imp_MessageBoxA
ExitProcess_ptr DCD __imp_ExitProcess
Text_ptr DCD Text
Caption_ptr DCD Caption
ENDP
END
Причем у ассемблера в составе Visual Studio 2012 замечана странность: макросы [2] и инструкции [3] обязательно должны содержать перед собой хотя бы один символ табуляции, а вот метки и имена областей памяти наоборот, не должны ничего перед собой содержать(т.е. должны начинаться сразу с начала строки), иначе будут ошибки.
Итак, текст мы набрали, теперь приступим к компиляции. Из меню «Пуск» запускаем:
Microsoft Visual Studio 2012 — Visual Studio Tools — Командная строка VS2012 ARM Cross Tools.
Из открывшегося окна ввода команд переходим в каталог с исходниками, например:
cd my_arm_proj
Далее последовательно вводим команды:
armasm arm.asm
link arm.obj user32.lib kernel32.lib /subsystem:windows
В итоге на выходе в директории программы получим исполняемый файл arm.exe. Копируем его на планшет, и вуаля!
Автор: Nyashkoshkko
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows/46677
Ссылки в тексте:
[1] потеряла: http://www.ixbt.com/news/hard/index.shtml?17/04/73
[2] макросы: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489g/Cacigaci.html
[3] инструкции: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489g/Cjafgdih.html
[4] Источник: http://habrahabr.ru/post/199094/
Нажмите здесь для печати.