Процедуры в языке Ассемблер работают также, как и в других языках программирования.
Пример: Написать программу на Ассемблере вычисления выражений: b/c + ас
где а =5;
b =27;
c = 86;
е =1986;
d =1112;
Результат вычисления выражения сохранить в памяти. Навести значение и порядок размещения данные в памяти.
Текст программы
.386 ; директива определения команд микропроцессора
.model flat,stdcall ; задание линейной модели памяти
; но соглашения ОС Windows
option casemap:none ; отличие строчных и прописных букв
includelib\masm32\lib\kernel32.lib
ExitProcess proto :DWORD
ADDDD proto :WORD, :WORD, :WORD ; прототип процедуры
.data ; директива определения данные
res dw 2 dup(0) ; резервирование амбарчиков для результата
.code ; директива начала кода программы
start: ; метка начала программы с именем start
invoke AddDD,5,86,1986 ; вызов директивы AddDD с параметрами
invoke ExitProcess,0
ADDDD proc arg1:WORD,arg2:WORD,arg3:WORD
mov eax,0 ; очистка регистров
mov ebx,0
mov ecx,0
mov edx,0
mov ах,arg3 ; arg3 = 1986
div arg2 ; операция деления
mov bx,ax
mov cx,dx
mov ах,arg1 ; ах := arg1
mul arg2 ; ax* arg2 = 86
SHL edx,16 ; операция здвигу
mov dx,ax
add ebx,edx
mov res,cx ; запоминание в памяти
mov res+2,dx ; запоминание в памяти
ret ; возвращение из процедуры
AddDD endp ; окончание процедуры с именем AddDD
end start ; окончание программы с именем start
Результат работы программы