;:::::::::::::::::::::::::::::::::::::::::
;:      Sito:  www.byteman.it  OpenWeb  ::
;:  Raccolta:  Particelle PAS+ASM       ::
;:    Autore:  Salvo Rosta aka byteman  ::
;:    Titolo:  XSCANTXT.ASM             ::
;: Revisione:  07-04-1994               ::
;:::::::::::::::::::::::::::::::::::::::::

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;:        XScanTxt.ASM  -  Versione: 20-agosto-1991, a cura di Salvo Rosta.  ::
;:                                                                           ::
;: Function  XScanText(Consec,Punt,Lung)   ; Cerca Testo in area Punt(Lung)  ::
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
CODE      SEGMENT BYTE PUBLIC
          ASSUME  CS:CODE
          PUBLIC  XScanText

Consec    EQU     WORD PTR [BP+12]
Punt      EQU     DWORD PTR [BP+8]
Lung      EQU     WORD PTR [BP+6]

ProcUno   PROC    FAR
XScanText:
          PUSH    BP
          MOV     BP,SP
          PUSH    DS
          LDS     SI,Punt             ;Puntatore String in DS:SI
          MOV     DI,SI               ;Salvataggio SI in DI
          MOV     CX,Lung             ;Lunghezza Area da Analizzare
          CLD
          XOR     DX,DX               ;Contatore Lettere consecutive
NextCh:   LODSB                       ;Lettura Carattere
          CMP     AL,' '
          JE      Includ
          CMP     AL,'0'
          JB      Skip1               ;Esclude se Minore di '0'
          CMP     AL,'9'
          JBE     Includ              ;Include se in ['0'..'9']
          AND     AL,0DFh             ;Trasformazione in Maiuscole
          CMP     AL,'A'
          JB      Skip1               ;Esclude se Minore di 'A'
          CMP     AL,'Z'
          JA      Skip1               ;Esclude se Maggiore di 'Z'
Includ:   INC     DX
          CMP     DX,Consec           ;Se DX=Consec probabile zona Testo
          JE      Text
          JMP     Skip2
Skip1:    XOR     DX,DX
Skip2:    LOOP    NextCh
          XOR     SI,SI
          JMP     Fine
Text:     SUB     SI,Consec
          SUB     SI,DI
Fine:     MOV     AX,SI         ;Restituisce in modo Funzione
          POP     DS
          POP     BP
          RET     8
ProcUno   ENDP

CODE      ENDS
          END