计算NASM中字符串中的单词

时间:2013-12-17 21:53:47

标签: assembly x86 nasm

我必须制作一个程序,该程序使用包含多行的文本文件,并计算文件中有多少单词。

通常这很容易,因为一行中的单词数=空格数+ 1.所以我可以循环一行,并在遇到空间的ascii代码时递增一个变量。但是这里的问题是单词之间有不同的空格,所以这种方法是不可能的。我想我可以忽略与另一个空间背对背的空间,但我不完全确定如何实现它。

我不是要求任何人为我或任何事情编写任何代码,我只需要帮助我解决/解决这个问题。

4 个答案:

答案 0 :(得分:0)

我会使用类似于你建议的方法;计算空格但忽略单词之间的重复空格。

还要确保忽略每行之前和之后的空格。

答案 1 :(得分:0)

通常你想要计算从空格到非空格的转换次数(反之亦然)。

通常情况下,您最终得到一个in_word来表示您是否是一个单词中的最新单词(即,最后一个字符不是空格)。如果in_word为true且当前字符是空格,则增加计数(并将in_word设置为false)。

答案 2 :(得分:0)

计算文本中的单词数是状态机应用的教科书示例;见例如这篇文章:http://media.pragprog.com/articles/nov_02_state.pdf

在第二页上有一个用于字数统计的状态机图表;将其转换为汇编代码应该很容易。

答案 3 :(得分:0)

考虑从内核使用strtok。只需在开头添加它:

extern strtok

然后学习如何使用它,绝对比发明自己更简单:D