首页 > 解决方案 > 我可以在汇编语言中使用注册变量作为被乘数吗?

问题描述

我想在我的程序中使用一个变量作为被乘数,下面是其中一个变量,我不确定它是否声明正确

chickenPrice db 19

这是为了声明鸡肉的价格是 19 美元。另外,我了解到AX:DX它是 16 位寄存器

我想将用户输入作为乘数,但我不确定mul ax, chickenPrice这样做是否正确。

我想知道有没有办法以 3 位数字显示答案?我为此有多个变量,变量相乘的总和可能需要我以 3 位数字显示。

标签: assemblynumbersx86-16multiplicationemu8086

解决方案


chickenPrice db 19

chickenPrice的声明很好。

然而,对于上述声明,mul ax, chickenPrice由于几个原因,使用是错误的。

mul指令只需要 1 个操作数。该指令暗示使用累加器AX(或AL)。我们不需要明确提及。

而且我们必须知道该mul指令可以在 2 种不同的大小上运行。要么将字节 inAL与任何字节大小的操作数相乘,要么将字 inAX与任何字大小的操作数相乘。选择是你的,但由于你定义了chickenPrice一个字节,字节大小的乘法将是正确的。

mov al, ...       <-- Here the number gotten from user input
mul chickenPrice

两个数字的乘积现在在AX寄存器中

使用 DOS 显示数字详细说明了如何显示多位数字。在答案的方法 2段落中查找代码片段。


推荐阅读