home *** CD-ROM | disk | FTP | other *** search
- DOSSEG
- .MODEL SMALL
- .STACK 100h
- .DATA
- MAX_STRING EQU 20000
- StringUmzudrehen DB MAX_STRING DUP (?)
- UmgedrehterString DB MAX_STRING DUP (?)
- .CODE
- mov ax,@Data
- mov ds,ax ; DS zeigt auf das Datensegment
- mov ah,3Fh ; DOS-Funktion über Handle lesen
- mov bx,0 ; Standardeingabegerät
- mov cx,MAX_STRING ; Maximale Anzahl an Zeichen
- mov dx,OFFSET StringUmzudrehen
- ; String hier speichern
- int 21h ; String lesen
- and ax,ax ; Zeichen gelesen?
- jz Fertig ; Alles klar
- mov cx,ax ; Stringlänge in Zähler speichern
- push cx ; Stringlänge abspeichern
- mov bx,OFFSET StringUmzudrehen
- mov si,OFFSET UmgedrehterString
- add si,cx ; Zeiger auf das Stringende
- dec si ; des umgedrehten Strings
- Umdrehen:
- mov al,[bx] ; Zeichen holen
- mov [si],al ; Zeichen umgekehrt abspeichern
- inc bx ; Zeiger zum nächsten Zeichen
- dec si ; Zeiger zum vorherigen Zeichen
- loop Umdrehen ; Nächstes Zeichen, falls vorhanden
- pop cx ; Stringlänge zurückholen
- mov ah,40h ; DOS über Handle schreiben
- mov bx,1 ; Standardausgabegerät
- mov dx,OFFSET UmgedrehterString
- ; Zeiger auf den umgedrehten String
- int 21h ; String ausgeben
- Fertig:
- mov ah,4Ch ; DOS-Funktion Programm beenden
- int 21h ; Programm beenden
- END
-