Нужно написать программу, реализующую вычисление по формуле. Что нужно исправить? - Assembler

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

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

X = (A*2 + B*C + 5) / (A*D – 3) Заданные значения: A = 20; B = 4; C = 15; D = 6\ Сам код написал, но выдаёт ошибку в 24 строке "Operand types do not match"\ Что тут нужно исправить??
.MODEL SMALL
.STACK 100h
.DATA
 a db 20
 b db 4
 c db 15
 d db 6
.CODE
START:
 mov al, 2
 mul a
 mov cl, al
 xor ax, ax
 mov al, b
 mul c
 add cl, al
 add cl, 5
 xor ax, ax
 mov al, a
 mul d
 sub al, 3
 mov bl, al
 xor ax, ax
 mov al, cl
 xor ah,ah
 div bl
END START

Решение задачи: «Нужно написать программу, реализующую вычисление по формуле. Что нужно исправить?»

textual
Листинг программы
.model small  
.data
y db ? 
.code
start:
mov ax,@data
mov es,ax
mov ds,ax
 
mov al,20
mov bl,2
mul bl
mov y,al   
 
mov al,4
mov bl,15
mul bl
add y,al
 
add y,5     
 
mov al,20
mov bl,6
mul bl
sub al,3 
 
mov bl,al
 
mov al,y
div bl
mov y,al
 
mov ax,4C00h
int 21h

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

  1. В начале кода подключаются сегменты данных и кода, а также сегмент таблицы векторов прерываний.
  2. Далее, в стеке размещаются параметры функции main.
  3. В первом операторе mov значение регистра AX (содержащего значение 20) копируется в регистр ES.
  4. Во втором операторе mov значение регистра AX (содержащего значение 4) копируется в регистр DS.
  5. Значение регистра AX (содержащего значение 20) умножается на значение регистра BL (содержащего значение 2), результат копируется в переменную y.
  6. Значение регистра AX (содержащего значение 4) умножается на значение регистра BL (содержащего значение 15), результат копируется в переменную y.
  7. К значению переменной y прибавляется значение 5.
  8. Значение регистра AX (содержащего значение 20) умножается на значение регистра BL (содержащего значение 6), результат копируется в переменную y.
  9. Значение переменной y уменьшается на значение 3.
  10. Значение регистра BL (содержащего значение 6) копируется в регистр AL.
  11. Значение переменной y делится на значение регистра AL (содержащего значение 6), результат копируется в регистр AX.
  12. Значение регистра AX (содержащего значение 4C00h) копируется в регистр ES.
  13. Вызывается функция interrupt 21h.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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