Ассемблер. Макросы

  Светлана Деменева  | 

  Обновл. 28 Дек 2019  | 

 2731

Написание макроса — это ещё один способ обеспечения модульного программирования в Ассемблере.

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

   В NASM макросы определяются с помощью директив %macro (начало) и %endmacro (конец).

Синтаксис для определения макроса следующий:

%macro имя_макроса количество_параметров
<тело_макроса>
%endmacro

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

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

В примере выше регистры EAX, EBX, ECX и EDX были использованы при вызове функции INT 80H. Таким образом, каждый раз, когда вам нужно вывести строки на экран, вам нужно сохранить эти регистры в стеке, вызвать INT 80H и затем восстановить исходное значение регистров из стека. Поэтому здесь может быть полезно написать два макроса: для сохранения и восстановления данных.

Некоторые инструкции, такие как IMUL, IDIV, INT и т.д., требуют сохранение некоторой информации в определённых регистрах. Если программа уже использовала эти регистры для хранения важных данных, то существующие данные из этих регистров должны быть сохранены в стеке и восстановлены после выполнения инструкции.

Рассмотрим следующую программу, в которой продемонстрировано определение и использование макросов:

Результат выполнения программы выше:

Hello, programmers!
Welcome to the world of,
Linux assembly programming!

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (9 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *