0

我正在尝试做一个基本的乘法,但我不断收到错误,我不明白为什么。我知道我必须使用“MUL”。

这是我正在使用的代码

POP AX 
MOV AL, [NUMB]
MUL 10H
POP AX
RET

错误是:MUL 10H 的操作码和操作数组合无效

4

2 回答 2

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

您还必须阅读文档以了解每条指令的含义及其工作原理。这是一个开始学习汇编的好网站,每个基本指令都有很好的例子 完整的8086指令集和8086指令集的例子

于 2013-04-12T17:00:31.983 回答
0

我知道这真的很晚了,但问题是你不能乘以立即值。您需要将该值加载到寄存器中,然后将该寄存器作为操作数进行 mul 。像这样:

mov al, [numb]
mov ah, 10h
mul ah

另外,我不确定你在用 pop 指令做什么,但看起来你正在弹出 ax 两次,这将使它加载一个未知的值。您的意思是在开始时使用推送指令吗?

于 2013-11-02T03:21:37.200 回答