Ошибка "Operand types do not match" при вычислении значения выражения - Assembler
Формулировка задачи:
Выражение: X=A2+(B2*C1) - (D2/E1) + K
При компиляции выдает ошибку:
**Error** laba4.asm(23) Operand types do not match
Помогите новичку!
.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
Решение задачи: «Ошибка "Operand types do not match" при вычислении значения выражения»
textual
Листинг программы
mov al, C1 mul B2 mov Temp1, al mov ax, A2 add ax, Temp1 mov Temp2, ax
Объяснение кода листинга программы
mov al, C1
— переносит значение переменной C1 в регистр almul B2
— выполняет операцию умножения с переменной B2 и сохраняет результат в регистре axmov Temp1, al
— переносит значение регистра al в переменную Temp1mov ax, A2
— переносит значение переменной A2 в регистр axadd ax, Temp1
— выполняет операцию сложения с переменной Temp1 и сохраняет результат в регистре axmov Temp2, ax
— переносит значение регистра ax в переменную Temp2