我可以在汇编语言中使用注册变量作为被乘数吗?

Can I use a registered variable as multiplicand in assembly language?

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

chickenPrice db 19

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

我想将用户输入作为乘数,但我不确定 mul ax, chickenPrice 是否是正确的方法。

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

chickenPrice db 19

chickenPrice的声明没问题。

但是对于上面的声明,使用 mul ax, chickenPrice 是错误的有几个原因。

mul指令只占用1个操作数。此指令使用累加器 AX(或 AL)是隐含的。我们不需要明确提及它。

而且我们必须知道 mul 指令可以对 2 种不同的大小进行操作。我们要么将 AL 中的字节与任何字节大小的操作数相乘,要么将 AX 中的字与任何字大小的操作数相乘。选择权在您,但由于您将 chickenPrice 定义为一个字节,因此字节大小的乘法将是正确的。

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

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

Displaying numbers with DOS 详细解释了如何显示多位数。在答案的 方法 2 段落中查找代码片段。