in datei schreiben (datei vorhanden;nicht vorhanden)
-
Hi!
Ich möchte einen String in eine Datei schreiben. Wenn die Datei nicht existiert, dann soll sie neu angelegt werden, wenn sie existiert, dann soll einfach in sie reingeschrieben werden.
Ich habe schon einen kleinen Code, aber der funktioniert leider nicht.
Kann mir jemand helfen? Bitte!Ciao GJ
Code:
.MODEL small
.Stack 100h
.Data
msgHello DB "loading....... $"
Filename DB "Test.txt",0
Text1 DB "Hallo!"
Laenge EQU "
.CODEStart:
mov ax,@data
mov ds,axmov dx,offset msgHello ;
mov ah,9 ; Ausgabe eines String
int 21h;mov ah,3Dh
;xor al,00h
;mov dx,OFFSET Filename
;int 21h ;Datei öffnen;xor ax,"2" ;eigentlich ne Feststellung ob sie geöffnet wurde oder nicht
;jmp Marke ; wenn ja soll gesprungen werden
mov ah,3Ch
xor cx,cx
mov dx,OFFSET Filename
int 21h ;Datei Erstellen;Marke:
mov bx,ax ;Handle nach BX
Schleife:
mov ah,40h
mov cx,Laenge
mov dx,OFFSET Text1
int 21h ;Daten schreiben
Loop Schleifemov ah,3Eh
int 21h ;Datei schließenmov ah,4Ch
int 21h ;Programm beenden!
END Start
-
Hi.
Jo, da stimmt was net...
.MODEL small
.Stack 100h
.Data
msgHello DB "loading....... $"
Filename DB "Test.txt",0
Text1 DB "Hallo!"
Laenge EQU "
.CODEStart:
mov ax,@data
mov ds,axmov dx,offset msgHello ;
mov ah,9 ; Ausgabe eines String
int 21h;mov ah,3Dh
;xor al,00h <-was sollte das denn deiner Meinung nach bewirken?
;Dann doch besser:
mov ax,3D02h ;ah=3D al=02 (read/write access)
mov dx,OFFSET Filename
int 21h ;Datei öffnen;xor ax,"2" ;eigentlich ne Feststellung ob sie geöffnet wurde oder nicht
;jmp Marke ; wenn ja soll gesprungen werden
;KA, was das bewirken sollte...:???:
;wenn ein Fehler beim Oeffnen der Datei auftritt, wird das CF gesetzt.
jnc Marke ;Wenn CF nicht gesetzt, ist die Datei offen.mov ah,3Ch
xor cx,cx
mov dx,OFFSET Filename
int 21h ;Datei Erstellen
;Hier wird ein Fehler auch uebers CF angezeigt.Marke:
mov bx,ax ;Handle nach BX
;Schleife:
mov ah,40h
mov cx,Laenge
mov dx,OFFSET Text1
int 21h ;Daten schreiben
;Loop Schleife <=Diese Schleife ist leicht ueberfluessig...
;um genau zu sein, endet das ganze in einer Endlosschleife, die solange
;fortgesetzt wird, bis die Datei >2GB wird.mov ah,3Eh
int 21h ;Datei schließenmov ah,4Ch
int 21h ;Programm beenden!
END Start