A spravne sa to robi tak ze funkcia nezasaghuje do nejakych globalnych premennych, ale vrati handle v ax, a do nejakych premennych si to das az po navrate fcie. A fcia co otvara subor len otvara subor, a necarbe po obrazovke.
Potom to bude napr. takto
FILE_OPEN PROC
push dx
mov ah,3dh ; DOS funkcion to open a file
xor al,al ; clearing al register
int 21h ; interrupt
pop dx
ret ; vraciam buf CF alebo handle v AX
ENDP
pozn: push dx a pop dx sa da dosiahnut aj tak, ze sa do deklaracie fcie napiseFILE_OPEN PROC uses DX
hlavny program (tu riesim ze co bude na obrazovke, a ne kdesi vo file open) napr.
FILE_PRINT PROC
CALL CLRSCR
lea dx,filename
CALL FILE_OPEN
jc ERROR3
mov handle, ax
...
P.S> v assembleri mozes principialne robit to iste co v C, parametre do funkcie posles bud v registri alebo v stacku, a navr. hodnotu v CF a (E)AX registri apod.T.j. neco ako v C:
if(handle=FileOpen("nazov")) RobNeco(handle) else error();
bude v asm:
lea dx, nazov_str
call FileOpen
jc error
call RobNeco ;v AX uz mam handle, to moze byt rovno parameter tej funkcie...
jmp exit