操作数类型与错误不匹配

时间:2016-11-06 23:10:46

标签: 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

这是我的代码:

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 :(得分:0)

var areBugsOn = false; function toggleBugs(){ if(areBugsOn){ end(); areBugsOn = false; }else{ initialize(); areBugsOn = true; } } 是字大小的; <{1}}和AX是字节大小。

请注意,您稍后会在代码中从A中减去B时遇到同样的问题(两个字节大小)