我正在尝试做一个基本的乘法,但我一直在犯错,我不明白为什么。我知道我必须使用" MUL"。
以下是我正在使用的代码
POP AX
MOV AL, [NUMB]
MUL 10H
POP AX
RET
错误是:MUL 10H无效操作和操作组合无法
答案 0 :(得分:1)
这是无符号乘法(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
您还必须阅读文档,以便了解每条指令的含义及其工作原理。 这是一个开始学习汇编的好网站,每个基本指令都有很好的例子 Complete 8086 instruction set 和instruction set of 8086 with examples
答案 1 :(得分:0)
我知道这已经很晚了,但问题在于你无法乘以直接值。您需要将该值加载到寄存器中,然后将该寄存器作为操作数。像这样:
mov al,[麻木]
mov啊,10h
嗯啊
另外,我不确定你在使用pop指令做什么,但看起来你正在弹出两次ax,这会让它加载一个未知的值。你的意思是在开头使用推送指令吗?