;::::::::::::::::::::::::::::::::::::::::::::::::::::
::                  Logo:  Edizioni ByteMan        ::
::               Collana:  Particelle Didattiche   ::
::             Argomento:  Assembly 8086           ::
::      Titolo originale:  XLSET.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 * ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::        XLSET.ASM    -  Revisione 20-agosto-1991, a cura di Salvo Rosta.  ::
::                                                                          ::
:: Function  XLSet(String,Lung)       ; Fissa String a Sinistra fino a lun- ::
::                                    ; ghezza Lung, completando con Spazi  ::
::                                    ; a Destra o troncando a Destra.      ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*
CODE      SEGMENT BYTE PUBLIC
          ASSUME  CS:CODE
          PUBLIC  XLSet

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

XLSet     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
          MOV     DL,AL               ;Numero Attuale di Caratteri in DL
          MOV     AL,CL
          STOSB                       ;Modifica Lunghezza Funzione Stringa
          CMP     CL,DL
          JA      AddSpace            ;Caso CL > DL
          JMP     Tronca              ;Caso CL <= DL
AddSpace: SUB     CL,DL
          PUSH    CX
          MOV     CL,DL
          REP     MOVSB               ;Copia la stringa
          POP     CX
          MOV     AL,' '              ;Carica il carattere Spazio
          REP     STOSB               ;Completa la funzione con CL-DL Spazi
          JMP     StopX
Tronca:   REP     MOVSB               ;Copia i Primi CL (Lung) caratteri

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

CODE      ENDS
          END



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