汇编语言 8086 - 如何设置输入的大小以及如何计算它?

Assembly language 8086 - How to set a size for the input & how to calculate it?

我想知道如何设置输入的长度以及如何获取用户输入的字符串的大小。

比如他们可能会输入9或者99来代表他们要买的票数,但是我不想限制他们每次输入2位,比如09代表单数,我希望他们可以输入9 美元或 99 美元。之后根据输入的长度,数字将被视为不同的值,如果输入只有一个数字那么第一个数字将被表示为一个,如果输入是一个 2 数字输入那么第一个数字将代表十

之后我将使用以下公式相乘:

总计=1.5*经停站数*票数*105%

如何进行计算?

从标签 x86-16 我假设你想要你的程序 运行 在 DOS 中。

您可以使用 DOS 功能 READ FROM FILE OR DEVICE。 将文件句柄设置为 BX=0 ; Standard input handle,在寄存器 CX 中指定缓冲区大小并调用函数。
然后在寄存器 AX.

中返回用户实际输入的字符数

I want to know how to set the length for the input and also how to get the size of the string that is entered by the user.

最简单的方法是使用 DOS.BufferedInput 函数 0Ah。您可以在 .

中阅读相关信息

设置长度

您似乎希望用户输入有 1 位或 2 位数字。那么 3 个字节的缓冲区就可以了;最多 2 个字符和一个终止符的空间 return.

INBUF  db 3, 0, 3 dup (0)

你这样使用它:

lea dx, INBUF         
mov ah, 0Ah  
int 21h

获取尺码

这是您读取输入文本长度的方式:

mov cl, [INBUF + 1]
mov ch, 0                ; -> CX is either 1 or 2

假设用户输入 5 enter,然后从上面的代码中 CX 寄存器将保存 1。然后你通过减去 48 将字符“5”转换为值 5,如:

mov al, [INBUF + 2]
sub al, 48

Total = 1.5 * number of stops traveled * number of ticket * 105%

How do I perform the calculation?

这是一个完全不同的问题,您应该向我们展示您的最大努力。我认为在今天的答案的帮助下,您应该能够开始着手解决...

不过有个提示:不要让小数点骗了你,你完全可以使用整数指令来计算它。