Команда CWD превращает слово в AХ в двойное слово, младшая половина которого (биты 0—15) остается в АХ, а старшая (биты 16—31) располагается в DX. а если по русски то нафига надо cwd просто у меня ассемблерная вставка _asm{ mov ax,b add ax,c mov bx,2 cwd div bx add ax,a mov sum,ax } работает что при cwd что без него
div bx делит 32-битное число DX:AХ на 16-битное в BX Поэтому если ты хочешь разделить AX на BX, то нужно сделать xor edx,edx если AX беззнаковое или cwd если знаковое. Иначе если в DX будет какой-то мусор, то можно или просто получить неверный результат или нарваться на исключение - переполнение, если результат деления не поместится в AX