nasm, деление, ivan, 24-Сен-23, 08:42 [смотреть все]Добрый день. Потребовалось выполнить деление на 1 со знаком. mov eax, 0 mov ebx, 0 mov, ax, 0xc9 mov bl, 1 idiv bl Получил исключение. Если вместо 8 битного операнда использовать 16 битовый idiv bx то все хорошо. В чем причина? 0xc9 / 1 = 0xc9 и должно поместиться в al
|
- nasm, деление, ivan, 12:20 , 24-Сен-23 (1)
>[оверквотинг удален] > mov eax, 0 > mov ebx, 0 > mov, ax, 0xc9 > mov bl, 1 > idiv bl > Получил исключение. Если вместо 8 битного операнда использовать 16 битовый > idiv bx > то все хорошо. > В чем причина? 0xc9 / 1 = 0xc9 и должно поместиться в > al Вопрос закрыт. Причина - изменение знака результата. 0xc9 в AL - трактуется как отрицательное.
|