Нужно написать программу, реализующую вычисление по формуле. Что нужно исправить? - 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
Объяснение кода листинга программы
- В начале кода подключаются сегменты данных и кода, а также сегмент таблицы векторов прерываний.
- Далее, в стеке размещаются параметры функции main.
- В первом операторе
mov
значение регистра AX (содержащего значение 20) копируется в регистр ES. - Во втором операторе
mov
значение регистра AX (содержащего значение 4) копируется в регистр DS. - Значение регистра AX (содержащего значение 20) умножается на значение регистра BL (содержащего значение 2), результат копируется в переменную y.
- Значение регистра AX (содержащего значение 4) умножается на значение регистра BL (содержащего значение 15), результат копируется в переменную y.
- К значению переменной y прибавляется значение 5.
- Значение регистра AX (содержащего значение 20) умножается на значение регистра BL (содержащего значение 6), результат копируется в переменную y.
- Значение переменной y уменьшается на значение 3.
- Значение регистра BL (содержащего значение 6) копируется в регистр AL.
- Значение переменной y делится на значение регистра AL (содержащего значение 6), результат копируется в регистр AX.
- Значение регистра AX (содержащего значение 4C00h) копируется в регистр ES.
- Вызывается функция interrupt 21h.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д