(This tutorial was originally written in 2004 and featured in http://asm.inightmare.org/)
This tutorial covers basic file Input and Output in DOS.
The first thing you can do is create a file:
mov ah, 3Ch ; DOS create file
mov cx, 0 ; attribute
mov dx, filename ; filename in ASCIIZ
int 21h
filename db "smth.txt",0
Well that’s pretty simple. Carry flag is set if error has occured. Now if we have file, we of course want to open it:
mov ah, 0x3Dh
mov al, oattr ; open attribute: 0 - read-only, 1 - write-only, 2 -read&write
mov dx, filename ; ASCIIZ filename to open
int 21h
If file exists, it’s handle is returned in AX, ff file doesn’t exist Carry Flag is set. Now we can read from our file:
mov ah, 0x3F
mov bx, handle ; handle we get when opening a file
mov cx, num ; number of bytes to read
mov dx, data_ptr ; were to put read data
int 21h
If read is successful AX contains number of bytes red, if reading failed as always Carry Flag is set. Now writing:
mov ah, 0x40
mov bx, handle ; file handle
mov cx, size ; num of bytes to write
mov dx, data ; data to write
int 21h
If write is successful CF is clear and AX contains number of bytes written, else CF is set and AX contains an error code. After we did what we want, we can close the file:
mov ah, 0x3E
mov bx, handle ; file handle
int 21h
And deleting files for the dessert:
mov ah, 41h
mov dx, filename ; ASCIIZ filename to delete
int 21h
filename db "smth.txt", 0
Those are the basics you need to know. Good luck!