⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qq.asm

📁 磁盘文件管理系统: 能浏览、删除、复制文件 我用三个子程序open,copy,delete分别实现了对磁盘文件的浏览
💻 ASM
字号:


data segment

;全局变量
filer    db 'file road:$'		;文件路径
name1    db 32,?,32 dup(0)		;路径变量1
name2    db 32,?,32 dup(0)		;路径变量2
handle1  dw ?				;文件代号变量1
handle2  dw ?				;文件代号变量2
ioarea   db 512 dup('$')		;缓存
ioarea2  db '$'

;界面变量
str7  db '********************************************************************$'
str8  db 'Attention:$'
str9  db '1. open file$'
str10 db '2. copy file$'
str11 db '3. delete file$'
str6  db 'q. exit$'

;选择变量
cherror  db 'input error$'
chn      db ?

;打开变量
oerror1  db 'can not open file $'
oerror2  db 'can not read file $'
ook1     db 'the file contain:$'

;复制变量
cerror1  db 'can not read file1 $'
cerror2  db 'can not read file2 $'
cerror3  db 'can not wite file $'
copyto   db 'copy to:$'
cok      db 'copy finish$'

;删除变量
dok      db 'delete flish$'
dwrong   db 'can not delete the file$' 

data ends


;主程序
code segment
	main proc far
		
		assume cs:code,ds:data
	start:
		push ds
		sub ax,ax
		push ax
		mov ax,data
		mov ds,ax

		call jiemian            		;调用界面

		ret
		
	main endp


;界面子程序
jiemian proc near
	
		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h
		
	
		lea dx,str7
		mov ah,09h
		int 21h
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h
		
		lea dx,str8
		mov ah,09h
		int 21h
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

		lea dx,str9
		mov ah,09h
		int 21h
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

		lea dx,str10
		mov ah,09h
		int 21h
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h
		
		lea dx,str11
		mov ah,09h
		int 21h
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h	
	
		lea dx,str6
		mov ah,09h
		int 21h
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h	
	
		lea dx,str7
		mov ah,09h
		int 21h
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h
		
				
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

		mov si,1			   	 	;清空路径变量
		mov bl,0
	lp:	mov name1[si],bl
		mov name2[si],bl
		inc si
		cmp si,32
		jne lp

		mov si,0				 	;清空缓存变量
		mov bl,'$'
	lp1:	mov ioarea[si],bl
		inc si
		cmp si,512
		jne lp1

                call  chose				 	;调用选择程序
			
	ret
	
jiemian endp



;选择子程序
chose proc near
	
lop:
                 
                lea dx,chn
		mov ah,1
		int 21h
        
                cmp  al,'1'
                jz   c1 
                cmp  al,'2'
                jz   c2 
                cmp  al,'3'
                jz   c3 
                cmp  al,'q'
                jne   c6

		mov ah,4ch
		int 21h
  
c6:             cmp  al,' '
                jne  c5

                jmp  lop
               
                

c1:             
                call open
                jmp lop

c2:
                call copy
                jmp lop

c3:
                call delete
                jmp lop

c5:
		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

                lea dx,cherror
                mov ah,09h
                int 21h

		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h
                 
                jmp lop

c4:             ret
	
chose endp



;打开文件子程序
open proc near

           	lea dx,filer					;输入提示
       		mov ah,09h
       		int 21h

		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

		lea dx,name1					;输入路径
		mov ah,0ah
		int 21h

		mov bl,name1[1]
		mov al,'$'
		mov name1[bx+2],al

		mov ah,3dh
                mov al,00
		lea dx,name1[2]
		int 21h
		jc  owrong1
		mov handle1,ax					;获取文件代号

        	mov ah,3fh
        	lea dx,ioarea
		mov bx,handle1					;读入缓存
        	mov al,00
		mov cx,512
		int 21h
        	jc  owrong2

		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

                lea dx,ook1
		mov ah,09h
		int 21h

		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

                lea dx,ioarea					;显示文件内容
		mov ah,09h
		int 21h
                jmp oover


owrong1:

		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h   

                lea dx,oerror1					;打开错误提示
		mov ah,09h
		int 21h

		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

                jmp oover


