;::::::::::::::::::::::::::::::::::::::::::::::::::::
::                  Logo:  Edizioni ByteMan        ::
::               Collana:  Particelle Didattiche   ::
::             Argomento:  Assembly 8086           ::
::      Titolo originale:  XNOCHACO.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 * ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::        XNOCHACO.ASM -  Revisione 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

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