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 Text1ZielpufferDBLaengeDUP(?),"-Text1 Zielpuffer DB Laenge DUP (?),""
    .CODE

    Start:
    mov ax,@data
    mov ds,ax

    mov 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 Schleife

    mov ah,3Eh
    int 21h ;Datei schließen

    mov 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 Text1ZielpufferDBLaengeDUP(?),"-Text1 Zielpuffer DB Laenge DUP (?),""
    .CODE

    Start:
    mov ax,@data
    mov ds,ax

    mov 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ßen

    mov ah,4Ch
    int 21h ;Programm beenden!
    END Start


Anmelden zum Antworten