我正在尝试做一个基本的乘法,但我不断收到错误,我不明白为什么。我知道我必须使用“MUL”。
这是我正在使用的代码
POP AX
MOV AL, [NUMB]
MUL 10H
POP AX
RET
错误是:MUL 10H 的操作码和操作数组合无效
这是无符号乘法(MUL 操作数)的一个很好的例子:
Inputting a 2-digit decimal number
MOV AH, 1 ;read first digit
INT 21H
SUB AL, ‘0’ ; convert digit from ASCII code to binary
MOV BL, 10
MUL BL ; multiply digit by 10
MOV CL, AL
MOV AH, 1 ; read 2nd digit
INT 21H
SUB AL, ‘0’ ; convert digit from ASCII code to binary
ADD AL, CL ; AL contains the 2-digit number
您还必须阅读文档以了解每条指令的含义及其工作原理。这是一个开始学习汇编的好网站,每个基本指令都有很好的例子 完整的8086指令集和8086指令集的例子
我知道这真的很晚了,但问题是你不能乘以立即值。您需要将该值加载到寄存器中,然后将该寄存器作为操作数进行 mul 。像这样:
mov al, [numb]
mov ah, 10h
mul ah
另外,我不确定你在用 pop 指令做什么,但看起来你正在弹出 ax 两次,这将使它加载一个未知的值。您的意思是在开始时使用推送指令吗?