data segment
menu db '*1.Create file*',0dh,0ah
db '*2.Write to file*',0dh,0ah
db '*3.Read file*',0dh,0ah
db '*4.Quit*',0dh,0ah,'$'
pathname db'D:\as.txt',0
handle dw ?
buffer1 db 60,0,60 dup(?)
buffer2 db 60,0,60 dup(?)
huanhang db ' ',0dh,0ah,'$'
chose db 0dh,0ah,'Please enter the digital from 1-4!',0dh,0ah,'$'
entery db 0dh,0ah,'Enter what you want to write to the file!(The length of the strings is under 60)',0dh,0ah,'$'
str_ok1 db 0dh,0ah,'Create file successfully!',0dh,0ah,'$'
str_ok2 db 0dh,0ah,'Wtite to file successfully!',0dh,0ah,'$'
str_ok3 db 0dh,0ah,'Read from file successfully!',0dh,0ah,'$'
str_error1 db 'Create file error!$'
str_error2 db 'Open file error!$'
str_error3 db 'Write to file error!$'
str_error4 db 'Read file error!$'
str_error5 db 'Exit from file error!$'
data ends
code segment
assume cs:code,ds:data
main proc far
start:
mov ax,data
mov ds,ax
mov ax,0600h
call me
call choice
ret
main endp
me proc near
mov ah,9
lea dx,menu
int 21h
me endp
choice proc near
mov ah,1
int 21h
cmp al,31h
je next1
cmp al,32h
je next2
cmp al,33h
je next3
cmp al,34h
je next4
jmp back
next1:
call creath
next2:
call entry
next3:
mov ah,9
lea dx,huanhang
int 21h
call read
next4:
mov ax,4c00h
int 21h
back:
mov ah,9
lea dx,chose
int 21h
call me
ret
choice endp
creath proc near
mov ah,3ch
lea dx,pathname
mov cx,0
int 21h
jc error1
mov handle,ax
jmp exit
error1:
mov ah,9
lea dx,str_error1
int 21h
jmp exit1
exit:
mov ah,9
lea dx,str_ok1
int 21h
exit1:
call choice
creath endp
entry proc near
mov ah,9
lea dx,entery
int 21h
lea dx,buffer1
mov ah,0ah
int 21h
sub ch,ch
mov cl,buffer1+1
add dx,2
call writh
ret
entry endp
writh proc near
mov ah,3dh
lea dx,pathname
mov al,1
int 21h
jc error2
mov handle,ax
mov ah,40h
lea dx,buffer1+2
mov bx,handle
mov cx,60
int 21h
jc error3
mov ah,3eh
mov bx,handle
int 21h
jc error4
jmp back1
error2:
mov ah,9
lea dx,str_error2
int 21h
jmp exit2
error3:
mov ah,9
lea dx,str_error4
int 21h
jmp exit2
error4:
mov ah,9
lea dx,str_error5
int 21h
jmp exit2
back1:
mov ah,9
lea dx,str_ok2
int 21h
exit2:
call choice
writh endp
read proc near
mov ah,3dh
lea dx,pathname
mov al,0
int 21h
jc error5
mov handle,ax
mov ah,3fh
lea dx,buffer2
mov bx,handle
mov cx,60
int 21h
jc error6
mov ah,9
lea dx,buffer2
int 21h
jc error6
mov ah,3eh
mov bx,handle
int 21h
jc error7
mov bx,ax
mov buffer1[bx],'$'
mov dx,offset buffer1
mov ah,09
int 21h
jmp back2
error5:
mov ah,9
lea dx,str_error2
int 21h
jmp exit3
error6:
mov ah,9
lea dx,str_error4
int 21h
jmp exit3
error7:
mov ah,9
lea dx,str_error5
int 21h
jmp exit3
back2:
mov ah,9
lea dx,str_ok3