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

📄 testfile.asm

📁 汇编编程艺术
💻 ASM
字号:
; TestFile.ASM
;
; This program tests the file routines in the UCR Standard Library.
; Randall Hyde
; 4/13/93
;
; This code only assembles with MASM 6.0 or later!
; You will need to make appropriate modifications for TASM or MASM 5.x


		ifndef	@version
%out	Must modify this code to work with assemblers other MASM 6.x
		err
		else
		if	@version lt 600
%out	Must modify this code to work with assemblers other MASM 6.x
		err
		endif
		endif

		.xlist
;		include 	stdlib.a6
		include		consts.a6
		include		stdout.a6
		include		memory.a6
		include		file.a6
		includelib	stdlib.lib
		.list




dseg		segment	para public 'data'

File1		FileVar	{}
File2		FileVar	{}
count		dw	0

Buffer		db	256 dup (0)

Filename	db	"Testfile.asm",0
Filename2	db	"x",0
Filename3	db	"y",0

dseg		ends


cseg		segment	para public 'code'
		assume	cs:cseg, ds:dseg

Main		proc
		mov	ax, dseg
		mov	ds, ax
		mov	es, ax


		meminit
		jnc	GoodMem
		print
		db	"Could not properly initialize memory manager",cr,lf
		db	0
		jmp	quit

GoodMem:	printf
		db	"Opening '%s'",cr,lf,0
		dd	Filename

		ldxi	Filename
		lesi	File1
		mov	ax, 0		;Open for reading
		fopen
		jnc	GoodOpen
		print
		db	"Could not open file 1, DOS error code = ",0
		puti
		putcr
		jmp	quit

GoodOpen:	ldxi	Filename2
		lesi	File2
		fcreate
		jnc	ReadLoop
		print
		db	"Could not open file 2, DOS error code = ",0
		puti
		putcr
		jmp	quit

ReadLoop:	lesi	File1
		fgetc
		jc	BadRead
		lesi	File2
		fputc
		jc	BadWrite
		inc	count
		putc
		jmp	ReadLoop

BadWrite:	print
		db	"Error writing file: ",0
		puti
		putcr
		jmp	Quit



BadRead:	cmp	ax, 0
		je	Quit2

		print
		db	"Error reading file: ",0
		puti
		putcr
		jmp	Quit

Quit2:		printf
		db	"There were %d characters in the file",cr,lf,0
		dd	count
		lesi	file2
		fclose
		jnc	GoodClose
		printf
		db	"Could not properly close %s\n",0
		dd	Filename2

GoodClose:	lesi	File1
		fclose

		printf
		db	"Opening '%s' again.",cr,lf,0
		dd	Filename

		ldxi	Filename
		lesi	File1
		mov	ax, 0		;Open for reading
		fopen
		jnc	GoodOpen2
		print
		db	"Could not open file 1, DOS error code = ",0
		puti
		putcr
		jmp	quit

GoodOpen2:	ldxi	Filename3
		lesi	File2
		fcreate
		jnc	ReadLoop2
		printf
		db	"Could not open '%s', DOS error code = ",0
		dd	Filename3
		puti
		putcr
		jmp	quit

ReadLoop2:	lesi	File1
		ldxi	Buffer
		mov	cx, 256
		fread
		jc	BadRead2
		cmp	ax, 256
		jne	LastBlock
		lesi	File2
		ldxi	Buffer
		mov	cx, 256
		fwrite
		jc	BadWrite
		add	count, 256
		jmp	ReadLoop2


BadRead2:	cmp	ax, 0
		jne	BadRead
		jmp	CloseEm

LastBlock:	lesi	File2
		ldxi	Buffer
		mov	cx, ax
		add	count, ax
		fwrite
		jc	BadWrite

CloseEm:	lesi	File1
		fclose
		lesi	File2
		fclose

Quit:		ExitPgm			;DOS macro to quit program.
Main		endp

cseg            ends


sseg		segment	para stack 'stack'
stk		db	1024 dup ("stack   ")
sseg		ends


zzzzzzseg	segment	para public 'zzzzzz'
LastBytes	db	16 dup (?)
zzzzzzseg	ends


		end	Main

⌨️ 快捷键说明

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