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


Передача в списке параметров структур


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

p686

IDEAL

MODEL flat

extrn ExitProcess:proc

DATASEG

struc   complex

real    dd      ?

im      dd      ?

ends

n1   complex    <1, 1>

n2   complex    <2, 2>

n3   complex    ?



CODESEG

begin:

push    [n1.im]

push    [n1.real]

push    [n2.im]

push    [n2.real]

push    offset n3

call    csum

call      ExitProcess

proc     csum

push     ebp

mov      ebp, esp

push      eax ebx

mov       eax, [(complex ebp+20).real]

add       eax, [(complex ebp+12).real]

mov       ebx, [ebp+8]

mov       [(complex ebx).real], eax

mov       eax, [(complex ebp+20).im]

add       eax, [(complex ebp+12).im]

mov       [(complex ebx).im], eax

pop       ebx eax ebp

ret       20

endp   csum

end     begin

 Обратите внимание на запись компонентов комплексного числа в стек. Это число записывается так, чтобы младшая часть числа находилась в младших адресах стека.

Аналогично со структурами используются объединения.



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