Директива LOCAL
Директива используется для определения структуры локальной области и ее размера. Сама локальная область не создается. Для ее создания необходима команда SUB ESP, Размер или команда ENTER.
Общий вид директивы:
LOCAL Параметр1, Параметр2,… = Переменная
Локальные параметры задаются точно также, как формальные параметры, т.е. задается имя, тип и, возможно, количество. Размер локальной области присваивается на этапе компиляции переменной, заданной в конце директивы . Переменная используется в командах выделения локальной области.
Пример. Составить главную программу и функцию на ассемблере
int Fun (int x){
int a, b[2];
a=x; b[0]=b[1] = 2 *x;
return a+ b[0] + b[1];
}
; Главная программа
;Int Fun (int x){
; Int a, b[2];
; a=x; b[0]=b[1] = 2 *x;
; return a+ b[0] + b[1];
;}
ideal
p686
model flat
extrn ExitProcess:proc
extrn Fun:proc
dataseg
x dd 5
y dd ?
codeseg
begin:
push [x]
call Fun
mov [y], eax
call ExitProcess
end begin
; Функция
;Int Fun (int x){
; Int a, b[2];
; a=x; b[0]=b[1] = 2 *x;
; return a+ b[0] + b[1];
;}
ideal
p686
model flat
codeseg
begin:
proc Fun
public Fun
arg x:dword = z1
local a:dword, b:dword:2=z2
push ebp
mov ebp, esp
sub esp, z2
mov eax, [x]
mov [a], eax
mov [b], eax
add [b], eax
mov [b+4], eax
add [b+4], eax
mov esp, ebp
pop ebp
ret z1
endp
end