📄 fileo.asm
字号:
TITLE <F i l e O p e r a t i o n>
Assume CS:Main
Data Segment
question1 DB 'Input the first file name:$'
question2 DB 'Input the second file name:$'
fname1 DB 50,?,50 dup(0)
fname2 DB 50,?,50 dup(0)
tfname DB 0,0,'temp.tmp',0
buf DB ?
hashtable DB 256 dup(0)
eol DB 13,10,'$'
Data Ends
Stack Segment STACK
db 300 dup(0)
Stack Ends
PrintString Macro Resource ;DS被设置成Data
Mov DX,offset Resource
Mov AH,9
INT 21H
EndM
GetFileName Macro FName
Mov DX, offset FName
Mov AH,0AH
INT 21H
Sub BX,BX
Mov BL,byte ptr DS:[BX + offset FName + 1]
Mov byte ptr DS:[BX+offset FName +2],0
EndM
CreateFile Macro FName
Mov DX, offset FName+2
Mov CX, 0
Mov AH, 3CH
INT 21H
EndM
OpenFile Macro FName, Mode ;AX will be Handle on success
Mov AH,3DH
Mov AL,Mode
Mov DX,offset FName+2
INT 21H
EndM
CloseFile Macro HandleReg
Mov BX,HandleReg
Mov AH,3EH
INT 21H
EndM
ReadOneByte Macro HandleReg ;AX will be 0 on failiar
Mov DX, offset buf
Mov BX, HandleReg
Mov CX, 1
Mov AH,3FH
INT 21H
EndM
WriteOneByte Macro HandleReg
Mov DX, offset buf
Mov BX, HandleReg
Mov CX, 1
Mov AH,40H
INT 21H
EndM
RenameFile Macro RenameTo,OrgName
Mov DX, offset OrgName+2
Mov AX, DS
Mov ES, AX
Mov DI, offset RenameTo+2
Mov AH, 56H
INT 21H
EndM
DeleteFile Macro FName
Mov DX, offset FName+2
Mov AH, 41H
INT 21H
EndM
Main Segment
start:
Mov AX,Data
Mov DS,AX
Call Input
Call ProFile1
Call ProFile2
Mov AX, 4C00H
INT 21H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ProFile1 Proc
OpenFile fname1,10100000B
Mov DI,AX
read1: ReadOneByte DI
Cmp AX,0
Jz closeFile1
Mov BX,offset buf
Sub AL,AL
Mov AL,DS:[BX]
Mov BX,AX
Mov byte ptr DS:[BX+hashtable],1
Jmp read1
closeFile1:
CloseFile DI
ret
ProFile1 EndP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ProFile2 Proc
OpenFile fname2,10100000B
Mov DI,AX
;OpenFile tfname,10100001B
CreateFile tfname
Mov SI,AX
read2: ReadOneByte DI
Cmp AX,0
Jz closeFile2
Mov BX,offset buf
Sub AH,AH
Mov AL,byte ptr DS:[BX]
Mov BX,AX
Sub AH,AH
Mov AL,byte ptr DS:[BX+hashtable]
Cmp AX,0
Jnz read2
WriteOneByte SI
Jmp read2
closeFile2:
CloseFile DI
CloseFile SI
DeleteFile fname2
RenameFile fname2,tfname
ret
ProFile2 EndP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Input Proc
PrintString question1
GetFileName fname1
PrintString eol
PrintString question2
GetFileName fname2
PrintString eol
ret
Input EndP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Main Ends
End start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -