Divide error assembler (dosbox)
Люди добрые, помогите пожалуйста. При выполнении этой программы выскакивает ошибка divide error. Ошибка в этих строках.
mov ax,num
mov bx,denom
div bx
mov result,ax
А это код целиком
.MODEL Large,C
.data
Extrn aaaS:byte,cccS:byte,bbbS:byte,denom:word,num:word,result:word;
.code
Public Lab3S
Lab3s proc far
mov ax,22
div cccS
mov bx,ax
mov ax,3
mul bbbS
add ax,bx
mov ah,0
mov num,ax
mov bl,36
mov al,aaaS
mul cccS
mov dl,3
div dl
sub bl,al
mov bh,0
mov denom,bx
mov ax,num
mov bx,denom
div bx
mov result,ax
ret
Lab3S endp
end
Ответы (1 шт):
Автор решения: PRODIGY
→ Ссылка
Инструкция DIV делит не просто АХ на делитель, а пару регистров DX:AX. Поэтому нужно взять за правило, перед операцией деления обязательно очищать DX. На выходе - в АХ получим целое, а в DX остаток от деления.
mov ax,16
mov bx,3
xor dx,dx ;//<--- очистить DX
div bx ;// результат: АХ=5, DX=1