3 votes

L'ouverture d'une poignée de fichier dans DOSBox efface les données du fichier

Dans DOSBox 0.74, lorsque j'essaie d'ouvrir une poignée de fichier sur n'importe quel fichier en utilisant la fonction 3ch de int 21h, les données du fichier sont effacées et leur taille est définitivement réduite à 0 octet.

Les fichiers que j'ai testés se trouvaient tous dans le répertoire documents de Windows 10, qui est monté en tant que lecteur E dans DOSBox.

Voici le code à l'origine du problème. Il est censé ouvrir, puis fermer un handle de fichier. CF n'est jamais défini, donc pas de code d'erreur. Le gestionnaire de fichier dans AX est défini sur 5.

    mov ax, varData                            
    mov ds, ax               ;Load the variable segment into ds   
                             ;word variable handle is defined here
                             ;string fname is defined here                                         

    mov ah, 3ch              ;select open file handle function
    lea dx, fname            ;dx points to file's name ("TESTFILE")
    mov cl, 1                ;read only
    int 21h                  ;open the file handle
    mov handle, ax           ;copy handle into variable 

    mov ah, 3eh              ;close handle function
    mov bx, handle           ;closing previously opened file handle
    int 21h                  ;close handle

5voto

David Wohlferd Points 650

Par este :

ah = 0x3c correspond à "Créer un fichier". Vous voulez 0x3d (Ouvrir un fichier).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X