Получение исключения с плавающей точкой при попытке использовать div в сборке - PullRequest
6 голосов
/ 20 марта 2012

Я пытаюсь запустить следующий код в сборке:

  mov        %si, %ax
  mov        $15, %si
  div        %si
  mov        %eax, %esi

Когда я создаю свою программу, она компилируется, но во время выполнения она выдает мне исключение с плавающей запятой.Я попытался заменить параметры последней строки на %ah и %si.

Вкратце, я пытаюсь разделить %esi на 15.Мне нужен только int, и мне не нужен double.

Спасибо

1 Ответ

14 голосов
/ 20 марта 2012

Инструкция div делит двухсимвольный параметр dx/ax на операнд.Если частное слишком велико, чтобы вписаться в слово, оно выдаст это исключение.

Ссылка: http://siyobik.info.gf/main/reference/instruction/DIV

Что у вас есть в регистре dx?Скорее всего, dx/ax, разделенное на 15, не помещается в 16-битное слово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...