www.pudn.com > ASM11.rar > ex4fsr.asm


        DATA  SEGMENT 
       INFON  DB        13,10, 'Enter keyword :$' 
      INFON1  DB        13,10,'Enter Sentence:$' 
      INFON2  DB        13,10,'Match at location:$' 
      INFON3  DB        'H of the sentence.$', 13,10 
 
    SENTENCE  DB        30,?,30 DUP(?) 
     KEYWORD  DB        30,?,30 DUP(?) 
 
 
          NO  DB        13,10,'No,Match!$' 
 
        DATA  ENDS 
 
        CODE  SEGMENT 
              ASSUME    DS:DATA,CS:CODE 
 
      START:  MOV       AX,DATA 
              MOV       DS,AX 
              MOV       ES,AX 
 
              XOR       CX,CX 
 
              CLD                   ;指明指针移动方向 
 
    MESSAGE:  LEA       DX,INFON1   ;提示输入sentence 
              MOV       AH,9 
              INT       21H 
 
    INPUTST:  LEA       DX,SENTENCE ;输入sentence,并赋值给di 
              MOV       AH,0AH 
              INT       21H 
 
              MOV       DI,DX 
 
              MOV       CL,DI[1]    ;CX中存储sentence元素的个数 
 
              INC       DI 
              INC       DI          ;把指针移动到sentence的第一个元素 
 
              MOV       BX,DI       ;sentence赋值给BX 
 
 
   MESSAGE1:  LEA       DX,INFON    ;提示输入keyword 
              MOV       AH,9 
              INT       21H 
 
    INPUTKE:  LEA       DX,KEYWORD  ;输入keyword 
              MOV       AH,0AH 
              INT       21H 
 
 
 
     COMPER:  PUSH      CX          ;保护sentence的循环次数 
 
              MOV       SI,DX       ;把keyword赋值给si 
              XOR       CX,CX 
              MOV       CL,SI[1]    ;CX中存储keyword元素的个数 
 
              INC       SI 
              INC       SI          ;把指针移动到keyword的第一个元素 
 
              REPE      CMPSB       ;比较sentece和keyword的元素 
 
              JE        PRINTY      ;相等则跳出循环 
 
 
 
              POP       CX          ;弹出sentence的循环次数 
              LOOP      COMPER 
 
 
     PRINTN:  LEA       DX,NO       ;打印不匹配 
              MOV       AH,9 
              INT       21H 
 
              JMP       EXIT 
 
     PRINTY:  MOV       SI,DX       ;sentence的首元素减去keyoword的元素个数+1 
              SUB       DI,SI[1] 
              INC       DI 
 
              SUB       DI,BX 
 
              AND       DI,00FFH 
              MOV       BX,DI       ;显示位数的值存入bx中 
 
              LEA       DX,INFON2   ;显示匹配位置为:的提示信息 
              MOV       AH,9 
              INT       21H 
 
 
 
                                     ;把显示输出变成十六进制 
              MOV       CH,4        ;循环四次 
     ROTATE:  MOV       CL,4 
              ROL       BX,CL       ;左移四位 
              MOV       AL,BL 
 
              AND       AL,0FH 
              ADD       AL,30H 
 
              CMP       AL,30H      ;不显示0 
              JZ        LO 
 
              CMP       AL,3AH 
              JL        PRINTIT 
              ADD       AL,7H 
 
    PRINTIT:  MOV       DL,AL 
              MOV       AH,2 
              INT       21H 
 
         LO:  DEC       CH 
              JNZ       ROTATE 
 
              LEA       DX,INFON3 
              MOV       AH,9 
              INT       21H 
 
 
       EXIT:  MOV       AH,4CH 
              INT       21H 
 
        CODE  ENDS 
              END       START