【问题标题】:Unknown size of array in assembly 8086程序集 8086 中数组的未知大小
【发布时间】:2019-03-06 06:39:44
【问题描述】:

我需要从用户那里得到一个字符串输入,但我不知道他要输入的字符串的大小,我需要在内存中准备一个数组作为字符串的大小,因为我正在使用中断 21h , 啊=0啊。 所以我的问题是如果我不知道字符串的大小,如何获取字符串的输入? 我可以使用其他中断吗?我搜索了,但没有找到任何东西。

【问题讨论】:

  • 我假设您的意思是ah=0ah,因为ah=9 用于输出。无论如何,通常你会有 一些 上限来读取多少输入,即使它是 1000、10000 或 100000 个字符。如果您的上限为 255 个字符或更少,您可以使用 int 21h / ah=0ah。如果它高于我想你可以编写一个循环来读取 int 21h / ah=8 的单个字符。

标签: assembly dos x86-16


【解决方案1】:

我建议您创建一个固定大小的缓冲区,并使用带有the interrupt 21h, ah=8 的循环直接输入字符。

这样你可以检查用户输入了多少字节,如果这个数字超过你的缓冲区大小,则终止。

简而言之:

  • 创建一个足够大的缓冲区
  • 抓取一个字符直到
    • 这是一个换行符
    • 输入的字符数将超过您的缓冲区
  • 不要忘记零终止您的字符串

如果你真的需要读取整个字符串,你也许可以找到一种动态重新分配缓冲区的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多