Программирование на Ассемблере

       

Директива ARG


Используется для задания имен и типов формальных параметров. Параметры записываются, начиная с вершины стека. Общий вид директивы:

ARG параметр1, параметр2, … [= переменная]

Параметры задаются в виде:

Имя:Тип[:Количество]

В качестве имени используется любое уникальное имя.

Тип может быть стандартным и нестандартным. В качестве стандартных используются типы: BYTE, WORD, DWORD, PWORD, FWORD, QWORD, TBYTE. В качестве нестандартных можно задавать типы структур и объединений.

Количество задается константным выражением и определяет количество элементов данного типа. Используется, если передается массив, а не его адрес. По умолчанию Количество

= 1. Переменной, заданной в директиве присваивается размер области параметров в стеке. Это значение вычисляется компилятором и используется в команде RET.

Пример. Составить функцию для вычисления значения Y=A*X+B для данных длиной 32 бита. Результат длиной 4 байта

; Главная программа

ideal

p686

model flat



extrn ExitProcess:proc

extrn Fun:proc

dataseg

a          dd        3

x          dd        5

b          dd        7

y          dd        ?

codeseg

begin:

push     [a] [x] [b]

call      Fun

mov     [y], eax

call ExitProcess

end begin

; Функция

ideal

p686

model flat

codeseg

proc     Fun

public  Fun

arg       b:dword, x:dword, a:dword = z

push     ebp

mov     ebp, esp

mov     eax, [a]

mul      [x]

add      eax, [b]

pop      ebp

ret        z

endp

end



Содержание раздела