home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / asemblr / pas / st_upper.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-06-05  |  1.3 KB  |  38 lines

  1. { **************************************************************
  2.   Datei: ST_UPPER.PAS
  3.   --------------------------------------------------------------
  4.   Autor: Sven Letzel
  5.   Datum: 12.04.1993
  6.   Funktion: Demonstriert die Umwandlung eines String in Groß-
  7.             buchstaben innerhalb einer Assemblerroutine
  8.   Borland Pascal 7.0 - Zielplattform: Real, Protected, Windows
  9.   **************************************************************}
  10.  
  11. {$IFDEF Windows} USES WinCrt; {$ENDIF}
  12.  
  13. FUNCTION UpperCase(Source: STRING): STRING; ASSEMBLER;
  14. ASM
  15.     PUSH   DS            { ** Datensegment retten ** }
  16.     CLD
  17.     LDS    SI, Source    { ** Zeiger auf Quellstring laden ** }
  18.     LES    DI, @Result   { ** Zeiger auf Ergebnisstring laden ** }
  19.     XOR    CH, CH
  20.     MOV    CL, [SI]
  21.     MOVSB                { ** Längenbyte ** }
  22. @1:
  23.     LODSB                { ** mov al, [si]  und  add si, 1 ** }
  24.     CMP    AL, 'a'
  25.     JB     @2
  26.     CMP    AL, 'z'
  27.     JA     @2
  28.     AND    AL, 0DFH      { ** Bit 5 ausblenden -> Buchstabe wird groß ** }
  29. @2:
  30.     STOSB                { ** mov es:[di], al  und  add di, 1 ** }
  31.     LOOP   @1            { ** cmp cx, 0  und  jnz @1 ** }
  32.     POP    DS            { ** DS-Register restaurieren ** }
  33. END;
  34.  
  35. BEGIN
  36.   WriteLn(UpperCase('Dieser Text besteht aus Großbuchstaben.'));
  37. END.
  38.