Передача результата процедуры
Prosedura natijasini uzatish uchun odatda EAX registridan foydalaniladi. 8 baytdan katta qiymatlar uchun EDX:EAX registrlar juftidan foydalaniladi.
.686
.model flat, c
option casemap: none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
a dd 76
b dd -8
d dd ?
.code
program:
push b ; Кладём параметры в стек
push a
call Procedure
add esp, 8 ; Освобождаем 8 байт стека
mov d, eax ; d = a – b
push 0
call ExitProcess
Procedure proc
mov eax, [esp + 4] ; Заносим в регистр EAX первый параметр
mov edx, [esp + 8] ; Заносим в регистр EDX второй параметр
sub eax, edx ; В регистре EAX получилась разность параметров
ret
Procedure endp
end program
Do'stlaringiz bilan baham: |