Assembly 操作数类型不匹配错误

Assembly 操作数类型不匹配错误,assembly,Assembly,我必须为我的大学学习组装,我需要这样做: (a+b+c+1) *(a+b+c+1) /((a-b+d)*(a-b+d)). 当我尝试使用“tasm”命令创建exe文件时,我收到以下消息: **Error** lab1.ASM(14) Operand types do not match **Error** lab1.ASM(15) Operand types do not match **Warning* lab1.ASM(30) Open segment:Data 这是我的密码: assu

我必须为我的大学学习组装,我需要这样做:

(a+b+c+1) *(a+b+c+1) /((a-b+d)*(a-b+d)).
当我尝试使用“tasm”命令创建exe文件时,我收到以下消息:

**Error** lab1.ASM(14) Operand types do not match
**Error** lab1.ASM(15) Operand types do not match
**Warning* lab1.ASM(30) Open segment:Data
这是我的密码:

assume cs:code,ds:data
data segment 
a db 1
b db 2
c db 3 
d db 4 
code segment 
start:
mov ax,data
mov ds,ax
mov al,a
mov ah,0
add ax,b ;ax=a+b
add ax,c ;ax=a+b+c
add ax,1 ;ax=a+b+c+1
mov bx,ax ;bx=ax
mul bx ;dx:ax=(a+b+c+1) *(a+b+c+1)
mov al,a
mov ah,0
sub al,b ; al=a-b
add al,d ; al=a-b+d
mov bl,al ; bl=al
mul bl ; ax=(a-b+d)*(a-b+d)
mov bx,ax
div bx ; dx:ax :bx =(a+b+c+1) *(a+b+c+1) /((a-b+d)*(a-b+d))
mov ax,4c00h
int 21h
code ends
end start

AX
是单词大小
A
B
是字节大小

请注意,在稍后的代码中,如果从
AL
中减去
B
,例如(两个字节大小)

则根本不清楚“您需要做什么”,也不清楚错误消息所指的行。