Ошибка "Operand types do not match" при вычислении значения выражения - Assembler

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

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

Выражение: X=A2+(B2*C1) - (D2/E1) + K
.model small
.stack 100h
.data
A2 dw 0Ch
B2 dw 0Eh
C1 db 2h
D2 dw 0Ah
E1 db 5h
Temp1 dw 00h
Temp2 dw 00h
Temp3 dw 00h
Temp4 dw 00h
K_low EQU 4021h
K_high EQU 0125h
X dw 00h,00h
.code
start:
mov ax,@data
mov ds,ax
 
mov al, C1
mul B2
mov Temp1, al
 
mov ax, A2
add ax, Temp1
mov Temp2, ax
 
mov ax, D2
div E1
mov Temp3, ax
 
mov ax, Temp2
mov dx, Temp3
sub ax,dx
mov Temp4, ax
 
mov ax, K_low
mov bx, word ptr Temp4
 
add ax, bx
mov X, ax
 
mov ax, K_high
mov dx, word ptr [Temp4+2]
 
adc ax, dx
 
mov [X+2], ax
 
mov ah, 4Ch
int 21h
end start
При компиляции выдает ошибку: **Error** laba4.asm(23) Operand types do not match Помогите новичку!

Решение задачи: «Ошибка "Operand types do not match" при вычислении значения выражения»

textual
Листинг программы
mov al, C1
mul B2
mov Temp1, al
 
mov ax, A2
add ax, Temp1
mov Temp2, ax

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

  1. mov al, C1 — переносит значение переменной C1 в регистр al
  2. mul B2 — выполняет операцию умножения с переменной B2 и сохраняет результат в регистре ax
  3. mov Temp1, al — переносит значение регистра al в переменную Temp1
  4. mov ax, A2 — переносит значение переменной A2 в регистр ax
  5. add ax, Temp1 — выполняет операцию сложения с переменной Temp1 и сохраняет результат в регистре ax
  6. mov Temp2, ax — переносит значение регистра ax в переменную Temp2

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

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