Почему операция деления выдает неправильный ответ? - Assembler

Узнай цену своей работы

Формулировка задачи:

почему то при делении регистров dx:ax на cx выдает неправильное число. до этого все значении верно считал. это мой первый опыт, так что не судите строго, если я какие то нормы нарушила вот код. нужное место в конце выделила восклицательными знаками
.model small
.data
a db 1
b db -4
c db 3
d db 5
e db 7
f dw ?
g dw ?
.code
.486
mov ax,@data
mov ds, ax
mov al, b
imul b
mov bx,ax
mov al,a
cbw
add bx,ax
mov al,2
mov cl,c
imul cl
mov cx,ax
mov al,d
imul d
sub cx,ax
mov al,2
cbw
mov dl,4
idiv dl
mov dl,ah
mov al,e
imul dl
mov dx,ax
mov ax,cx
mov cx,dx
imul bx
idiv cx ; !!!!!!!!!!!!!!!!!!!!!!
mov f, ax
mov g, dx
mov ah, 4ch
int 21h
end

Решение задачи: «Почему операция деления выдает неправильный ответ?»

textual
Листинг программы
imul bx
cwd <----
idiv cx !!!!!!!!!!!!!!!!!!!!!!

Объяснение кода листинга программы

  1. Мультипликация BX (переменная, содержащая результат умножения)
  2. Вызов функции CWD (не знаю, что это за функция)
  3. Деление CX (переменная, содержащая делитель)

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы