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

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;:        XLEFTS.ASM   -  Versione: 20-agosto-1991, a cura di Salvo Rosta.  ::
;:                                                                          ::
;: Function  XLeftS(String,Lung) ; Parte Sinistra di String Lunga Lung      ::
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
CODE      SEGMENT BYTE PUBLIC
          ASSUME  CS:CODE
          PUBLIC  XLeftS

Function  EQU     DWORD PTR [BP+12]
String    EQU     DWORD PTR [BP+8]
Lung      EQU     BYTE PTR [BP+6]

XLeftS    PROC    FAR
          PUSH    BP
          MOV     BP,SP
          PUSH    DS

          LES     DI,Function         ;Lettura Puntatore Funzione Stringa ES:DI
          LDS     SI,String           ;Lettura Puntatore Stringa DS:SI
          XOR     CH,CH
          MOV     CL,Lung             ;Numero Voluto di Caratteri in CL
          CLD
          LODSB                       ;Numero Attuale di Caratteri in AL
          CMP     CL,AL
          JBE     Copia               ;Caso CL <= AL
          MOV     CL,AL               ;Caso CL >  AL
Copia:    MOV     AL,CL
          STOSB                       ;Modifica Lunghezza Funzione Stringa
          JCXZ    StopX
          REP     MOVSB               ;Copia String in Function

StopX:    POP     DS                  ;Ripristino Registri
          POP     BP
          RET     6
XLeftS    ENDP

CODE      ENDS
          END