在DOSBOX中使用程序集8086进行乘法运算

时间:2013-04-12 16:35:05

标签: assembly x86-16

我正在尝试做一个基本的乘法,但我一直在犯错,我不明白为什么。我知道我必须使用" MUL"。

以下是我正在使用的代码

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

错误是:MUL 10H无效操作和操作组合无法

2 个答案:

答案 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,这会让它加载一个未知的值。你的意思是在开头使用推送指令吗?