📄 ex13_1c.asm
字号:
; EX13_1c.asm
;
; This program copies one file to another using the standard library
; file I/O routines. The Standard Library file I/O routines let you do
; character at a time I/O, but they block up the data to transfer to improve
; system performance. You should find that the execution time of this
; code is somewhere between blocked I/O (ex13_1b) and character at a time
; I/O (EX13_1a); it will, however, be much closer to the block I/O time
; (probably about twice as long as block I/O).
include stdlib.a
includelib stdlib.lib
dseg segment para public 'data'
InFile filevar {}
OutFile filevar {}
Filename byte "Ex13_1.in",0 ;Input file name
Filename2 byte "Ex13_1.out",0 ;Output file name
dseg ends
cseg segment para public 'code'
assume cs:cseg, ds:dseg
Main proc
mov ax, dseg
mov ds, ax
mov es, ax
meminit
; Open the input file:
mov ax, 0 ;Open for reading
ldxi Filename
lesi InFile
fopen
jc BadOpen
; Open the output file:
mov ax, 1 ;Open for output
ldxi Filename2
lesi OutFile
fcreate
jc BadCreate
; Copy the input file to the output file:
CopyLp: lesi InFile
fgetc
jc GetDone
lesi OutFile
fputc
jmp CopyLp
BadOpen: printf
byte "Error opening '%s'",cr,lf,0
dword Filename
jmp Quit
BadCreate: printf
byte "Error creating '%s'",cr,lf,0
dword Filename2
jmp CloseIn
GetDone: cmp ax, 0 ;Check for EOF
je AtEOF
print
byte "Error copying files (read error)",cr,lf,0
AtEOF: lesi OutFile
fclose
CloseIn: lesi InFile
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 + -