2016-11-06 140 views
-1

我必须学会大会为我的大学,我必须这样做:数类型不匹配错误

(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 
+1

这是不完全清楚“你需要做的是什么”,也不清楚你的错误信息涉及哪些行。 –

回答

0

AX是字的大小; AB是字节大小。

观察你没有同样的问题,后来在你来自哪里,AL例如减去B代码(包括字节大小)