A fájlkezelés típus nélküli, a fájlműveletek a DOS funkciók meghívásával hajthatók
végre.
Þ Fájl megnyitása
Þ Fájlból olvasás
Þ Fájl lezárása
Þ Fájl létrehozása
Þ Fájlba írás
Þ Fájlban pozícionálás
ORG 100H
MOV AH,3DH ; fajl megnyitasa
MOV AL,0 ; a nyitas modja: 0 => olvasasra nyitas
MOV DX,FajlNev ; melyik fajl kell megnyitni
INT 21H ; a DOS megprobalja megnyitni a fajlt
JNC FajlOke ; ha sikerult, akkor ugras tovabb
MOV AH,9 ; sztring kiiras DOS funkcioval
MOV DX,Hiba1 ; a hiba uzenet cimkeje
INT 21H ; megjelenik a hibauzenet
MOV AX,4C01H ; kilepes 1-es hibakoddal
INT 21H
FajlOke:
MOV BX,AX ; a fajlt azonosito fajlszam attoltese BX-be
MOV AH,3FH ; a DOS betoltes funkcioja
MOV DX,Puffer ; a memoriacim, ahova tolteni fogunk
MOV CX,32768 ; a toltendo bajtok szama, ennel rovidebb
INT 21H ; fajlok teljesen be fognak toltodni
MOV AH,3EH ; fajl lezarasa
INT 21H
MOV AX,4C00H ; normal kilepes
INT 21H
FajlNev DB 'C.BAT',0 ; akar teljes fajlspecifikacio, amit 0 zar le
Hiba1 DB 'Nincs ilyen fajl',10,13,'$' ; DOS sztring $ jellel zarul!
Puffer RESB 32768 ; 32768 bajt lefoglalasa
A program lefutása után a program visszaadja a vezérlést, illetve, ha nem létezik a megfelelő állomány (C.BAT), akkor hibaüzenetet kapunk.
Ha nem akarjuk a puffert a COM fájlban lefoglalni, akkor a puffer elé írjuk be:
section .bss
Ennek a szekciónak a fordító csak a címkéit számítja ki, fizikailag nem kerül bele a fájlba a kód.
ORG 100H
MOV AH,3DH ; fajl megnyitasa
MOV AL,0 ; a nyitas modja: 0 => olvasasra nyitas
MOV DX,FajlNev ; melyik fajl kell megnyitni
INT 21H ; a DOS megprobalja megnyitni a fajlt
JNC FajlOke ; ha sikerult, akkor ugras tovabb
MOV AH,9 ; sztring kiiras DOS funkcioval
MOV DX,Hiba1 ; a hiba uzenet cimkeje
INT 21H ; megejelenik a hibauzenet
MOV AX,4C01H ; kilepes 1-es hibakoddal
INT 21H
FajlOke:
MOV BX,AX ; a fajlt azonosito fajlszam attoltese BX-be
MOV AH,3FH ; a DOS betoltes funkcioja
MOV DX,Puffer ; a memoriacim, ahova tolteni fogunk
MOV CX,32768 ; a toltendo bajtok szama, ennel rovidebb
INT 21H ; fajlok teljesen be fognak toltodni
PUSH AX ; elmentjük a betöltött byte-ok számát
MOV AH,3EH ; fajl lezarasa
INT 21H
POP CX ; a cklusszámlálóba a byte-ok száma kerül
MOV SI,Puffer ; SI az aktuális karakterre mutat
Kiir_ciklus:
PUSH CX
MOV AH,2 ; DOS karakter-kiiró funkció lesz
MOV DL,[SI] ; a kiirandó karakter
INC SI ; következő karakter
INT 21H ; karakterkiiras híváas
POP CX
LOOP Kiir_ciklus
MOV AX,4C00H ; normal kilepes
INT 21H
FajlNev DB 'C:\VECA\ASM\ASM\EXAMPLES\VECA3.ASM ',0 ; akar teljes fajlspecifikacio, amit 0 zar le
Hiba1 DB 'Nincs ilyen fajl',10,13,'$' ; DOS sztring $ jellel zarul!
section .bss
Puffer RESB 32768 ; 32768 bajt lefoglalasa
Írjunk egy olyan másoló programot, ami átmásol egy adott fájlt egy adott néven!