; Передача параметров и возврат из процедуры с использованием соглашения о вызовах stdcall
.686
.model flat, stdcall
option casemap: none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
x dd 0
y dd 4
.code
program:
push y ; Кладём в стек два параметра размером по 4 байта
push x
call Procedure
push 0
call ExitProcess
Procedure proc
ret 8 ; В команде возврата указываем, что надо освободить 8 байт стека
Procedure endp
end program
; Передача параметров и возврат из процедуры с использованием соглашения о вызовах cdecl
.686
.model flat, c
option casemap: none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
x dd 0
y dd 4
.code
program:
push y ; Кладём в стек два параметра размером по 4 байта
push x
call Procedure
add esp, 8 ; Освобождаем 8 байт стека
push 0
call ExitProcess
Procedure proc
ret ; Используем команду возврата без параметров
Procedure endp
end program
Do'stlaringiz bilan baham: |