首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

初学者请问

2012-03-27 
菜鸟请教!因为要交个小作业,看到wequal(小虾)的一个程序可是有三个错误想问下怎么改谢谢!*******copyfile

菜鸟请教!
因为要交个小作业,看到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 命令一样. 即便是借用别人的程序, 也还是要大致自己能够看明白的吧? 不然, 自己可就少有收获的了.

热点排行