⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 string_search.asm

📁 简单的字符串查找程序
💻 ASM
字号:
DATA SEGMENT
K1 DB 13
K2 DB 0
KEYWORD DB 13 DUP(?)
S1 DB 30
S2 DB 0
SENTENCE DB 30 DUP(?)
MESS1 DB 13,10,'ENTER KEYWORD:','$'
MESS2 DB 13,10,'ENTER SENTENCE:$'
MESS3 DB 13,10,'NO MATCH $'
MESS4 DB 13,10,'MATCH AT LOCATION: $'
MESS5 DB 'H OF THE SENTENCE$'
MESS6 DB 'ERROR INPUT,PLEASE TRY AGAIN $'
COUNT DB ?
DATA ENDS
CODE SEGMENT
     ASSUME CS:CODE,DS:DATA,DS:DATA
MAIN PROC FAR
     MOV AX,DATA
     MOV DS,AX
     MOV ES,AX
START:MOV DX,OFFSET MESS2
     MOV AH,9
     INT 21H
     MOV DX,OFFSET S1
     MOV AH,10
     INT 21H
     XOR BX,BX
     MOV BL,S2
     MOV SENTENCE[BX],'$'
     ARRAY=SENTENCE
     CALL CONVERT
AGAIN:MOV DX,OFFSET MESS1
      MOV AH,9
      INT 21H
      MOV DX,OFFSET K1
      MOV AH,10
      INT 21H
      XOR BX,BX
      MOV BL,K2
      MOV KEYWORD[BX],'$'
      ARRAY=KEYWORD
      CALL CONVERT
      MOV DI,OFFSET SENTENCE
      MOV BX,DI
      MOV AL,S2
      SUB AL,K2
      INC AL
      MOV COUNT,AL
NEXT: MOV SI,OFFSET KEYWORD
      MOV CL,K2
      MOV CH,0
      CMP COUNT,0
      JL NOMATCH
      REP CMPSB
      JE MATCH
      INC BX
      MOV DI,BX
      DEC COUNT
      JE NOMATCH
      JMP NEXT
NOMATCH:MOV DX,OFFSET MESS3
        MOV AH,9
        INT 21H
        JMP AGAIN
MATCH:  MOV DX,OFFSET MESS4
        MOV AH,9
        INT 21H
        SUB BX,OFFSET S2
        CALL BINIHEX
        MOV DX,OFFSET MESS5
        MOV AH,9
        INT 21H
        JMP AGAIN
MAIN ENDP
BINIHEX PROC NEAR
      MOV CH,4
ROTATE:MOV CL,4
       ROL BX,CL
       MOV AL,BL
       AND AL,0FH
       ADD AL,30H
       CMP AL,3AH
       JL PRINT
       ADD AL,7H
PRINT: MOV DL,AL
       MOV AH,2
       INT 21H
       DEC CH
       JNZ ROTATE
       RET
BINIHEX ENDP
CONVERT PROC NEAR                
     NEXT1:INC  ARRAY                        
           CMP [ARRAY],'$'            
           JE EXIT                            
           CMP [ARRAY],41H            
           JL ERROR_EXIT                               
           CMP [ARRAY],5AH           
           JG ERROR_EXIT                           
           ADD [ARRAY],20H   
           JMP NEXT2                             
     NEXT2:CMP [ARRAY],'$'         
           JE EXIT                            
           CMP [ARRAY],61H          
           JL ERROR_EXIT                                   
           CMP [ARRAY],7AH          
           JG ERROR_EXIT                                  
           JMP NEXT1 
ERROR_EXIT:MOV DX,OFFSET MESS6
           MOV AH,9
           INT 21H
           JMP START
      EXIT:RET
CONVERT ENDP                                  
 

CODE ENDS
END MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -