assembly - 汇编语言 8086 - 如何设置输入的大小以及如何计算它?
问题描述
我想知道如何设置输入的长度以及如何获取用户输入的字符串的大小。
例如,他们可能会输入 9 或 99 来表示他们想要购买的票数,但我不想限制他们每次输入 2 位数字,例如 09 表示单数,我希望他们可以输入 9$ 或 99$ . 之后根据输入的长度,数字将被视为不同的值,如果输入只有 1 位,则第一个数字将表示为 1,如果输入是 2 位输入,则第一个数字将表示十。
之后,我将使用以下公式相乘:
总计 = 1.5 * 停靠站数 * 票数 * 105%
如何执行计算?
解决方案
我想知道如何设置输入的长度以及如何获取用户输入的字符串的大小。
最简单的方法是使用 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%
如何执行计算?
这是一个完全不同的问题,你应该向我们展示你的最大努力。我认为在今天的答案的帮助下,您应该能够开始着手解决这个问题......
一个提示:不要让小数点欺骗你,你可以完全使用整数指令来计算它。
推荐阅读
- html - 本地 HTML 文件未在浏览器中加载 CSS 文件
- python - “TypeError: cannot create mpf from d”',当执行“For”结构时
- java - javadoc在命令行上找不到包
- azure-timeseries-insights - Microsoft Azure 时序见解:如何查询展平的动态数组
- javascript - 在输入中添加两个值而不相互覆盖
- python - 使用 labelEncoder 时输入形状错误
- python - 多个任务并从 Locust 配置文件中读取用户和孵化率
- c# - 可以在同一个项目中拥有 Entity Framework 和 Entity Framework Core 还是有异味?
- javascript - 将学生添加到颜色组的算法
- reactjs - 状态不会保持更新