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

📄 file.asm

📁 这是一个关于文件操作的汇编代码
💻 ASM
字号:
stack segment para stack
	dw 100h dup(?)
stack ends

data segment para
filename	db	'f1.dat',0
handle	dw	?
rbuff	db	1024*10 dup(?)
wbuff	db	1024*10 dup(?)
len	dw	?
readaddr	dw	0
writeaddr	dw	0
data	ends
code	segment	para
	assume	cs:code,ds:data,ss:stack
main	proc	near
	mov	ax,data;数据段指针
	mov	ds,ax

	mov	ax,stack;堆栈段指针
	mov	ss,ax

	lea	dx,filename;打开文件
	mov	cx,0
	mov	ah,3dh
	mov	al,2
	int	21h
	jnc	l
	jmp	return
l:	mov	handle,ax
l1:	mov	bx,handle;读文件
	mov	dx,offset rbuff
	mov	cx,1024*10
	mov	ah,3fh
	int	21h
	cmp	ax,0
	jz	return
	mov	len,ax
	add	readaddr,ax;改写读文件指针
	call	change;将0d0a转换成0a
	xor	cx,cx;写文件
	mov	dx,writeaddr;移动写文件指针
	xor	ax,ax
	mov	ah,42h
	mov	al,0
	mov	bx,handle
	int	21h
	mov	dx,offset wbuff;写文件
	mov	bx,handle
	mov	cx,len
	mov	ah,40h
	int	21h
	mov	ax,len;改写写文件指针
	add	writeaddr,ax
	xor	cx,cx;移动读文件指针
	mov	dx,readaddr
	mov	ah,42h
	mov	al,0
	mov	bx,handle
	int	21h
	jmp	l1
return:	mov	dx,writeaddr;移动写文件指针
	xor	ax,ax
	mov	ah,42h
	xor	cx,cx
	mov	bx,handle
	int	21h
	mov	dx,offset wbuff;写文件0个字符
	mov	bx,handle
	xor	cx,cx
	mov	ah,40h
	int	21h
	mov	bx,handle;关闭文件
	mov	ah,3eh
	int	21h
	mov	ax,4c00h
	int	21h
main	endp
change	proc	near;将0d0a换成0d
	push	es;保护es
	push	ds
	pop	es
	mov	di,offset wbuff
	mov	si,offset rbuff
	cld;si递增
	push	cx
	mov	cx,len

lp1:	lodsb
	cmp	al,0dh
	jnz	continue
	cmp	cx,1
	jz	spe
	cmp	byte ptr[si],0ah
	jnz	continue
	dec	len
	loop	lp1
spe:	dec	len;0d在最后
	dec	readaddr
	pop	cx
	pop	es
	ret
continue:	stosb
	loop	lp1
	pop	cx
	pop	es
	ret
change	endp
code	ends
	end	main	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -