64 lines
1.3 KiB
NASM
64 lines
1.3 KiB
NASM
; 实验八-6: 文件重命名程序
|
|
; 功能: 使用DOS功能号56H重命名文件
|
|
; 说明: 可用于移动文件到不同目录
|
|
|
|
DATAS SEGMENT
|
|
OLD_NAME DB 'oldname.txt', 0 ; 原文件名
|
|
NEW_NAME DB 'newname.txt', 0 ; 新文件名
|
|
ERR_MSG DB 'Rename error!', 0DH, 0AH, '$'
|
|
OK_MSG DB 'File renamed successfully!', 0DH, 0AH, '$'
|
|
EXIST_MSG DB 'Target file already exists!', 0DH, 0AH, '$'
|
|
DATAS ENDS
|
|
|
|
STACKS SEGMENT
|
|
DB 64 DUP(?)
|
|
STACKS ENDS
|
|
|
|
CODES SEGMENT
|
|
ASSUME CS:CODES, DS:DATAS, SS:STACKS
|
|
|
|
START:
|
|
MOV AX, DATAS
|
|
MOV DS, AX
|
|
|
|
; 重命名文件 (功能号56H)
|
|
; AH = 56H (重命名文件功能号)
|
|
; DS:DX = 原文件名地址
|
|
; ES:DI = 新文件名地址
|
|
LEA DX, OLD_NAME
|
|
LEA DI, NEW_NAME
|
|
MOV AH, 56H
|
|
INT 21H
|
|
|
|
; 检查重命名是否成功
|
|
JNC RENAME_SUCCESS
|
|
|
|
; 检查错误类型
|
|
; AX = 02H 表示文件未找到
|
|
; AX = 05H 表示访问被拒绝
|
|
; AX = 11H 表示试图重命名为已存在的文件
|
|
CMP AX, 11H
|
|
JE FILE_EXISTS
|
|
|
|
LEA DX, ERR_MSG
|
|
MOV AH, 09H
|
|
INT 21H
|
|
JMP PROGRAM_END
|
|
|
|
FILE_EXISTS:
|
|
LEA DX, EXIST_MSG
|
|
MOV AH, 09H
|
|
INT 21H
|
|
JMP PROGRAM_END
|
|
|
|
RENAME_SUCCESS:
|
|
LEA DX, OK_MSG
|
|
MOV AH, 09H
|
|
INT 21H
|
|
|
|
PROGRAM_END:
|
|
MOV AH, 4CH
|
|
INT 21H
|
|
|
|
CODES ENDS
|
|
END START |