Мониторинг обменных курсов валют
18c0693f

Передача в списке параметров функций


Функции передаются, если необходимо решить класс задач, которые различаются только списком используемых функций, причем эти функции имеют одинаковый список параметров. Пример – вычисление определенного интеграла для разных подинтегральных функций.

Для функций передаются их адреса. Для обращения к функции, заданной своим адресом, используется косвенный вызов.

Пример . Составить главную программу и функции вычисления:

Min –  для вычисления минимального из двух заданных целых чисел;

Max –  для вычисления максимального из двух заданных целых чисел;

MinMax - для вычисления минимального или максимального из двух заданных целых чисел, в зависимости от заданной в списке параметров функции;

ideal

p686

model   flat

extrn ExitProcess:proc

dataseg

x          dd      5

y          dd      3

z1        dd      ?; min

z2        dd      ?; max

array            dd      Min, Max

codeseg

begin:

push  [x] [y]

mov   eax, [array]; min

push  eax

call  MinMax

mov   [z1], eax

push  [x] [y]

mov   eax, [array+4]; min

push  eax

call  MinMax

mov   [z2], eax

call    ExitProcess;                               ebp     0

proc Min;                                        eip      4

push  ebp;                                       y          8

mov   ebp, esp;                              x          12

mov   eax, [ebp+12]

cmp    eax, [ebp+8]

jl        short @@m1

mov   eax, [ebp+8]

@@m1:

pop    ebp

ret     8

endp

;                                                           ebp     0

proc Max;                                       eip      4

push  ebp;                                       y          8

mov   ebp, esp;                              x          12

mov   eax, [ebp+12]

cmp    eax, [ebp+8]

jg       short @@m1

mov   eax, [ebp+8]

@@m1:

pop    ebp

ret     8

endp

;                                                                                   ebp     0

proc MinMax;                                                        eip      4

push  ebp;                                                               &fun 8

mov   ebp, esp;

;                                                                                   y          12

push  [dword ebp+16] [dword ebp+12];   x          16

mov   eax, [ebp+8]

call  eax

pop    ebp

ret     12

endp

end begin






Самый выгодный курс обмена валюты