Advertisement
Ae_Mc

Nasm substract

Dec 10th, 2019
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. org 0x100
  2. push 48
  3. push 16
  4. call substract
  5. pop ax
  6. ret
  7.  
  8. substract:
  9.     ; Сохраняем текущие значения bp и ax, чтобы при изменении
  10.     ; они не изменили порядок выполнения внешнего кода
  11.     ; (кода, из которого была вызвана функция)
  12.     push bp
  13.     mov bp, sp
  14.     push ax
  15.    
  16.     ; Само вычитание и помещение результата в стек
  17.     mov ax, [bp + 6]
  18.     sub ax, [bp + 4]
  19.     mov [bp + 6], ax
  20.  
  21.     ; Записываем результат на место одного из параметров и
  22.     ; убираем все остальные параметры (чтобы не писать
  23.     ; add sp, 4 после вызова функции, для получения
  24.     ; результата достаточно вызвать после функции команду pop)
  25.     mov ax, [bp + 2] ; bp + 2 — местоположение ret'а
  26.     mov [bp + 4], ax
  27.    
  28.     ; Восстанавливаем значения bp и ax
  29.     pop ax
  30.     pop bp
  31.     add sp, 2
  32.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement