Thursday, January 27, 2011

File operations

Share Orkut
print macro msg lea dx,msg mov ah,09h int 21h endm readfilename macro msg1,j1,l1 mov si,offset msg1 l1: mov ah,01 int 21h cmp al,0dh je j1 mov [si],al inc si jmp l1 j1: mov al,00 mov [si],al endm .model small .stack 100h .data menu db 10,13,'MENU',10,13,'1.Create ',
              10,13,'2.Display ',10,13,'3.Copy',10,13,'4.Move'
              ,10,13,'5.Delete',10,13,'6.Exit$' str1 db 10,13,'Enter ur choice: $' str2 db 10,13,'Enter filename $' msg1 db 10,13,'Enter data $' filename1 db 30 dup(0) filename2 db 30 dup(0) handle1 dw ? handle2 dw ? handle3 dw ? handle4 dw ? errr db 10,13,'Errror $' succ db 10,13,'Success$' invalid db 10,13,'Invalid Entry $' newline db 10,13,'$' file1 db 100 dup('$') errflag dw 0 .code main proc mov ax,@data mov ds,ax loop1: print menu print str1 mov ah,01h int 21h cmp al,31h jne case2 print str2 readfilename filename1,loop2,jump1 call clearall mov dx, offset filename1 call createfile jc err12 call fileopen jc err12 mov handle1, ax call readstring mov cx,ax mov bx,handle1 lea dx,file1 mov ah,40h int 21h jc err12 mov bx, handle1 call closefile print succ jmp loop1 err12: mov errflag,01 mov al,00 case2: cmp al,32h jne case3 ;read filename print str2 readfilename filename1,loop3,jump2 call clearall ;open file mov dx, offset filename1 call fileopen jc err12 mov handle1, ax mov bx,handle1 call readfile cmp errflag,1 je err12 mov bx, handle1 call closefile print succ up1: jmp loop1 case3: cmp al,33h jne case44 ;read filename print str2 readfilename filename1,loop4,jump3 call clearall ;open file mov dx, offset filename1 call fileopen jc err13 mov handle1, ax ;read filename print str2 readfilename filename2,loop5,jump4 ;truncate mov dx, offset filename2 call createfile jc err13 ;open file mov dx, offset filename2 call fileopen jc err13 mov handle2, ax call copyfile cmp errflag,1 je err13 mov bx, handle1 call closefile mov bx,handle2 call closefile print succ up2: jmp up1 case44: jmp case4 err13: mov errflag,01 mov al,00 case4: cmp al,34h jne case5 call clearall mov ax,ds mov es,ax ;read filename print str2 readfilename filename1,loop6,jump5 ;read filename print str2 readfilename filename2,loop7,jump6 mov ah,56h lea dx,filename1 lea di,filename2 int 21h jc error1 print succ jmp up2 case5: cmp al,35h jne case6 call clearall ;read filename print str2 readfilename filename1,loop8,jump7 lea dx,filename1 mov ah,41h int 21h jc error1 print succ jmp up2 case6: cmp al,36h je stop cmp errflag,01 je error1 print invalid jmp up2 error1: print errr mov errflag,00 jmp up2 stop: mov ah,4ch int 21h main endp readstring proc print msg1 mov dx,offset file1 mov bx,00h mov ah,3fh int 21h sub ax,02h ret readstring endp createfile proc mov cx, 0 mov ah, 3ch int 21h ret createfile endp fileopen proc mov al, 2 mov ah, 3dh int 21h ret fileopen endp readfile proc print newline repet: mov ah, 3fh lea dx, file1 mov cx, 100 int 21h jc errrr; if error mov si, ax mov file1[si], '$' mov ah, 09h int 21h ;print on screen cmp si, 100 je repet jmp jump22 errrr: mov errflag,1 jump22: ret readfile endp closefile proc mov ah, 3eh ;close file int 21h ret closefile endp copyfile proc mov bx,handle1 mov handle3,bx mov bx,handle2 mov handle4,bx repet1: mov bx,handle3 mov ah, 3fh lea dx, file1 mov cx, 100 int 21h jc errr1; if error mov handle3,bx mov si, ax mov cx,ax mov bx,handle4 lea dx,file1 mov ah,40h int 21h jc errr1 mov handle4,bx cmp si, 100 je repet1 jmp jump23 errr1: mov errflag,1 jump23: ret copyfile endp clearall proc xor ax,ax xor bx,bx xor cx,cx xor dx,dx ret clearall endp end

No comments:

Post a Comment