Ассемблер (Assembly language, Assembler language)

Ассемблер - это символьный язык программирования, который по форме и содержанию наиболее близок к машинному языку. Ассемблер полезен, когда:

  • необходимо тщательно контролировать программу, вплоть до байтового и даже битового уровня,
  • необходимо написать подпрограммы для выполнения функций, которые не предусмотрены другими языками символьного программирования, такими как COBOL, Fortran или PL/I.

Ассемблер состоит из операторов, которые представляют собой либо инструкции, либо комментарии. Операторы инструкций являются рабочей частью языка и делятся на следующие три группы:

  • машинные инструкции,
  • инструкции ассемблера,
  • макроинструкции.

Инструкция ассемблера

Инструкция ассемблера - это запрос к ассемблеру на выполнение определенных операций в процессе сборки исходного модуля, например, определение констант данных, резервирование областей хранения и определение конца исходного модуля. За исключением инструкций, определяющих константы, и инструкций, используемых для генерации инструкций отсутствия операций выравнивания, ассемблер не транслирует ассемблерные инструкции в объектный код.

Макроинструкции

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

IBM, например, поставляет макроопределения для операций ввода/вывода, управления данными и супервизора, которые можно вызвать для обработки путем кодирования требуемой макроинструкции. (Эти макроинструкции, поставляемые IBM, описаны в соответствующем руководстве по макроинструкциям).

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

Пример кода

S1   B    FWD
  ...
FWD   EQU *
  ...
BKWD  EQU *
  ...
S2    B   BKWD

Источники