compare1.asm

来自「查找匹配字符串 程序接收用户键入的一个关键字以及一个句子.如果句子中不包含关键」· 汇编 代码 · 共 112 行

ASM
112
字号

data segment
 
  buf db 255,253 dup(?)
  data1 db 255,253 dup(?)
   not_pat db 'not patch$'
   pat db 'patch$'
 data ends
 
code segment
 assume ds:data,cs:code
start:
 mov ax,data
    mov ds,ax
       
       mov ah,0Ah
        lea dx,buf
        int 21h
      call ctrl
        mov ah,0Ah
        lea dx,data1
        int 21h
       
   mov bx,0
   mov cl,data1[1]
   sub cl,buf[1]
   inc cl
   mov ch,0
   xor si,si
   xor di,di
   L3:
    push cx
    mov cl,buf[1]
    mov ch,0
  L4:
    mov dl, buf[2+di]
    mov dh, data1[2+bx+si] 
    cmp dl,dh 
    jne L5
    inc si
    inc di
 Loop L4
    jmp L1 
 L5: 
   inc bx
   pop cx
Loop L3
 

   call ctrl
   mov ah,9
   lea dx,not_pat
   int 21h
   jmp L2

 L1:
   call ctrl
   mov ah,9
   lea dx,pat
   int 21h

 mov cl,4
   rol bl,cl
   mov al,bl
   mov dl,al
   and dl,0Fh
   cmp dl,0Ah
   jae L11
   add dl,30h
   jmp L12 
   L11:
    add dl,37h
   L12: 
   cmp dl,30h
   je  L15
   jmp L16
   L15: mov dl,20h
  L16:  mov ah,2
   int 21h

   mov cl,4
   rol bl,cl
   mov dl,bl
   and dl,0Fh
   cmp dl,0Ah
   jae L13
   add dl,30h
   jmp L14  
   L13: 
   add dl,37h
   L14:
   mov ah,02h
   int 21h

L2:
  call ctrl
  jmp start
mov ah,4ch
  int 21h
 ctrl proc 
     mov dl,0ah
     mov ah,02h
     int 21h
     mov dl,0dh
     mov ah,02h
     int 21h 
     ret
  ctrl endp 
  code ends
      end start
  

⌨️ 快捷键说明

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