菜鸟请教!
因为要交个小作业,看到wequal(小虾)的一个程序可是有三个错误想问下怎么改谢谢!
;*******copy file program
;*******only use one file copy
;*******date create 2002/11/27:10:30
;*******use assembly masm5.0
;******* my program start ******
.model small
.data
NoPara db 'you must input source file and target file!!! '
SourceFile DB 40 DUP(?)
TargetFile DB 40 DUP(?)
buffer db 1024 dup(?)
flag db 1
succeed db '1 file(s) copied$ '
ERROpen db 'Error open file ,no file be copied$ '
ErrCrea db 'Error create file ,no file be copied$ '
BadInput db 'You must input parameters$ '
.code
.386
.startup
mov si,80h ;get parameter
xor cx,cx
mov cl,es:[si]
mov al,es:[si+1]
cmp al,0Dh
jz No_para ; No parameter
call GetParameter
mov ax,3d00h ;open a file
mov dx,offset SourceFile
int 21h
jc ErrorOpen
mov bx,ax
mov si,ax ;protect source file name
mov ah,3ch ;create a file
mov cx,0
mov dx,offset TargetFile
int 21h
mov di, ax ;protect target file name
jc ErrorCreate
ReadAgain:mov bx,si ;get source file name
mov ah,3fh ;read from file
mov cx,1024
mov dx,offset buffer
int 21h
; mov cx,1024
cmp ax,1024 ;if to file end
jz go_on
mov flag ,0
mov cx,ax
go_on: mov bx,di ;get target file name
mov ah,40h ;write into file
mov dx, offset buffer
int 21h
cmp flag,0
jnz ReadAgain
mov ah,3eh ;close source file
int 21h
pop bx
int 21h ;close target file
mov dx,offset succeed
mov ah,9
int 21h
jmp _end
ErrorOpen:mov dx,offset ErrOpen ;exit with error open file
mov ah,9
int 21h
jmp _end
ErrorCreate:mov dx,offset Errcrea ;exit with error create file
mov ah,9
int 21h
jmp _end
No_para: mov dx,offset BadInput ;exit with error bad input file
mov ah,9
int 21h
jmp _end
GetParameter proc
sub cx,2
mov si,82h
lea di,SourceFile ;Get Source File Name
again: mov al,es:[si]
mov [di],al
inc si
inc di
mov al,es:[si]
cmp al,20h
jz Next ;Get Target File Name
loop again
mov al,0
mov [di],al
ret
Next: mov al,0
mov [di],al
lea di,TargetFile
inc si
loop again
GetParameter endp
_end:
.exit
end
[解决办法]
没有问题了的啊, 就是这样的, 你看下源程序就是了. 只是它要求运行时一并输入被复制的文件名和复制后的文件名而已, 就如同系统的 copy 命令一样. 即便是借用别人的程序, 也还是要大致自己能够看明白的吧? 不然, 自己可就少有收获的了.