zoukankan      html  css  js  c++  java
  • 汇编:汇编语言实现判断一个字符串是否是另一个字符串的字串

     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
  • 相关阅读:
    面试题
    iOS 两种方法实现左右滑动出现侧边菜单栏 slide view
    进程、线程、多线程相关总结
    iOS开发
    播放 视频
    delphi控件属性大全-详解-简介
    Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值
    FastReport 使用说明
    delphi的取整函数round、trunc、ceil和floor
    cxGrid 速度
  • 原文地址:https://www.cnblogs.com/roseAT/p/10250320.html
Copyright © 2011-2022 走看看