Sunteți pe pagina 1din 8

Funcii ale INT 21H

Read Keyboard and Echo ( Function 01H)


Apelare:
AH = 01H
Returneaz:
AH Tipul caracterului
Comentarii:
Funcia 01H ateapt citirea unui caracter din intrarea standard, apoi emite ecoul
caracterului spre ieirea standard i-l returneaz i n AL.
Definiia macro:
read_kbd_and_echo

macro
mov ah,01
mov 21H
endm

Display Character (Function 02H)


Apelare:
AH = 02H
DL Codul caracterului ce urmeaz a fi afiat.
Returneaz:
Nimic
Comentarii:
Funcia 02H trimite caracterul din DL spre ieirea standard.
Definiia macro:
display_char

macro character
mov dl,character
mov ah,02H
int 21H
endm

Display String (Function 09H)


Apelare:
AH = 09H
DS:DX Indicator spre irul de afiat
Returneaz:
Nimic
Comentarii:
Funcia 09H trimite ieirii standard un ir care se termin cu $ (Semnul $ nu se
afieaz).
Registrul DX trebuie s conin deplasarea (de la adresa de segment din DS) a irului.
1

Definiia macro:
display_st

macro string
mov dx, offset string
mov ah,09H
int 21H
endm

Get Current Directory (Function 47H)


Apelare:
AH = 47H
DS:SI Indicator spre o zon de memorie de 64 octei.
DL Numrul de disc (0 = implicit , 1 = A , etc.)
Returnez:
Carry set:
AX
15 = Numr de disc invalid
Carry not set:
Fr eroare
Comentarii:
Funcia 47H returneaz numele cii directorului curent de pe un disc specificat, DL
trebuie s conin un numr de disc. SI trebuie s con in deplasarea (de la adresa de segment
din DS) la o zon de memorie de 64 de octei.
DOS-ul plaseaz un ir ASCIZ n zona de memorie, care const din calea (care
pornete din directorul rdcin) directorului curent pentru discul specificat n DL. irul nu
ncepe cu liniu nclinat stnga i nu include litera de disc.
Dac exist o eroare, flag-ul carry (CF) este setat i un cod de eroare este returnat n
registrul AX.
Definiia macro:
get_dir

macro drive,buffer
mov dl,drive
mov si,offset buffer
mov ah,47H
int 21H
endm

Create Directory (Function 39H)


Apelare:
AH=39H
DS:DX Indicatorul de cale
Returneaz:
Carry set:
AX
2 = Fiier negsit
3 = Cale negsit
5 = Acces interzis
2

Carry not set:


Fr eroare
Comentarii:
Funcia 39H creaz un nou subdirector. DX trebuie s conin deplasarea (de la adresa
de segment din DS) unui ir ASCIZ care specific calea noului subdirector.
Dac exist o eroare, carry flag (CF) este setat i codul de eroare este returnat n AX.
Definiia macro:
make_dir

macro path
mov dx,offset path
mov ah,39H
int 21H
endm

Change Current Directory (Function 3BH)


Apelare:
AH = 3BH
DS:DX Indicatorul de cale
Returneaz:
Carry set:
AX
2 = Fiier negsit
3 = Cale negsit
Carry not set:
Fr eroare
Comentarii:
Funcia 3BH schimb directorul curent. DX trebuie s con in deplasarea (de la
adresa de segment din DS) la un ir ASCIZ care specific calea spre noul director curent.
irul directorului este limitat la 64 de caractere.
Dac exist o eroare carry flag (CF) este setat i codul erorii va fi returnat n AX.
Definiia macro:
change_dir

macro path
mov dx,offset path
mov ah,3BH
int 21H
endm

Remove Directory (Function 3AH)


Apelare:
AH = 3AH
DS:DX Indicatorul de cale

Returneaz:
Carry set:
AX
2 = Fiier negsit
3 = Cale negsit
5 = Acces interzis
16 = Director curent
Carry not set:
Fr eroare
Comentarii:
Funcia 3AH terge un subdirector. DX trebuie s conin deplasarea (de la adresa de
segment din DS) a unui ir ASCIZ care specific calea subdirectorului pe care dori i s-l
tergei. Subdirectorul trebuie s nu conin nici un fiier. Nu pute i terge subdirectorul
curent.
Dac exist o eroare carry flag este setat i codul de eroare va fi returnat n AX.
Definiia macro:
rem_dir

macro path
mov dx,offset path
mov ah,3AH
int 21H
endm

Create New File (Function 5BH)


Apelare:
AH = 5BH
CX Atribute
DS:DX Indicatorul de cale
Returneaz:
Carry set:
AX
2 = Fiier negsit
3 = Cale negsit
4 = Prea multe fiiere deschise
5 = Acces interzis
80 = Fiierul exist deja
Carry not set:
AX Handle (O nregistrare ataat de ctre sistemul de operare fiierului)
Comentarii:
Funcia 5BH creaz un fiier nou. DX trebuie s conin deplasarea (de la adresa de
segment din DS) a unui ir ASCIZ care specific calea. CX conine atributele ce trebuie
asignate fiierului.
Dac nu exist un alt fiier cu acelai nume, DOS creaz fiierul, l deschide n modul
compatibilitate, i returneaz handel-ul fiierului n AX.
Acest apel de funcie nu reuete dac fiierul specificat exist deja.
Dac apare o eroare, carry flag este setat i un cod de eroare se returneaz n AX.
4

Definiia macro:
create_new macro pathname, attrib
mov cx,attrib
mov dx,offset pathname
mov ah,5BH
int 21H
endm

Write Handle (Function 40H)


