汇编语言程序设计——句子中关键字查找与匹配
一、实验要求
程序接受用户键入的一个关键字以及一个句子。如果句子中不含关键字则显示no match,如果句子中包含关键字则显示match,且把该字在句子中的位置用十六进制数显示出来。
二、实验思路
- 字符串的输入和上个实验如出一辙,仍然使用DOS的9号功能调用。详情可见笔者文章汇编语言程序设计——分类统计字符个数
- 分别用DI和SI指向句子中和关键字中正在比较的字段,指针的移动来逐一判断是否能够匹配。
- AX存放关键字,BX存放句子每次匹配不上时句子首地址下移,句子长度减1,最后BX减去句子的首地址加一得到关键字所在位置。
- 将获得的关键字位置的二进制信息转化为十六进制输出的子程序也是一个创新点。同样也可转为十进制输出,方法类似上一个实验中的display子程序,上个实验已经阐述过,此处不再赘述。上个实验点此查看
三、实验代码
DATAS SEGMENT
;此处输入数据段代码
string1 db 'Please input your sentences:','$'
string2 db 'Please input your keywords:','$'
string3 db 'Match at location in the sentence is:','$'
string4 db 'NO Match',13,10,'$'
string5 db 'H of the sentence',13,10,'$'
change db 13,10,'$' ;回车 换行 字符串结束符
keys label byte
max1 db 10
act1 db ?
key db 10 dup(?)
sens label byte
max2 db 50
act2 db