📄 qq.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 + -