разделить ошибку сборки emu 8086

Возможный дубликат:
целочисленное переполнение ASM x86

Я получаю переполнение ошибки разделения и не знаю, почему. Вот полный код, который воспроизводит ошибку

include emu8086.inc

org 100h

       mov ax, 2 
       mov bx, 10
       div bx

       mov ax, 2
       mov bx, 2
       div bx   
       ret

person devide and code    schedule 18.12.2012    source источник
comment
Для деления на степень 2 обычно используется сдвиг. Гораздо проще использовать SHR AX, 1 - нет необходимости использовать дополнительный регистр.   -  person Aleksey Ivchenko    schedule 19.12.2012


Ответы (1)


Попробуйте добавить xor dx, dx перед каждым div и посмотрите, не поможет ли это.

Поскольку вы указываете 16-битную цель, div делит dx:ax на эту цель. Если dx начинается с большого числа (точнее, любого, кроме очень маленького числа), результат будет переполнен. Даже если он не переполнится, ваш результат не будет просто ax/bx, как вы, очевидно, намеревались.

person Jerry Coffin    schedule 18.12.2012
comment
спасибо за быстрый ответ и объяснение. работал отлично - person devide and code; 19.12.2012