ДИЗАССЕМБЛЕР – это аппаратно ориентированная программа, которая выполняет перевод машинных кодов исполнительной программы в язык ассемблера.

Для того, чтобы понять, что же из себя представляет эта программа (ее иногда называют ТРАНСЛЯТОР), нужно обратиться к далекому прошлому, к тем временам, когда электронно-вычислительные машины занимали огромные помещения, а скорость этих ЭВМ исчислялась тысячами, реже миллионами операций в секунду. Для того, чтобы научить эти машины производить различные вычисления, составлялись программы. Программа представляла собой набор команд, алгоритм выполнения которых был реализован аппаратно в машине. Машине нельзя было сказать: «Сложи два числа». Или «Вычти из одного числа другое». Нужно было задать программу. Программа эта составлялась в машинных кодах. И действие сложения программировалось примерно так:

  1. Взять число «а»;
  2. Занести это число в регистр;
  3. Взять число «b»;
  4. Занести это число в другой регистр;
  5. Сложить содержимое первого регистра с содержимым второго регистра;
  6. Запомнить результат в первом регистре.

Для различных ЭВМ коды операций были различны. Например, для ЭВМ «Минск-22М» код операции сложения был «1*». Для ЭВМ БЭСМ эта же операция кодировалась «01». Программисты, которые составляли программы в машинных кодах, частенько путались в кодировании операций, тем более, что инструментов для нахождения ошибок не было.

В начале был ассемблер

Для облегчения программирования появились различные вспомогательные средства. И одним из таких первых инструментов был ассемблер – транслятор, который позволял переводить мнемонические сокращения в машинные коды. Например, та же команда сложения на языке ассемблера выглядела так: «ADD» - «Сложить». И эта мнемоника сохранялась для ЭВМ различных типов. Разница заключалась в структуре самого ассемблера, потому что для каждого типа ЭВМ приходилось разрабатывать свой транслятор.

Таким же образом были унифицированы и все команды, выполняемые машинами различных классов. Для написания программы составлялся алгоритм, часто он дополнялся блок-схемой, а после этого программисты писали уже саму программу. Конечно, на ассемблере было значительно легче писать программы, чем в машинных кодах.

Но порой возникали ситуации, когда уже работающую программу нужно было дополнить, видоизменить, внести какие-то коррективы. А разработчика этой программы уже могло не быть. Разбираться в чужих программах, написанных к тому же в машинных кодах – крайне неблагодарное, сложное, трудоемкое дело. Вот для этого и пригодится дизассемблер – программа, которая переведет машинные коды в язык ассемблера. И с такой программой разбираться уже будет значительно легче.