Пример: Написать программу с использованием макросов для вычисления одного из выражений без предыдущего математического упрощения операций:
2x – 3 + 8(2x –3);
Текст программы:
.686 ; директива определения типа микропроцессора
.model flat,stdcall ; задание линейной модели памяти
; но соглашения ОС Windows
option casemap:none ; отличие малых и больших букв
includelib \masm32\lib\kernel32.lib
ExitProcess proto:dword ; прототип API-функції
mSubB macro x,b ; макрос с именем mSubB
mov al,x
shl al,1 ; занос переменной а
sub al,b ; вычитание а – b
mov res1,al ;; сохранение результата в памяти
endm ; окончание макроса
.data ; директива определения данные
x db 6 ; сохранение в амбарчике памяти, размером в байт операнда 6
b db 3
res1 db 0 ; резервирование памяти для результата res1
res2 dw 0 ; резервирование памяти для результата res2
.code ; директива начала программы
_start: ; метка начала программы с именем _start
xor eax,eax
xor ebx,ebx
mSubB [x][b] ; вызов макроса
mov al,8
mov bl,res1
mul bl
mov bl,al
mSubB [x][b] ; вызов макроса
mov al,res1 ; занос с расширением разрядности
add bx,ax
mov res2,bx ; сохранение остаточного результата
invoke ExitProcess, 0 ; возвращение управления ОС Windows
end _start ; директива окончания программы с именем _start
Результат работы программы: