Ассе́мблер — транслятор текста программы, написанной на языке ассемблера, в программу на машинном языке. Это название пошло от английского слова assembler, что переводится, как «сборщик». В основном, язык ассемблера предназначен для написания команд для микроконтроллеров, поэтому в языке каждой мнемонике соответствует одна машинная инструкция.
Несмотря на сложность чтения и понимания данного языка, с его помощью можно воспроизвести самые разнообразные вещи. Например, многие игры для Sega и Dendy были написаны на различных диалектах языка ассемблера, включая SuperMarioBrothers, продажи которых превысили 70 миллионов копий по всему миру. А количество любительских вариаций различных игр поражает воображение.
По современным меркам и в сравнении с языками-конкурентами Ассемблер считается как технологически, так и морально устаревшим. Современные крупные компании геймдевелопмента, как и отдельные разработчики, используют игровые движки, поддерживающие такие языки, как С# или Java.
Для примера возьмём игру «Танки», реализованную на ассемблере.
Она состоит из нескольких файлов расширения .ASM, каждый из которых ответственен за отдельную часть игры, библиотека .lib и файлы, содержащие в себе функции и структуры, необходимые для работоспособности.
С помощью ассемблера в файле tank.asm реализовано управление танком и его текстура, отрисовка на поле боя и поведение ботов - противников в игре, управляемых компьютером.
m
Часть кода, реализующая движение танка.
ove_tank:
push ecx
push eax
push eax
sx=dword ptr [esp]
sy=dword ptr [esp+4]
mov eax, [esi+offsetTANK.angle]
fld dword ptr [esi+offsetTANK.skor]
fmul frame
fld st
fmul dword ptr cos[eax*4]
fst sx
fadd dword ptr [esi+offsetTANK.x]
fstpdword ptr [esi+offsetTANK.x]
fmul dword ptr sin[eax*4]
fst sy
fadd dword ptr [esi+offsetTANK.y]
fstp dword ptr [esi+offsetTANK.y]
call tank_pole
jnc short nepole
callcollide_pole
Ассемблер позволяет реализовывать простое меню игры
Разбиение игры на несколько файлов позволяет проще ориентироваться в коде. Вызов функций из других файлов игры не замедляет её загрузку и работу, так что можно сказать, что Ассемблер поддерживает такой вариант разработки. Стоит отметить, что язык хорошо показывает себя в оптимизации функций высокой сложности.
Библиографический список:
helloworld.ru – [Электронный ресурс]. http://www.helloworld.ru/texts/comp/ lang/asm/ win32/win322.htm#Game – (датаобращения: 23.11.2018)
gamedev.ru – [Электронный ресурс]. https://gamedev.ru/code/forum/?id= 177845&page=2 – (дата обращения:23.11.2018)
Абрамова О.Ф. Методика организации практических занятий с использованием ролевого подхода и case-заданий [Электронный ресурс] / О.Ф. Абрамова // Санкт-Петербургский образовательный вестник : электрон. науч.-практ. журнал. - 2017. - № 8 (12). - C. 9-15. – Режим доступа :http://ru.calameo.com/read/005072235e4dd2e099704.
Абрамова О.Ф. CASE-технологии: изучать или исключить? / О.Ф. Абрамова // Almamater (Вестник высшей школы). - 2012. - № 9. - C. 109-110.
Абрамова О.Ф. Анализ методов организации и проведения внеучебных конкурсных мероприятий в дистанционном формате / О.Ф. Абрамова, А.Ю. Александрина // Открытое и дистанционное образование. - 2017. - № 2 (66). - C. 14-25.