找错,我跟踪了半天 也没搞出来

;-------------------------------------------------------------------------------- 说明:把uinx文本转换为Windows文本 ;-------------------------------------------------------------------------------- changefile proc hfile;传入要转换的文件句柄 LOCAL hnewfile,readnum LOCAL buff[256]:byte LOCAL newbuff[256]:byte ;-------------------------------------------------------------------------------- 建立新文件 ;-------------------------------------------------------------------------------- invoke CreateFile,addr sznewfile,GENERIC_WRITE OR GENERIC_READ,FILE_SHARE_READ, 0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 .if eax != INVALID_HANDLE_VALUE mov hnewfile,eax .else invoke CloseHandle,hfile ret .endif ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- .while TRUE invoke RtlZeroMemory,addr newbuff,256 invoke ReadFile,hfile,addr buff,256,addr readnum,0 .break .if !readnum ||!eax;实际读入字节数=0或调用失败,则跳出循环 lea esi,buff lea edi,newbuff .while readnum lodsb .if al==0ah mov ax,0a0dh dec dword ptr readnum stosw .else dec dword ptr readnum stosb .endif .endw invoke WriteFile,hnewfile,addr newbuff,sizeof newbuff,addr readnum,0 .endw invoke CloseHandle,hfile invoke CloseHandle,hnewfile ret changefile endp仿照老罗第十章,第一个小程序写的。
实际输出结果的字节数,为256的倍数。。。

这片段的步骤是:
1.新建一个文件
2.每次读取源文件256个字节
3.筛选后,写入新文件
4.源文件读取完毕或失败,则关闭文件
[ 本帖最后由 okayyyy 于 2010-7-30 23:27 编辑 ]