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

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;:        XNotStr.ASM  -  Versione: 15-luglio-1992, a cura di Salvo Rosta.  ::
;:                                                                          ::
;: Function  XNotStr(String)          ;Converte String in Not(String)       ::
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
CODE      SEGMENT BYTE PUBLIC
          ASSUME  CS:CODE
          PUBLIC  XNotStr

Function  EQU     DWORD PTR [BP+10]
String    EQU     DWORD PTR [BP+6]

XNotStr   PROC    FAR
          PUSH    BP
          MOV     BP,SP
          PUSH    DS

          LDS     SI,String           ;Lettura Puntatore Stringa DS:SI
          LES     DI,Function         ;Lettura Puntatore Funzione Stringa ES:DI
          CLD                         ;Direzione di scansione normale
          LODSB                       ;Lettura in AL Lunghezza Stringa
          STOSB
          XOR     CX,CX               ;Azzera Contatore
          MOV     CL,AL               ;CL Lunghezza Stringa
          JCXZ    StopXS              ;Smetti se lunghezza=0

XNot:     LODSB                       ;Carica AL con Elemento di String
          NOT     AL                  ;Effettua NOT
          STOSB                       ;Copia AL in Function
          LOOP    XNot                ;Ricicla

StopXS:   POP     DS                  ;Ripristino Registri
          POP     BP
          RET     4
XNotStr   ENDP

CODE      ENDS
          END