home *** CD-ROM | disk | FTP | other *** search
- ; Datei <MasBeisp.ASM>
- ; Beispielprogramm im MASM-Modus,
- ; um eine Zeile in Großbuchstaben umzuwandeln
- TITLE Beispielprogramm MASM ; dieser Kommentar
- ; erscheint in der Überschrift
- .286
- PufferGroesse = 128 ; Größe der Ein-/Ausgabepuffer
-
- DOS MACRO intnum
- mov ah,intnum ; Funktionsnummer in AH
- int 21h ; DOS aufrufen
- ENDM
-
- Stk SEGMENT STACK
- db 100h DUP (?) ; Stack reservieren
- Stk ENDS
-
- Data SEGMENT WORD
- EingabePuffer DB PufferGroesse DUP (?) ; Eingabepuffer
- AusgabePuffer DB PufferGroesse DUP (?) ; Ausgabepuffer
- Data ENDS
-
- DGroup GROUP Stk, Data ; Datensegmente
- ; zusammmenfassen
-
- Code SEGMENT WORD
- ASSUME cs:CODE ; Aktuelles Code-Segment
- Anfang:
- mov ax,DGROUP ; Adresse von DGroup
- mov ds,ax ; in DS laden
- ASSUME ds:DGROUP ; Datensegment nun DGROUP
- mov dx,OFFSET DGROUP:EingabePuffer
- ; DX als Zeiger auf Ausgabepuffer
- xor bx,bx ; Standardeingabegerät
- call ZeileLesen ; eine Zeile Lesen
- mov bx,ax ; Länge in BX laden
- mov EingabePuffer[bx],0 ; Mit NUL anschließen
- push ax ; AX retten
- call GrossBuchStabe ; Zeile umwandeln
- pop cx ; Anzahl in CX laden
- mov dx,OFFSET DGroup:AusgabePuffer
- ; DX als Zeiger auf Eingabepuffer
- mov bx,1 ; Standardausgabegerät
- DOS 40h ; DOS-Funktion Datei schreiben
- DOS 4Ch ; DOS-Funktion Programmende
-
- ; Eine Zeile einlesen, DS zeigt auf Puffer, liefert Anzahl in AX
- ZeileLesen PROC NEAR
- mov cx,Puffergroesse ; Puffergröße laden
- DOS 3Fh ; DOS-Funktion Datei lesen
- and ax,ax ; Zero-Flag setzen, falls ein
- ; Zeichen eingelesen wurde
- ret ; Rückkehr zum Programm
- ZeileLesen ENDP
-
- ; Zeile in Großbuchstaben umwandeln
- GrossBuchStabe PROC NEAR
- mov si,OFFSET DGroup:EingabePuffer
- ; Si als Zeiger auf Eingabepuffer
- mov di,0 ; DI initialisieren
- @@UmwandelnSchleife:
- cmp BYTE PTR [si],0 ; Textende?
- je @@Fertig ; ja, dann fertig
- mov al,[si] ; sonst, nächstes Zeichen
- and al,NOT 'a' - 'A' ; Umwandeln in Großbuchstaben
- mov AusgabePuffer[di],al ; speichern in Ausgabepuffer
- inc si ; Besser mit lodsb, stosb,
- inc di ; dies hier ist nur ein Beispiel!
- jmp @@UmwandelnSchleife ; Weiter umwandeln
- @@Fertig:
- ret
- GrossBuchStabe ENDP ; Ende der Prozedur
- Code ENDS ; Ende des Code-Segments
- END Anfang ; Ende des Quelltexts und Startadresse
-