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

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;:        XNOCHACO.ASM -  Versione: 6-9-1991, a cura di Salvo Rosta.        ::
;:                                                                          ::
;: Function  XNoCharCo(Char,String)   ; Elimina i caratteri Char in coda    ::
;:                                    ; a String                            ::
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
CODE      SEGMENT BYTE PUBLIC
          ASSUME  CS:CODE
          PUBLIC  XNoCharCo

Function  EQU     DWORD PTR [BP+12]
Char      EQU      BYTE PTR [BP+10]
String    EQU     DWORD PTR [BP+6]

XNoCharCo PROC    FAR
          PUSH    BP
          MOV     BP,SP
          PUSH    DS

          LDS     SI,String           ;Lettura Puntatore Stringa DS:SI
          XOR     CX,CX               ;Azzera Contatore
          LODSB
          MOV     CL,AL               ;CL Lunghezza Stringa
          JCXZ    CasoZero            ;Smetti se lunghezza=0

          LES     DI,String           ;Lettura Puntatore Stringa ES:DI
          ADD     DI,CX               ;DI Punta Ultimo Carattere di String
          MOV     AL,Char
          STD                         ;Direzione di scansione inversa
          REPZ    SCASB               ;Ricerca, dalla fine, il primo Non-Ch.
          JZ      CasoZero            ;Stringa tutta di Ch, vai Uscita Extra.
          INC     CL                  ;Uscita Normale. Riaggiusta il contatore CL.
          LES     DI,Function         ;Lettura Puntatore Funzione Stringa ES:DI
          MOV     ES:[DI],CL          ;Scrittura Lunghezza Funzione Stringa
          INC     DI
          CLD
          REP     MOVSB
          JMP     Fine

CasoZero: LES     DI,Function         ;Lettura Puntatore Funzione Stringa ES:DI
          MOV     Byte Ptr ES:[DI],0

Fine:     POP     DS                  ;Ripristino Registri
          POP     BP
          RET     6
XNoCharCo ENDP

CODE      ENDS
          END