首页 > 解决方案 > 汇编语言 8086 - 如何设置输入的大小以及如何计算它?

问题描述

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

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

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

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

如何执行计算?

标签: assemblyinputx86-16

解决方案


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

最简单的方法是使用 DOS.BufferedInput 函数 0Ah。您可以在缓冲输入的工作原理中了解它。

设置长度

您似乎期望用户输入具有 1 位或 2 位数字。然后一个 3 字节的缓冲区就可以了;最多 2 个字符和一个终止回车的空间。

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

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

如何执行计算?

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

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


推荐阅读