Высокоуровневый ассемблер в вычислительной технике — это ассемблер для языка ассемблера , включающий функции, обнаруженные в языке программирования высокого уровня .
Самым ранним высокоуровневым ассемблером, вероятно, был проблемно-ориентированный язык программирования для исполнительных систем (ESPOL) компании Burroughs, выпущенный примерно в 1960 году и предоставлявший синтаксис, подобный ALGOL , вокруг явно заданных машинных инструкций Burroughs B5000 . [ оспаривается – обсудить ] За ним в 1968 году последовал PL360 Никлауса Вирта ; он воспроизвел возможности Burroughs, с которыми он был знаком, на IBM System/360 . Более поздние высокоуровневые ассемблеры — это Turbo Assembler (TASM) компании Borland , Netwide Assembler (NASM), Macro Assembler (MASM) компании Microsoft , High Level Assembler (HLASM) компании IBM для систем z /Architecture , Linoleum Алессандро Гиньолы, X#, используемый в Cosmos и Ziron. [ необходима ссылка ]
Ассемблеры высокого уровня обычно предоставляют инструкции, которые напрямую собирают один к одному в машинный код низкого уровня , как в любом ассемблере, плюс управляющие операторы, такие как IF, WHILE, REPEAT...UNTIL и FOR, макросы и другие улучшения. Это позволяет использовать абстракции управляющих операторов высокого уровня везде, где максимальная скорость или минимальное пространство не являются существенными; операторы низкого уровня, которые собираются напрямую в машинный код, могут использоваться для создания самого быстрого или самого короткого кода. Конечным результатом является исходный код ассемблера , который гораздо более читабелен, чем стандартный код ассемблера, при этом сохраняя эффективность, присущую использованию языка ассемблера.
Высокоуровневые ассемблеры обычно предоставляют возможности сокрытия информации и возможность вызывать функции и процедуры с использованием синтаксиса, подобного высокоуровневому (т. е. ассемблер автоматически создает код для помещения параметров в стек вызовов, а не программисту приходится вручную писать код для этого).
Ассемблеры высокого уровня также предоставляют абстракции данных, обычно встречающиеся в языках высокого уровня. Примеры включают: структуры данных , объединения , классы и наборы . Некоторые ассемблеры высокого уровня (например, TASM и High Level Assembly (HLA)) поддерживают объектно-ориентированное программирование .