;::::::::::::::::::::::::::::::::::::::::::::::::::::
::                  Logo:  Edizioni ByteMan        ::
::               Collana:  Particelle Didattiche   ::
::             Argomento:  Assembly 8086           ::
::      Titolo originale:  XNOCHATE.ASM            ::
:: Autore e Proprietario:  Salvatore ROSTA         ::
::      Ultima revisione:  07-04-1994              ::
::         Sito Internet:  w3.quipo.it/byteman     ::
::                e-mail:  byteman@quipo.it        ::
::                                                 ::
::     Tutti i diritti riservati (c)1993..2000     ::
;::::::::::::::::::::::::::::::::::::::::::::::::::::

COMMENT * ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::        XNOCHATE.ASM -  Revisione 6-9-1991, a cura di Salvo Rosta.        ::
::                                                                          ::
:: Function  XNoCharTe(Char,String)   ; Elimina i caratteri Char in coda    ::
::                                    ; a String                            ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*
CODE      SEGMENT BYTE PUBLIC
          ASSUME  CS:CODE
          PUBLIC  XNoCharTe

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

XNoCharTe PROC    FAR
          PUSH    BP
          MOV     BP,SP
          PUSH    DS

          LES     DI,String           ;Lettura Puntatore Stringa ES:SI
          XOR     CX,CX               ;Azzera Contatore
          MOV     CL,ES:[DI]          ;CL Lunghezza Stringa
          JCXZ    CasoZero            ;Smetti se lunghezza=0

          INC     DI                  ;DI Punta Primo Carattere di String
          MOV     AL,Char
          CLD                         ;Direzione di scansione normale
          REPZ    SCASB               ;Ricerca il primo Non-Char
          JZ      CasoZero            ;Stringa tutta di Spazi, vai Uscita Extra.
          DEC     DI
          INC     CL                  ;Uscita Normale. Riaggiusta il contatore CL.
          LDS     SI,String
          MOV     SI,DI
          LES     DI,Function         ;Lettura Puntatore Funzione Stringa ES:DI
          MOV     ES:[DI],CL          ;Scrittura Lunghezza Funzione Stringa
          INC     DI
          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
XNoCharTe ENDP

CODE      ENDS
          END

;::::::::::::::::  FINE FILE  :::::::::::::::::::