Приветствую!
Ассемблер, как многим кажется, очень сложен.
Как человек, который использует его как основной метод связи с компьютером, скажу "Нет". И в данной статье попутно объясню, почему его считают сложным. Поехали!
1. Почему многие считают ассемблер сложным?
Это пошло из-за его не читабельных с первого взгляда команд, непонятных значений и так далее.
На самом же деле, он не сложнее в изучении чем тот же C++.
2. Пишем первую программу на ассемблере
Я бы мог вам показать работу с популярными ассемблерами, такими как NASM/FASM(на которых я и пишу свой код), однако они слишком сложные для новичков. Давайте рассмотрим высокоуровневый ассемблер MASM(Macro Assembler).
- P.S. Высокоуровневый ассемблер - Ассемблер, который в большинстве ситуаций очень похож(а иногда и не отличим) от высокоуровневого языка программирования.
Итак, для начала давайте скачаем MASM с сайта https://www.masm32.com/download.htm, а именно его 32-битную версию.
Почему спросят некоторые. А всё просто - 32-битная версия MASM поддерживается не только в 64-битных операционных системах, но и в 32-битных. Про 64-битную версию тоже самое сказать нельзя.
Далее устанавливаем его - и всё. Мы готовы написать первую программу на MASM!
.386 ;Для того, чтобы программа работала на большинстве процессоров
; Настраиваем тип программы
.model flat, stdcall
option casemap :none
; Импортируем нужные библиотеки
include \masm32\include\masm32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
; Пишем код!
.code
start: ;"Функция" start, выполняется первой
print "Hello world" ; Вывод
exit ; Выход из программы
end start ;Конец "функции" start
Можете вставить этот код в любой доступный файл.
Компилируем, и... Вуаля!
У вас конечно же не будет ожидание клавиши, так как у меня специально настроенная командная консоль. Но вы можете добавить команду waitkey.
Вот и всё!
Конечно же, это не сравнишь с Java/Python, но это точно не то, что вы думали.
На этом всё!
Всем удачного времяпровождения,
Тимофей.