找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 824|回复: 0
收起左侧

微机原理与接口技术实验-字符串搜索与匹配

[复制链接]
ID:1078860 发表于 2023-5-21 12:06 | 显示全部楼层 |阅读模式
介绍了一个使用x86指令集的汇编语言仿真实验,实验具体要求和仿真结果如下:1、实验任务要求

2、设计思路
分析实验要求,我们要完成四个功能:
1)从一个已知字符串str中找到匹配字符串substr的起始位置;
2)从起始位置开始,比对两个字符串,确定两个字符串确实一样,由此便可认为已知字符串中出现了匹配字符串;
3)在找到匹配字符串后,设置标志为单元found;
4)在找到匹配字符串后,把匹配位置存放到pos中。
明确需要完成的功能,然后设计算法:
1)使用‘while’循环,遍历字符串str,找到匹配字符串substr的起始位置;
2)找到起始位置后,再用LOOP循环对两个字符串比对。循环次数是substr长度再减一(第一次已经在while中完成);
3)4)完成循环后,设置标志位found,把匹配位置存放到pos中。

注意到str可能不包含substr,当遍历str没有找到substr时,程序终止。
图片1.png
下面是程序思路流程图:

算法流程图

算法流程图

3、运行结果
设置字符串str和匹配字符串substr如图:

字符串设置

字符串设置

运行结果如下:

仿真结果

仿真结果


本实验的汇编语言源代码见博客末尾:
  1. ;Finding substr from string

  2. DATA SEGMENT
  3.     str DB '2020210827 Liqiwen', 00H
  4.     substr DB 'Liqiwen', 00H
  5.     N EQU $-substr
  6.     found DB 00H
  7.     pos DW ?
  8. DATA ENDS

  9. CODE SEGMENT
  10.     ASSUME CS:CODE, DS:DATA
  11. START:
  12.     MOV AX, DATA
  13.     MOV DS, AX
  14.    
  15.     LEA SI, str
  16.     XOR AX, AX
  17.     MOV AL, [SI]    ;Using AL as the container of [SI]
  18.     XOR CX, CX
  19.     MOV CX, N-1     ;LOOP times: N-1
  20. BACK:LEA DI, substr
  21. SHIFT:
  22.     CMP AL, 00H     ;str doesn't contain substr, program terminated.
  23.     JE FINISH
  24.     CMP AL, [DI]
  25.     JE COMP         ;If [SI] euqals the first chart of substr, comparation will begin.
  26.     INC SI
  27.     MOV AL, [SI]   
  28.     JMP SHIFT
  29. COMP:
  30.     INC SI          ;Shift to the next chart
  31.     INC DI
  32.     MOV AL, [SI]
  33. L1:
  34.     CMP AL, [DI]
  35.     JNE BACK        ;If [DI] doesn't euqal [SI], clarifying substr didn't appare, instruction will go back.
  36.     INC SI
  37.     INC DI
  38.     MOV AL, [SI]
  39.     LOOP L1
  40.    
  41.     MOV AL, 0FFH
  42.     MOV found, AL
  43.     LEA BX, SI-8    ;BX deposits the beginning position.
  44.     MOV [pos], BX
  45.      
  46. FINISH:   
  47.     MOV AH, 4CH
  48.     INT 21H
  49. CODE ENDS
  50. END START
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表