Целочисленное переполнение в ASM x86 [дубликат]
На этот вопрос уже есть ответ здесь:
Почему EDX должен быть 0 перед использованием инструкции DIV? [Дубликат] 2 ответа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
Я продолжаю получать целочисленную ошибку переполнения при попытке разделить эти два числа. Это ломается, когда я пытаюсь использовать div.
Я пытаюсь найти наименьшее общее число, кратное двум, введенным пользователем. Я решил попытаться разделить каждое число, чтобы сначала найти простые числа, а затем сравнивать каждый раз, когда один найден, с другим числом, введенным пользователем. Конечно, я буду делать оба числа одновременно, но сейчас я пытаюсь просто обойти эту ошибку.
Это всего лишь моя пятая неделя в ASM, поэтому я немного запутался, почему это происходит. Также я хотел бы добавить, что я также хотел бы сделать это для 32-битных чисел. Моя идея состоит в том, чтобы использовать указатели. Это хороший способ сделать это? Спасибо за любую помощь!