Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org 0x100
- push 48
- push 16
- call substract
- pop ax
- ret
- substract:
- ; Сохраняем текущие значения bp и ax, чтобы при изменении
- ; они не изменили порядок выполнения внешнего кода
- ; (кода, из которого была вызвана функция)
- push bp
- mov bp, sp
- push ax
- ; Само вычитание и помещение результата в стек
- mov ax, [bp + 6]
- sub ax, [bp + 4]
- mov [bp + 6], ax
- ; Записываем результат на место одного из параметров и
- ; убираем все остальные параметры (чтобы не писать
- ; add sp, 4 после вызова функции, для получения
- ; результата достаточно вызвать после функции команду pop)
- mov ax, [bp + 2] ; bp + 2 — местоположение ret'а
- mov [bp + 4], ax
- ; Восстанавливаем значения bp и ax
- pop ax
- pop bp
- add sp, 2
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement