
汇编查找匹配字符串问题
自己写了一个思路这样,先输入关键字buf,然后输入匹配串buf2。默认buf1大于buf2。通过buf2[2]取出循环判断次数,buf[2]取出cmpsb个数。然后无脑比...
自己写了一个思路这样,先输入关键字buf,然后输入匹配串buf2。默认buf1大于buf2。通过buf2[2]取出循环判断次数,buf[2]取出cmpsb个数。然后无脑比较。但是代码有误。(都显示结果match,实在查不了,求助)
DATA SEGMENT
BUF DB 30,?,30 DUP("$")
CRLF DB 07H,0AH,'$'
INF3 DB 0DH,0AH,'MATCH!$'
INF4 DB 0DH,0AH,'NO MATCH!$'
BUF2 DB 30,?,30 DUP("$")
safe dw '??'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA DX,BUF
MOV AH, 0AH
INT 21H
LEA DX,CRLF ;换行!!!
MOV AH,09H
INT 21H
LEA DX,BUF+2
MOV AH,09H
INT 21H
LEA DX,CRLF ;换行!!!
MOV AH,09H
INT 21H
LEA DX,BUF2
MOV AH, 0AH
INT 21H
LEA DX,CRLF ;换行!!!
MOV AH,09H
INT 21H
LEA DX,BUF2+2
MOV AH,09H
INT 21H
MOV CL, BUF[1]
MOV CH,00
LEA SI,BUF+2
LEA DI,BUF2+2
mov safe,cx
mov cl,buf[2]
mov ch,00
go:
mov cx,safe
CLD
REPZ CMPSB
JZ LAB1
loop go
LAB1:
cmp cx,0000h
jnz what
what:
LEA DX,INF3
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
LAB2:
LEA DX,INF4
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START 展开
DATA SEGMENT
BUF DB 30,?,30 DUP("$")
CRLF DB 07H,0AH,'$'
INF3 DB 0DH,0AH,'MATCH!$'
INF4 DB 0DH,0AH,'NO MATCH!$'
BUF2 DB 30,?,30 DUP("$")
safe dw '??'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA DX,BUF
MOV AH, 0AH
INT 21H
LEA DX,CRLF ;换行!!!
MOV AH,09H
INT 21H
LEA DX,BUF+2
MOV AH,09H
INT 21H
LEA DX,CRLF ;换行!!!
MOV AH,09H
INT 21H
LEA DX,BUF2
MOV AH, 0AH
INT 21H
LEA DX,CRLF ;换行!!!
MOV AH,09H
INT 21H
LEA DX,BUF2+2
MOV AH,09H
INT 21H
MOV CL, BUF[1]
MOV CH,00
LEA SI,BUF+2
LEA DI,BUF2+2
mov safe,cx
mov cl,buf[2]
mov ch,00
go:
mov cx,safe
CLD
REPZ CMPSB
JZ LAB1
loop go
LAB1:
cmp cx,0000h
jnz what
what:
LEA DX,INF3
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
LAB2:
LEA DX,INF4
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START 展开
1个回答
展开全部
go:
mov cx,safe
CLD
REPZ CMPSB
JZ LAB1
loop go----CX等于多少?
mov cx,safe
CLD
REPZ CMPSB
JZ LAB1
loop go----CX等于多少?
更多追问追答
追问
2层嵌套,go loop这层cx应该是buf2的长度,repz前cx应该修改为buf的长度。问题应该出在jz lab1这句
追答
go:
mov cx,safe
CLD
REPZ CMPSB--执行这句,CX为零了吧?
JZ LAB1
loop go----CX等于多少?
----------------
楼主写一个输入、输出的样例吧。
什么样输入,显示MATCH。
什么样输入,显示NO MATCH。
不一样长度,还用比较吗?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询