Почему операция деления выдает неправильный ответ? - 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 !!!!!!!!!!!!!!!!!!!!!!
Объяснение кода листинга программы
- Мультипликация BX (переменная, содержащая результат умножения)
- Вызов функции CWD (не знаю, что это за функция)
- Деление CX (переменная, содержащая делитель)