String 串组
任务是搜索一个字符串,并确定输入的字符是否在字符串MES3中。这是我的代码,但它不会只搜索字符串中的第一个字母。我如何才能循环工作并搜索字符串中的所有符号String 串组,string,search,assembly,char,String,Search,Assembly,Char,任务是搜索一个字符串,并确定输入的字符是否在字符串MES3中。这是我的代码,但它不会只搜索字符串中的第一个字母。我如何才能循环工作并搜索字符串中的所有符号 masm model small .DATA MSG1 DB 10,13,'CHARACTER FOUND :) $' MSG2 DB 10,13,'CHARACTER NOT FOUND :($' MSG3 DB 10,13,'there is no hope of doing this bla : $' MSG4 DB 10,13
masm
model small
.DATA
MSG1 DB 10,13,'CHARACTER FOUND :) $'
MSG2 DB 10,13,'CHARACTER NOT FOUND :($'
MSG3 DB 10,13,'there is no hope of doing this bla : $'
MSG4 DB 10,13,'ENTER THE CHARACTER TO BE SEARCHED : $'
NEW DB 10,13,'$'
NEW1 DB 10,13,'$'
NEW2 DB 10,13,'$'
.CODE
ASSUME CS:@CODE,DS:@DATA
START:
MOV AX,@DATA
MOV DS,AX
LEA di,[MSG3]
DOWN:
LEA dx,NEW
MOV AH,09H
INT 21H
LEA DX,MSG4
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
MOV DI,0
UP1:
CMP AL,[MSG3+di]
JE DOWN3
INC DI
LOOP UP1
LEA DX,MSG2
MOV AH,09H
INT 21H
JMP FINISH
DOWN3:
LEA DX,MSG1
MOV AH,09H
INT 21H
FINISH:
INT 3
mov AX, 4c00h
int 21h
END START
LOOP
指令(在LOOP UP1
中使用)递减CX
,如果CX!=0
。因此,您需要将CX
设置为UP1
标签之前要比较的最大字符数
或者你可以用
CMP字节PTR[MSG3-1+di],“$”
/JNE UP1
替换循环UP1
,因为字符串以“$”结尾。谢谢,但它仍然不起作用。我将CX设置为34,但它仍然是相同的。除了对我起作用的第一个符号外,我无法识别其他符号。如果我输入例如ab
,程序将打印找到的字符:)
。如果我输入的东西不在MSG3
中,比如q
,它会显示字符未找到:(
。我又做了一次,这次成功了,非常感谢