Ваш код делит -1
на 1
.Ответ -1
, так что вы возвращаетесь.Давайте разберем код (я просто добавлю встроенные комментарии):
mov eax, -1 ; Put -1 in eax
mov ebx, 1 ; put 1 in ebx
cdq ; sign extend eax -> edx:eax = -1
idiv ebx ; divide edx:eax (-1) by ebx (1)
; result goes in eax, so now eax = -1
ret ; return eax (-1) to caller
Если вы хотите разделить аргументы, переданные этой функции, вам нужно как-то получить к ним доступ.Вы не показывали нам сигнатуру функции C ++, поэтому я не могу помочь вам с более подробной информацией.
Подсказка: если вы пишете код IA32, что выглядит так, как будто вы делаете,аргументы будут в стеке.