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

📄 fileo.asm

📁 创建两个txt文件
💻 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 + -