Пишем Hello World на ассемблере под Windows RT с использованием winapi

в 21:01, , рубрики: visual studio 2012, windows, Windows RT, ассемблер, планшеты, метки: , , ,

Однажды, совсем недавно, на планшетах с Windows Microsoft потеряла миллионы долларов. Ну а мы сегодня просто будем писать под них на ассемблере.

Пишем Hello World на ассемблере под Windows RT с использованием winapi

Нам понадобятся следующие вещи.

  • Установленная Microsoft Visual Studio с поддержкой ARM ассемблера, например 2012.
  • Jailbreak'нутый планшет с установленной Windows RT, например Microsoft Surface RT.

Для начала создадим отдельную папку для проекта, в которой создадим файл 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 замечана странность: макросы и инструкции обязательно должны содержать перед собой хотя бы один символ табуляции, а вот метки и имена областей памяти наоборот, не должны ничего перед собой содержать(т.е. должны начинаться сразу с начала строки), иначе будут ошибки.

Итак, текст мы набрали, теперь приступим к компиляции. Из меню «Пуск» запускаем:

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. Копируем его на планшет, и вуаля!

Пишем Hello World на ассемблере под Windows RT с использованием winapi

Автор: Nyashkoshkko

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js