首页 > 解决方案 > 两个输入并将它们相乘。如何做到这一点?

问题描述

我想取两个输入并将它们相乘并在emu8086中打印结果。但问题是只有将 AL 或 AX 作为一个固定操作数才能进行乘法运算。假设我不能将 BX 和 DX 相乘。那么现在我如何输入 AL 和 BL 并将它们相乘。

我的代码:

mov ah,1
int 21h
mov bl,al
int 21h
mul bl
mov ah,2
mov dl,al
int 21h

标签: assemblydosx86-16multiplicationemu8086

解决方案


使用 DOS 函数 01h 得到的输入是一个字符。您需要将其转换为它所代表的数字。例如“2”被转换为值 2。我们只需减去 48即可。

乘法mul bl是正确的(AL* BL)。产品将在,AX但两个输入都限制为 9,因此产品永远不会大于 81。

在打印之前,您需要通过添加 48将产品的值转换回字符。这只有在产品不超过 9 时才有效,因为否则它需要超过 1 个字符

mov ah,1
int 21h
SUB AL, 48
mov bl,al

MOV AH, 01h
int 21h
SUB AL, 48

mul bl

mov ah,2
mov dl,al
ADD DL,48
int 21h

如果您输入“2”和“3”,您将得到“6”的输出。


推荐阅读