Найти в Дзене
Junior Coder

Это ассемблер, детка!

Я частенько заглядываю на всякие программисткие форумы и сайты посвященные ассемблеру, меня удивляет то, что всякую ахинею про ассемблер пишут не только комментаторы, но и авторы статей. Кто-то пишет, что в ассемблере 30-40 команд и главная сложность при его изучении, это знание архитектуры компьютера, а не знание команд. Кто-то пишет, что ассемблер это мертвый язык, и в настоящее время не используется. Один из авторов приводя пример кода на ассемблере вставил вообще какой-то набор непоследовательных команд, потому, как после команды сравнения типа CMP AX,0x255F0013 должна следовать команда условного перехода, а не команда пересылки данных MOV как было представлено у этого автора. Будучи более-менее посвященным в тему, решил внести свою лепту и, в меру своей посвященности, рассказать, что такое ассемблер (накипело так сказать :-)). Начнем с того, что в ассемблере нет команд как таковых, есть мнемокоды машинных команд, то есть машинные команды "очеловеченные" понятными людям именами,

Эта прикольная картинка взята с сайта picaby.ru, надеюсь они не будут против
Эта прикольная картинка взята с сайта picaby.ru, надеюсь они не будут против

Я частенько заглядываю на всякие программисткие форумы и сайты посвященные ассемблеру, меня удивляет то, что всякую ахинею про ассемблер пишут не только комментаторы, но и авторы статей. Кто-то пишет, что в ассемблере 30-40 команд и главная сложность при его изучении, это знание архитектуры компьютера, а не знание команд. Кто-то пишет, что ассемблер это мертвый язык, и в настоящее время не используется. Один из авторов приводя пример кода на ассемблере вставил вообще какой-то набор непоследовательных команд, потому, как после команды сравнения типа

CMP AX,0x255F0013

должна следовать команда условного перехода, а не команда пересылки данных MOV как было представлено у этого автора.

Будучи более-менее посвященным в тему, решил внести свою лепту и, в меру своей посвященности, рассказать, что такое ассемблер (накипело так сказать :-)).

Начнем с того, что в ассемблере нет команд как таковых, есть мнемокоды машинных команд, то есть машинные команды "очеловеченные" понятными людям именами, их также называют опкодами.

-2

синем на картинке выделены машинные команды, зеленым мнемоника ассемблера. "Команд" этих много, одних только команд сопроцессора штук 30-40.

"Языков" ассемблера довольно много и по мере развития техники появляются новые и совершенствуются старые. "Язык" зависит от архитектуры устройства для которого он написан. Микроконтролеры, пзу, которые используются в технике (стиральные машины, микроволновки) программируются на ассемблере, а не на пайтоне (например). 

Кстати (отвлекаясь от темы), питон, в списке на вымирание, стоит одним из первых, на мой взгляд, так как ИИ вытесняя программистов из сферы программирования, начнет с языков попроще, так что питонисты сами под себя роют яму (ИИ пишется в основном на пайтоне).

Даже в одном и том же компьютере низкоуровневый код может отличаться: биос кодится на одних мнемокодах, сиди-ром (например) немного на других.

Кто-то из великих программистов (не помню кто именно - имя, фамилия не наши) сказал, что нет на свете программиста изучившего все возможности С++, то же самое можно сказать и про ассемблер. По платформе Intel86 дальше всех продвинулся Ральф Броун, но и он не описал всех возможностей до конца.

Программируя на любом языке высокого уровня, в итоге, вы все равно программируете на языке ассемблера, просто обросшего всевозможными структурами, конструкциями, библиотеками, api-функциями. Можно просто вспомнить о том, что Си написан на ассемблере, а все остальные компиляторы (и интерпретаторы) написаны на Си.

Если захотите написать свой драйвер, свою мини-OS, загрузчик, компилятор, декомпилятор, взломать любую программу, все это можно сделать на ассемблере. У этого "языка" только один недостаток (на мой взгляд опять-таки) - это большой код.

P.S. Этой статьей я не хотел сказать, что, мол, забрасывайте все остальные языки программирования и переходите на ассемблер - мир не стоит на месте. Просто, мне не приятно когда один из самых моих любимых языков программирования "топчут ногами", так сказать.

#ассемблер что такое