我在汇编中编写了这段代码来计算(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
答案 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}}。