Apelare:
AH = 40H
BX Handle
CX Octeii de scris
DS:DX Idicator spre buffer
Returneaz:
Carry set:
AX
5 = Acces interzis
6 = Handel invalid
Carry not set:
AX
Octeii scrii
Comentarii:
Funcia 40H scrie ntr-un fiier sau sau pe un dispozitiv asociat cu handle-ul
specificat. BX trebuie s conin handle-ul. CX trebuie s conin numrul de octei de scris.
DX trebuie s conin deplasarea (de la adresa de segment din DS) a datelor de scris.
Dac CX este zero, fiierul va fi trunchiat la poziia curent a indicatorului de fi ier.
DOS-ul nu va executa scrierea dac handle-ul este read-only.
Dac nu exist eroare, AX va returna numrul de octei scrii. Asigurai-v c ai
verificat AX dup ce ai realizat o scriere. Dac valoarea este mai mic dect numrul din CX
dup ce s-a realizat apelul, acesta indic prezena unei erori, chiar dac carry flag nu este
setat. Dac AX conine 0, i inta este un fiier de pe disc, nseamn c discul este plin.
Dac apare o eroare, carry flag este setat i un cod de eroare se returneaz n AX.
Definiia macro:
write_handle

macro handle, buffer, bytes


mov bx, handle
mov dx, offset buffer
mov cx, bytes
mov ah,40H
int 21H
endm

Open Handle (Function 3DH)


Apelare:
AH = 3DH
AL Codul de acces
DS:DX Idicatorul spre numele cii
Returneaz:
Carry set:
AX
2 = Fiier negsit
3 = Cale negsit
4 = Prea multe fiiere deschise
5 = Acces interzis
12 = Acces invalid
Carry not set:
Fr eroare
Comentarii:
Funcia 3DH deschide orice fiier, inclusiv fiiere de sistem sau ascunse, pentru
introducere sau extragere de date. DX conine deplasarea (de la adresa de segment din DS) a
unui ir ASCIZ care specific numele cii fiierului ce urmeaz a fi deschis. AL conine un
cod care specific cum va fi fiierul deschis.
Dac nu exist erori, AX returneaz handle-ul fiierului. DOS seteaz indicatorul
read/write pe primul octet al fiierului.
Controlul accesului la fiier:
Valoarea din AL se compune din trei pri care specific dac fiierul va fi deschis
pentru citire, scriere, sau ambele (codul de acces); ce fel de acces alte procese au la fiier
(modul partajabil); i dac un proces fiu motenete fiierul (bit de motenire).
BIT
7

Cod de acces
Mod de partajare
Bit de motenire
Bitul de motenire
Bitul cel mai semnificativ (bit 7) specific dac fiierul este motenit de un proces fiu
creat cu funcia 4BH. Dac acest bit este 0, procesul fiu motenete fiierul; dac bitul este 1
nu l motenete.
Modul de partajare
Biii modului de partajare (biii 4-6) specific ce fel de acces, dac exist unul, au alte
procese la fiierul deschis.
Codul de acces
6

Codul de acces (biii 0-3) specific cum va fi utilizat fiierul.


Dac exist o eroare carry flag (CF) este setat iar codul de eroare este returnat in AX.
Definiia macro:
Open_handle
mov
mov
mov
int
endm

macro path, access


dx, offset path
al, acces
ah, 3DH
21H

Close Handle (Function 3EH)


Apelare:
AH = 3EH
BX Handle
Returneaz:
Carry set:
AX
5 = Handle invalid
Carry not set:
Fr eroare
Comentarii:
Funcia 3EH nchide un fiier deschis cu funcia 3DH ( Open Handle) sau 3CH
(Create Handle). BX trebuie s conin handle-ul fiierului deschis pe care dori i s-l
nchidei.
Dac nu exist eroare, DOS-ul va nchide fiierul i va cura toate buffere-le interne.
Dac exist o eroare bitul Carry flag (CF) va fi setat, iar codul de erorii va fi returnat n AX.
Definiia macro:
close_handle

macro handle
mov bx, handle
mov ah, 3EH
int 21H
endm

Read Handle (Function 3FH)


Apelare:
AH = 3FH
BX Handle
CX Octeii de citit
DS:DX Indicator spre buffer
Returneaz:
Carry set:
AX
5 = Acces interzis
6 = Handle invalid
Carry not set:
7

AX Octeii citii
Comentarii:
Funcia 3FH citete din fiierul sau dispozitivul asociat cu handle-ul specificat. BX
trebuie s conin acest handle. CX trebuie s conin numrul de octe i care trebuie citi i.
DX trebuie s conin deplasarea (de la adresa de segment aflat n DS) a buffer-ului.
Dac nu exist eroare AX returneaz numrul de octei citi i; dac se ncearc citirea
ncepnd cu sfritul fiierului, AX va returna valoarea 0. Numrul de octei specificat n CX
nu este n mod necesar transferat buffer-ului; dac utilizai, spre exemplu, acest apel pentru a
citi de la tastatur se va citi numai pn la primul carriage-return.
Dac exist eroare bitul carry flag (CF) este setat, iar codul erorii se va returna n AX.
Definiia macro:
read_handle

macro handle, buffer, bytes


mov bx, handle
mov dx, offset buffer
mov ah, 3FH
int 21H
endm

End Process (Function 4CH)


Apelare:
AH = 4CH
AL Cod de returnat
Returneaz:
Nimic
Comentarii:
Funcia 4CH ncheie un proces i produce ntorcerea la promptul de DOS. AL va
conine un cod de retur care poate fi extras de c tre procesul printe. DOS-ul va nchide toate
handle-urile deschise, va nchide procesul curent i va returna controlul proceului apelant.

S-ar putea să vă placă și