ASM x86 integer overflow [duplikat]

To pytanie ma już tutaj odpowiedź:

Dlaczego EDX ma być 0 przed użyciem instrukcji DIV? [duplikować] 2 odpowiedzi
GetLCM PROC
tryAgain:
   mov bx, 0
   inc Multiple
   mov ax, UserInputNum1              ;Move UserInputNum1 to the 16 bit Register
   mov bx, Multiple
   div bx                             ;<-------Error here
   cmp dx,0                           ;If dx is not zero then there is a remainder
   jne tryAgain                       ;If not equal jump
ret
GetLCM ENDP

Ciągle otrzymuję błąd przepełnienia liczby całkowitej podczas próby podzielenia tych dwóch liczb. Łamie się, gdy próbuję użyć div.

Próbuję znaleźć najmniejszą wspólną wielokrotność dwóch liczb wprowadzonych przez użytkownika. Postanowiłem spróbować podzielić każdą liczbę, aby najpierw znaleźć liczby pierwsze, a następnie porównywać za każdym razem, gdy znajdzie się ona na innej liczbie wprowadzonej przez użytkownika. Oczywiście, robiłbym obie liczby w tym samym czasie, ale teraz próbuję po prostu ominąć ten błąd.

To tylko mój piąty tydzień w ASM, więc trochę się mylę, dlaczego tak się dzieje. Chciałbym również dodać, że chciałbym również, aby ta funkcja działała również na 32-bitowych numerach. Moim pomysłem jest używanie wskaźników. Czy to dobry sposób na to? Dzięki za pomoc!

questionAnswers(2)

yourAnswerToTheQuestion