“操作数不匹配”汇编器语法错误

时间:2018-11-11 17:19:26

标签: assembly x86-16

我在汇编中编写了这段代码来计算(4*7)+5,但出现以下错误:

  

(18)错误的参数:MOV ax,m1
  (18)个操作数不匹配:16位寄存器和8位地址。

 .MODEL SMALL
.stack 100h
.data
m1 DB 4
m2 DB 7
m3 DB 5
m4 DB ?
.code
main PROC
    mov ax,@data
    mov ds,ax
    mov ax,m1
    mul ax,m2
    add ax,m3
    mov m4,ax 

     BEGIN ENDP
      END main

1 个答案:

答案 0 :(得分:2)

由于涉及{4,7,5}的所有数字都很小,因此您可以使用db进行数据定义。
但是这也意味着计算应为字节大小。

改为写:

mov al, m1
mul m2        ;Leaves m1 * m2 in AX (4*7=28 so AL=28 and AH=0)
add al, m3
mov m4, al

如果您在mul指令中使用字节大小的操作数( m2 ),则将AL与它相乘,并将双倍积存储在{{ 1}}。