Advertisement
Ae_Mc

nasm multiplicator

Nov 24th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. jmp __multiplicator_main
  2. multiplicator:
  3.   push sp
  4.   mov bp, sp
  5.   sub sp, 4
  6.  
  7.   mov ax, word[bp + 4]
  8.   ; Если второй множитель = 0, то вернуть 0
  9.   cmp ax, 0
  10.   jz __multiplicator_zero_multiplier
  11.  
  12.   mov word[bp - 2], ax ; Хранит то, на что умножать
  13.   mov ax, word[bp + 6]
  14.   ; Если первый множитель = 0, то вернуть 0
  15.   cmp ax, 0
  16.   jz __multiplicator_zero_multiplier
  17.  
  18.   mov word[bp - 4], ax ; Хранит то, что умножать
  19.   cmp ax, [bp - 2]
  20.   jnl __multiplicator_skip_swap
  21.     xchg word[bp - 2], ax
  22.     mov word[bp - 4], ax
  23.   __multiplicator_skip_swap:
  24.   dec word[bp - 2]
  25.   jz __multiplicator_end ; Если один из множителей = 1, вернуть больший из множителей
  26.  
  27.   __multiplicator_mul1:
  28.     add ax, word[bp - 4]
  29.     dec word[bp - 2]
  30.   jnz __multiplicator_mul1
  31.   __multiplicator_end:
  32.   mov sp, [bp]
  33.   ret
  34.   __multiplicator_zero_multiplier:
  35.     mov ax, 0
  36.     jmp __multiplicator_end
  37.    
  38. __multiplicator_main:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement