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

📄 renf.asm

📁 文件目录更名 1、摘要:使用INT 21的56H子功能进行文件和文件夹改名 2、参考资料: IBM-PC汇编语言程序设计(第二版) (汇编语言)
💻 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 + -