;使用命令行参数合并文本文件。1-5.exe 文件1 文件2
assume cs:code,ds:data
data segment
fname1 db 128 dup (?)
fname2 db 128 dup (?)
fhand1 dw 0
fhand2 dw 0
error db 'File not found!','$'
error1 db 'Reading error!','$'
error2 db 'Required parameter missing!','$'
error3 db 'writing error!','$'
error4 db 'file num wuxiao!','$'
buffer db 512 dup (?)
data ends
code segment
start: push es
pop ds ;ds指向PSP段
cld ;清方向标志符DF,即正方向
mov si,80h ;PSP段的偏移80h处含参数长度(字节数),81h处开始存放参数
lodsb
or al,al ;是否有参数
jnz getfid ;有就转
mov ax,data
mov ds,ax
mov si,offset error2
call dmess
jmp over
getfid: mov cl,al
xor ch,ch ;CX含命令行参数字节数
mov di,si ;ES:DI的字符串中是否有空格
mov al,20h
repnz scasb
push di
mov bx,cx
repnz scasb
sub bx,cx
mov ax,data
mov es,ax ;ES指向DATA段
mov si,di
mov di,offset fname2
rep movsb ;DS:SI是源串,ES:DI是目的串
xor al,al
stosb
mov cx,bx
dec cx
pop si
mov di,offset fname1
rep movsb
xor al,al
stosb
mov ax,data
mov ds,ax
mov dx,offset fname1
mov ax,3d01h ;写方式打开文件1
int 21h
jnc open_1
mov si,offset error
call dmess
jmp over
open_1: mov fhand1,ax ;保存文件1句柄
mov dx,offset fname2
mov ax,3d00h ;读方式打开文件2
int 21h
jnc open_2
mov bx,fhand1 ;打开文件2出错,关闭文件1
mov ah,3eh
int 21h
mov si,offset error
call dmess
jmp over
open_2: mov fhand2,ax ;保存文件2句柄
mov bx,fhand1
xor cx,cx
xor dx,dx
mov ax,4202h ;将文件1的指针移动到文件尾
int 21h
jc wuxiao
cont: mov dx,offset buffer ;ds:dx指向缓冲区首地址
mov cx,512 ;读的字节数
mov bx,fhand2 ;读文件2
mov ah,3fh
int 21h
jc rerr
mov cx,ax
mov bx,fhand1 ;写入文件1
mov ah,40h
int 21h
jc rerr
cmp ax,512
jb clos
jmp cont
wuxiao: mov si,offset error4
call dmess
jmp clos
werr: mov si,offset error3
call dmess
jmp clos
rerr: mov si,offset error1
call dmess
clos: mov bx,fhand1
mov ah,3eh ;关闭文件
int 21h
mov bx,fhand2
mov ah,3eh
int 21h
over: mov ax,4c00h
int 21h
dmess: push dx
mov dx,si
mov ah,9
int 21h
pop dx
ret
code ends
end start
- [zaixuexi] 我以为是a0=0,a1=1,没仔细看 02/12 09:23
- [yang5731] 不对吧 我的结果应该是对的 N=9时 确实得217 你自己算算。你帮我看看论坛 算法上的程序吧 题 02/11 23:49
- [zaixuexi] 递归不是这么写的哦,我想你肯定没调试过自己写的这代码. 先看C代码吧: unsigned int 02/11 22:58
- [游客] <a href="http://www.playren.com/">整人方法</a> 12/15 17:11
- [wisji8] mov ax,0a0h mul dh mov bx,ax mov ax,2 mul 10/03 16:56
- [yang5731] 谢谢了 课程设计一做出来了 确实不能调用着个····· 08/25 02:50
- [mywiil] 课程设计一要用到这个子程序,这里暂不做评论。 赶紧完成课程设计一吧。 08/21 03:33