Для тех, кто хотел бы сделать первый шаг и, возможно, немного поэкспериментировать, приведу последовательность действий, которые необходимо произвести, чтобы запустить простейшую программу на ассемблере на голом железе под эмулятором. Здесь я буду описывать процесс для Windows.
Итак, для начала скачайте и установить эмулятор QEMU. Последнюю сборку под Windows можно скачать отсюда: https://qemu.weilnetz.de/w64/
Также нам потребуется кросс-ассемблер FASMARM для Windows. Скачать его можно отсюда: https://arm.flatassembler.net/
Далее скопируйте текст программы в блокнот и сохраните в файл HelloWorld.s:
org 0x6001000
mov r0, 0x9000 ; Загружаем в регистр r0 адрес консоли 0x10009000, вначале младшую половину
movt r0, 0x1000 ; а потом старшую половину
adr r1,text ; Загружаем в регистр r1 адрес начала текста
mov r2,0 ; Обнуляем счётчик в регистре r2
loop:
ldrb r3,[r1,r2] ; Загружаем в регистр r3 код следующего символа надписи
str r3,[r0] ; Выводим в консоль код символа из регистра r3
add r2,1 ; Увеличиваем счётчик на единицу
cmp r3,10 ; Сравниваем код символа с кодом перевода строки
bne loop ; Переходим к следующему символу, если код символа не равен коду перевода
finish:
b finish ; В конце программы зацикливаем строку саму на себя
text:
db "Hello, World!", 10
Сам я лично вместо стандартного блокнота пользуюсь Notepad++ и подсветкой синтаксиса, которую сделал похожей на привычную мне среду разработки на Python — PyCharm:
Распакуйте архив с ассемблером. Оттуда понадобится только исполняемый (.exe) файл. И положите рядом с ним ваш HelloWorld.s. Теперь всё готово для компиляции! Открываем консоль, переходим в папку с ассемблером и нашим файлом, и подаём команду:
fasmarm HelloWorld.s
На выходе получаем файл HelloWorld.bin объёмом 54 байта. Теперь осталось только его запустить под эмулятором. Для запуска подаём такую команду в консоли:
"c:\Program Files\qemu\qemu-system-arm.exe" -M vexpress-a9 -serial stdio -kernel HelloWorld.bin
И наслаждаемся результатом:
Появились вопросы? Задавайте!