owrong2:
		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

                lea dx,oerror2					;读入错误提示
		mov ah,09h
		int 21h 


              	mov ah,3eh
              	mov bx,handle1
              	int 21h      



oover:        
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

                call jiemian					;结束调回界面
		ret
		
open endp



;复制文件子程序
copy proc near

       		lea dx,filer
       		 mov ah,09h
        	int 21h

        	mov dl,0ah
        	mov ah,02h 
        	int 21h
        	mov dl,0dh
        	mov ah,02h
        	int 21h

		lea dx,name1
		mov ah,0ah
		int 21h

		mov bl,name1[1]
		mov al,'$'
		mov name1[bx+2],al

		mov ah,3dh
        	mov al,00
		lea dx,name1[2]
		int 21h
		jc  cwrong1
		mov handle1,ax					;获取文件代号1

        	mov dl,0ah
        	mov ah,02h 
        	int 21h
        	mov dl,0dh
        	mov ah,02h
        	int 21h

        	lea dx,copyto
        	mov ah,09h
        	int 21h

		mov dl,0ah
		mov ah,02h 
		int 21h
		mov dl,0dh
        	mov ah,02h
		int 21h

		lea dx,name2
		mov ah,0ah
		int 21h

		mov bl,name2[1]
		mov al,'$'
		mov name2[bx+2],al


 		mov ah,3dh
        	mov al,01
		lea dx,name2[2]
		int 21h
		jc  cwrong2
		mov handle2,ax					;获取文件代号2


        	mov ah,3fh
        	lea dx,ioarea
		mov bx,handle1
        	mov al,00
		mov cx,512
		int 21h

        	mov ah,40h					;写入文件
        	mov bx,handle2
        	mov cx,512
        	lea dx,ioarea
        	int 21h
        	jc cwrong2   

        	mov ah,3eh					;关闭文件
        	mov bx,handle1
        	int 21h 
        	mov ah,3eh
        	mov bx,handle2
        	int 21h

        	jmp cok1      

cwrong1:
        	mov dl,0ah
        	mov ah,02h 
        	int 21h
        	mov dl,0dh
        	mov ah,02h
        	int 21h

                lea dx,cerror1
		mov ah,09h
		int 21h

                jmp cover  
cwrong2:
        	mov dl,0ah
        	mov ah,02h 
        	int 21h
        	mov dl,0dh
        	mov ah,02h
        	int 21h

                lea dx,cerror2
		mov ah,09h
		int 21h

                jmp cover  

cwrong3:

        	mov dl,0ah
        	mov ah,02h 
        	int 21h
        	mov dl,0dh
        	mov ah,02h
        	int 21h

                lea dx,cerror3
		mov ah,09h
		int 21h 



cok1:		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

		lea dx,cok
                mov ah,9h
                int 21h

		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

cover:          call jiemian
           	ret
		
copy endp



;删除文件子程序
delete proc near

        	lea dx,filer
        	mov ah,09h
        	int 21h

        	mov dl,0ah
        	mov ah,02h 
        	int 21h
        	mov dl,0dh
        	mov ah,02h
        	int 21h

		lea dx,name1
		mov ah,0ah
		int 21h

		mov bl,name1[1]
		mov al,'$'
		mov name1[bx+2],al

		mov ah,41h					;用41H删除文件
	        lea dx,name1[2]
                int 21h
                cmp ax,00
                jne dwrong1

                mov dl,0ah
                mov ah,02h 
                int 21h
                mov dl,0dh
                mov ah,02h
                int 21h 

                lea dx,dok
                mov ah,09h
                int 21h
                jmp dover 

dwrong1:   
       
                mov dl,0ah
                mov ah,02h 
                int 21h
                mov dl,0dh
                mov ah,02h
                int 21h  

                lea dx,dwrong
                mov ah,09h
                int 21h 

dover:
		mov dl,0ah
		mov ah,02h
		int 21h
		mov dl,0dh
		mov ah,02h
		int 21h

                call jiemian
           	ret
		
delete endp
	

code ends
end start



























		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -