微机原理与接口技术--汇编语言上机实验--字符串匹配

题目要求
已知一任意长度字符串str,以00h结束,长度小于200h,编写汇编程序实现在该字符串中搜索匹配子串substr(以00h结束,长度小于80)。
若找到,则将found单元置为ffh,并将匹配位置(以字符串str首地址为0参考点)存放在pos单元中;否则,将found单元置为00h。要求编写完整程序,并上机调试能运行。(禁止使用串操作指令)
代码实现

data segment
    str db '*bb*bbu*bbup*',00h    
	substr db 'bbupt',00h
	found db 0   
	pos dw 0  
data ends

code segment
     assume cs:code,ds:data
start:
    mov ax, data
    mov ds, ax
    lea si, str
	lea di, substr      ;指针指向首位字符
	mov cx, 0000h       ;cx:记录失败次数
compare:
	mov dl, [di]  
	mov dh, [si]
	cmp dh, dl          ;字符比较
	je success          ;相等,跳转到成功  
	jne fail            ;不相等,跳转到失败           
success:
	cmp byte ptr [di+1], 00h
	je finish_success   ;substr结束,跳转到匹配成功
    inc si
	inc di              ;修改指针
	jmp compare         ;比较下一个字符
fail:                
	lea di, substr      ;substr归原位,重新开始匹配
    cmp byte ptr [si+1], 00h  
	je finish_fail      ;str结束,跳转到匹配失败
	inc cx              ;记录失败次数 
	lea si, str         ;si指针先归零
	add si, cx          ;从第(cx)位重新开始匹配 
	jmp compare         ;比较下一个字符
finish_success:
    mov al, 0ffh
    mov found, al       ;记录匹配成功  
    mov pos, cx         ;记录匹配成功开始的位置
    jmp endpart
finish_fail:
    mov al, 00h
    mov found, al       ;记录匹配失败	  
    jmp endpart
endpart:
    int 3h
    mov ah, 4ch
	int 21h       
code ends
    end start
    	


备注
完整思路流程与调试过程可参考我的资源《微机实验一完整报告》,若有错误,还请指出~

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值