汇编:汇编语言实现判断一个字符串是否是另一个字符串的字串
1 ;========================================== 2 ;循环程序设计 3 ;判断一个字符串是否出现在另一个字符串中 4 DATAS SEGMENT 5 string1 db "your finger can change the world",0 6 string2 db "finger",0 7 flag db ? ;存在为1 不存在为0 8 DATAS ends 9 CODES SEGMENT 10 ASSUME CS:CODES, DS:DATAS 11 START: 12 mov AX,DATAS 13 mov DS,AX 14 ;正式的代码开始 15 mov BX,offset string2 16 mov AX,offset string1 ;si存放目标字符串的偏移地址 17 18 dec AX 19 while1: ;while1判断string2的首字母与string1 的哪一个首字母相等 20 mov si,AX 21 mov di,BX ;di存放带判断字符串的偏移地址 22 inc si 23 inc AX 24 xor cx,cx 25 mov ch,[si] ;ch存放string1中的一个字符 26 mov cl,[di] ;cl存放string2中的一个字符 27 cmp ch,0 28 jz flag0 ;判断是否已经为最后一个字符,如果是则跳转 29 cmp ch,cl 30 jnz while1 31 32 while2: ;while2判断string2的其余字母与string1 的其余字母是否相等 33 inc di 34 inc si 35 inc dx ;si di自增判断其余字符 36 xor cx,cx 37 mov ch,[si] ;ch存放string1中的一个字符 38 mov cl,[di] ;cl存放string2中的一个字符 39 cmp cl,0 40 jz flag1 ;string2已经到最后一个字符说明相等 41 42 cmp ch,0 ;string1已经是最后一个字符 43 jz flag0 44 45 cmp ch,cl 46 jz while2 ;如果两个字符相等则继续循环判断一个字符 47 jnz while1 ;不等则进行循环1 48 49 flag0: 50 mov flag,0 51 jmp exit 52 flag1: 53 mov flag,1 54 jmp exit 55 exit: 56 xor cx,cx 57 mov cl,flag 58 add cl,30h 59 mov flag,cl 60 print: ;向屏幕打印输出判断结果 61 lea si,flag 62 mov byte ptr[si+1],'$' ;加上结束符 63 mov dx,si 64 mov ah,09h 65 int 21H 66 mov ah,4ch 67 int 21H 68 CODES ends 69 end START
"你的指尖,拥有改变世界的力量! "
欢迎关注我的个人博客:https://sugarat.top