; Передача параметров через стек, возврат результата по адресу
.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 offset d ; Кладём в стек адрес переменной, куда будет записан результат
push b
push a
call Procedure
add esp, 12 ; Освобождаем 12 байт стека
push 0
call ExitProcess
Procedure proc
mov eax, [esp + 4] ; Заносим в регистр EAX первый параметр
mov edx, [esp + 8] ; Заносим в регистр EDX второй параметр
sub eax, edx ; В регистре EAX получилась разность параметров
mov edx, [esp + 12] ; Заносим в регистр EDX третий параметр – адрес результата
mov [edx], eax ; Записываем результат по адресу в регистре EDX
ret
Procedure endp
end program
ISHNI BAJARISH TARTIBI
Kompyuterdan masm32 dasturini ishga tushiramiz
Quyida keltirilgan misolni dasturini tuzamiz
MS wordda dasturlash natijalari asosida laboratoriya ishini tahrirlash
Nazorat savollari
Prosedurani chaqirish buyrug’idan qanday foydalaniladi?
PUSH buyrug’ining vazifasi va sintaksisi qanday?
CALL buyrug’ining vazifasi va sintaksisi qanday?
POP buyrug’ining vazifasi va sintaksisi qanday?
ExitProcess buyrug’ining vazifasi va sintaksisi qanday?
Do'stlaringiz bilan baham: |