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

📄 2.2查找匹配字符串.asm

📁 清华汇编实验源代码 字符串匹配 查询电话号码 窗口屏幕程序
💻 ASM
字号:
;查找匹配字符串
DATAS SEGMENT 
    mess1 db 'Enter keyword:','$'
    mess2 db 'Enter Sentence:','$'
    mess3 db 'Match at location:','$'
    mess4 db 'H of the sentence',0ah,0dh,'$'
    mess5 db 'No match','$'
    num = 255
    keyword db num
            db ?
            db num dup(?)
    sentence db num
            db ?
            db num dup(?)
DATAS ENDS
;*******************************************
CODES SEGMENT
	main proc far
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov es,ax
    ;
    call GetKeyword
    call GetSentence
    call Search
    ;
    main endp
;-------------------------------------------
    GetKeyword proc near
    ;
    lea dx,mess1
    mov ah,09h
    int 21h
    MOV dx,offset keyword
    mov ah,0ah
    int 21h
    mov dl,0ah
    mov ah,2
    int 21h
    ;
    GetKeyword endp
;-------------------------------------------
    GetSentence proc near
    ;
    lea dx,mess2
    mov ah,09h
    int 21h
    MOV dx,offset sentence
    mov ah,0ah
    int 21h
    mov dl,0ah
    mov ah,2
    int 21h
    ;
    GetSentence endp
;-------------------------------------------
    Search proc near
    ;
    mov bx,offset keyword+1
    mov dh,[bx]
    mov bx,offset sentence+1
    mov dl,[bx]
    mov ch,0
    mov cl,dl
    sub cl,dh
    inc cl
    lea bx,sentence+2
    mov ax,1
again:
    mov di,bx
    lea si,keyword+2
    ;
    push dx
b:  
    dec dh
    cmpsb
    jnz a
    cmp dh,0
    jnz b
    jmp match
a:
    pop dx   
    inc bx 
    inc ax 
    loop again
    
nomatch:  
    lea dx,mess5
    mov ah,09h
    int 21h
    jmp exit
match: 
    push ax
    lea dx,mess3
    mov ah,09h
    int 21h
    ;
    pop ax
    mov bl,16
    div bl
    mov dx,ax
    cmp al,0ah
    jb a1
    add al,07h
a1:
    add al,30h
    mov dl,al
    mov ah,02h
    int 21h
    cmp dh,0ah
    jb b1
    add dh,07h
b1:
    add dh,30h
    mov dl,dh
    mov ah,02h
    int 21h
    
    lea dx,mess4
    mov ah,09h
    int 21h    
exit:
    MOV AH,4CH 
    INT 21H
    Search endp
;------------------------------------------
CODES ENDS
    END START

⌨️ 快捷键说明

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