home *** CD-ROM | disk | FTP | other *** search
- #pragma inline
- #include <stdio.h>
-
- /* Funktionsprototyp für StringToUpper */
- extern unsigned int StringToUpper
- (
- unsigned char far * Ziel,
- unsigned char far * Quelle
- ) ;
-
- #define MAX_STRING_LENGTH 100
- char *TestString = "Das ist ein String mit Kleinbuchstaben!" ;
- char UpperCaseString [MAX_STRING_LENGTH] ;
-
- main ()
- {
- unsigned int StringLength ;
-
- StringLength = StringToUpper ( UpperCaseString, TestString ) ;
- printf ( "Original-String:\n%s\n\n", TestString ) ;
- printf ( "String in Großbuchstaben:\n%s\n\n", UpperCaseString ) ;
- printf ( "Anzahl an Zeichen: %d\n\n", StringLength ) ;
- }
-
- /*
- Funktion für eine superschnelle Umwandlung von einem String
- in Großbuchstaben
-
- Eingabewerte:
- Ziel - Array, in dem der String mit Großbuchstaben
- gespeichert wird (ASCIIZ)
- Quelle - Array in dem Der string mit Kleinbuchstaben
- vorliegt
-
- Ergebnis:
- Die Länge des Strings in Zeichen ohne NUL
- */
- unsigned int StringToUpper ( unsigned char far * Ziel,
- unsigned char far * Quelle)
- {
- unsigned int AnzahlZeichen ;
-
- #define KLEINES_A 'a'
- #define KLEINES_Z 'z'
-
- asm KORREKTUR_WERT EQU 20h ;
- asm cld ;
- asm push ds ;
- asm lds si,Quelle ;
- asm les di,Ziel ;
- AnzahlZeichen = 0 ;
- Schleife:
- asm lodsb ;
- asm cmp al,KLEINES_A ;
- asm jb ZeichenSpeichern ;
- asm cmp al,KLEINES_Z ;
- asm ja ZeichenSpeichern ;
- asm sub al,KORREKTUR_WERT ;
- ZeichenSpeichern:
- asm stosb ;
- AnzahlZeichen++ ;
- asm and al,al ;
- asm jnz Schleife ;
- AnzahlZeichen-- ;
- asm pop ds ;
- return (AnzahlZeichen) ;
- }
-