Ассемблер (Assembly language, Assembler language)
Ассемблер - это символьный язык программирования, который по форме и содержанию наиболее близок к машинному языку. Ассемблер полезен, когда:
- необходимо тщательно контролировать программу, вплоть до байтового и даже битового уровня,
- необходимо написать подпрограммы для выполнения функций, которые не предусмотрены другими языками символьного программирования, такими как COBOL, Fortran или PL/I.
Ассемблер состоит из операторов, которые представляют собой либо инструкции, либо комментарии. Операторы инструкций являются рабочей частью языка и делятся на следующие три группы:
- машинные инструкции,
- инструкции ассемблера,
- макроинструкции.
Инструкция ассемблера
Инструкция ассемблера - это запрос к ассемблеру на выполнение определенных операций в процессе сборки исходного модуля, например, определение констант данных, резервирование областей хранения и определение конца исходного модуля. За исключением инструкций, определяющих константы, и инструкций, используемых для генерации инструкций отсутствия операций выравнивания, ассемблер не транслирует ассемблерные инструкции в объектный код.
Макроинструкции
Макроинструкция - это запрос к программе ассемблера на обработку заранее определенной последовательности инструкций, называемой макроопределением. На основе этого определения ассемблер генерирует машинные и ассемблерные инструкции, которые затем обрабатывает так, как если бы они были частью исходного ввода в исходном модуле.
IBM, например, поставляет макроопределения для операций ввода/вывода, управления данными и супервизора, которые можно вызвать для обработки путем кодирования требуемой макроинструкции. (Эти макроинструкции, поставляемые IBM, описаны в соответствующем руководстве по макроинструкциям).
Вы также можете подготовить собственные макроопределения и вызывать их, кодируя соответствующие макроинструкции. Вместо того чтобы кодировать всю эту последовательность каждый раз, когда она требуется, можно создать макроинструкцию, представляющую эту последовательность, а затем каждый раз, когда эта последовательность требуется, кодировать оператор макроинструкции. В процессе ассемблирования последовательность инструкций, представленная макроинструкцией, вставляется в исходную программу.
Пример кода
S1 B FWD
...
FWD EQU *
...
BKWD EQU *
...
S2 B BKWD