Использование ассемблера на примере одной игры - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

Использование ассемблера на примере одной игры

Шаманаев И.Р. 1, Абрамова О.Ф. 1
1Волжский Политехнический институт (филиал) ВолгГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Ассе́мблер — транслятор текста программы, написанной на языке ассемблера, в программу на машинном языке. Это название пошло от английского слова 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.

Просмотров работы: 28