Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 程序集8086中的阵列大小未知_Assembly_Dos_X86 16 - Fatal编程技术网

Assembly 程序集8086中的阵列大小未知

Assembly 程序集8086中的阵列大小未知,assembly,dos,x86-16,Assembly,Dos,X86 16,我需要从用户那里获取字符串输入,但我不知道他将输入的字符串的大小,我需要在内存中准备一个数组作为字符串的大小,因为我使用的是中断21h,ah=0ah。 所以我的问题是,如果我不知道字符串的大小,如何获取字符串的输入? 我还能用别的中断吗?我搜索了,但什么也没找到。我建议您创建一个固定大小的缓冲区,并使用循环直接输入字符 通过这种方式,您可以检查用户输入的字节数,并在该数字超过缓冲区大小时终止 简言之: 创建具有足够大小的缓冲区 抓取一个字符直到 这是一次断线 输入的字符数将超过缓冲区 不要

我需要从用户那里获取字符串输入,但我不知道他将输入的字符串的大小,我需要在内存中准备一个数组作为字符串的大小,因为我使用的是中断21h,ah=0ah。 所以我的问题是,如果我不知道字符串的大小,如何获取字符串的输入?
我还能用别的中断吗?我搜索了,但什么也没找到。

我建议您创建一个固定大小的缓冲区,并使用循环直接输入字符

通过这种方式,您可以检查用户输入的字节数,并在该数字超过缓冲区大小时终止

简言之:

  • 创建具有足够大小的缓冲区
  • 抓取一个字符直到
    • 这是一次断线
    • 输入的字符数将超过缓冲区
  • 不要忘记以零结束字符串

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

我猜您的意思是
ah=0ah
,因为
ah=9
用于输出。无论如何,通常情况下,要读取的输入量会有一定的上限,即使是1000、10000或100000个字符。如果上限为255个字符或更少,则可以使用int 21h/ah=0ah。如果它高于这个值,我想你可以写一个循环,在这个循环中,你可以读取int 21h/ah=8的单个字符。