要求:程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则输出'No Match ',反之则显示'Match ',且把该字在句子中的位置用16进制输出。执行过程如下:
Enter keyword :abc
Enter sentence:We are studying abc .
Match
Match at location :11h of the sentence .
最好把算法说一下。是8086中的
哎!!!我算是把它搞定了:
分就给你吧
我大概说一下吧(说实话我是领教到编汇编程序的痛苦了,我是汇编新手,不是很会编)
输入的话多分配一些内存
选个寄存器计数
然后用loop弄个循环,CX里放sentence的长度(这个方法其实不太好,你可以向INT学习一下,输入的时候在字符串结尾加个特殊符号然后用这个特殊符号判断是否继续循环,这样还可以节省一个CX),用jz设置出口(用SUB比较的时候两数差为零的话ZF变成1),循环体里面用比较指令CMP(CMP不保存结果,用在比较里比较方便)比较KeyWord第一个字母和sentence里的每一个字母(汇编其实比C的数据结构还灵活,因为全是数字-_-),内存寻址用一些SI,BP什么的,然后在jz跳转到的地方写一些判定是否全部匹配的代码...
输出
最后引用C++ Primer里的一句话(不是原话):
把大问题分解成一个一个的小问题
其实这种东西自己写的话是最好的,我把显示字符串的东西写出来就兴奋半天哈
这个题目挺好玩的,有时间我也写一下
---------------------------------
关键是兴趣
你知道我写那个显示字符串的东西写了多少天吗?
三天~~~~~
犯了很多意想不到的错误,其实写程序就是积累经验的过程
输入的话多分配一些内存
选个寄存器计数
然后用loop弄个循环,CX里放sentence的长度(这个方法其实不太好,你可以向INT学习一下,输入的时候在字符串结尾加个特殊符号然后用这个特殊符号判断是否继续循环,这样还可以节省一个CX),用jz设置出口(用SUB比较的时候两数差为零的话ZF变成1),循环体里面用比较指令CMP(CMP不保存结果,用在比较里比较方便)比较KeyWord第一个字母和sentence里的每一个字母(汇编其实比C的数据结构还灵活,因为全是数字-_-),内存寻址用一些SI,BP什么的,然后在jz跳转到的地方写一些判定是否全部匹配的代码...
输出
最后引用C++ Primer里的一句话(不是原话):
把大问题分解成一个一个的小问题
其实这种东西自己写的话是最好的,我把显示字符串的东西写出来就兴奋半天哈
这个题目挺好玩的,有时间我也写一下
---------------------------------
关键是兴趣
你知道我写那个显示字符串的东西写了多少天吗?
三天~~~~~
犯了很多意想不到的错误,其实写程序就是积累经验的过程
温馨提示:答案为网友推荐,仅供参考