📄 renf.asm
字号:
;**************************************************************************
;题目:文件的目录更名
;要求:该程序有1.目录更名 2.文件更名 3.系统退出。
;功能:在输入1,2,3后,完成相应的功能(如输入1后,系统要求输入原目录路径名,新目录路径名,然后更名)。
;应用:为目录及文件更名提供一个间接清晰的菜单式操作。
;提示:运用分支,循环,子程序等编程形式,运用键盘显示器,文件的中断调用,并注意asciiz串的运用。
;**************************************************************************
data segment
length1 db 63
db ?
asciiz1 db 64 dup(?)
length2 db 63
db ?
asciiz2 db 64 dup(?)
function db 'Please choose a function:',0dh,0ah
db '1.Rename folder 2.Rename file 3.Exit',0dh,0ah,'$'
oldname db 'The folder or file name(with path):$'
newname db 'The new name:(with path):$'
error db 'ERRER:error number:$'
table dw f1,f1,f3
data ends
code segment
assume cs:code,ds:data
main proc far
mov ax,data
mov ds,ax
mov es,ax
repeat: mov ah,9
mov dx,offset function
int 21h
mov ah,7
int 21h
sub al,31h
cmp al,2
ja repeat
cbw
mov bx,ax
shl bx,1
jmp table[bx]
f1: mov ah,9 ;输入旧文件名
mov dx,offset oldname
int 21h
mov ah,0ah
mov dx,offset length1
int 21h
mov bl,length1+1
mov bh,0
mov asciiz1[bx],0
mov ah,2 ;输出回车换行
mov dl,0dh
int 21h
mov dl,0ah
int 21h
mov ah,9 ;输入新文件名
mov dx,offset newname
int 21h
mov ah,0ah
mov dx,offset length2
int 21h
mov bl,length2+1
mov bh,0
mov asciiz2[bx],0
mov ah,2 ;输出回车换行
mov dl,0dh
int 21h
mov dl,0ah
int 21h
mov ah,56h
mov dx,offset asciiz1
mov di,offset asciiz2
int 21h
jnc repeat
push ax
mov ah,9
mov dx,offset error
int 21h
pop ax
call binidec
mov ah,2 ;输出回车换行
mov dl,0dh
int 21h
mov dl,0ah
int 21h
jmp repeat
f3: mov ax,4c00h
int 21h
main endp
;---------------------------------------------------------------
;将ax中的数转换为10进制数输出。
;---------------------------------------------------------------
binidec proc near
push cx
push dx
push ax
push bx
pushf
;MAIN PART OF THE PROGRAM GOES HERE:
mov ch,0 ;CH为0则AX为正数,CH为1则Ax为负数
cmp ax,0
jge normal
neg ax
mov ch,1
normal: mov cl,0 ;计数器置零
mov bx,10
binidec_next:
mov dx,0
div bx
push dx
inc cl
cmp ax,0
jne binidec_next
cmp ch,1
jne print
mov ah,2
mov dl,'-'
int 21h
print: pop ax
mov dl,al
add dl,30h
mov ah,2
int 21h
dec cl
jne print
popf
pop bx
pop ax
pop dx
pop cx
ret
binidec endp
code ends
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -