当前位置: 代码迷 >> 汇编语言 >> 小弟我写了段win masm32 代码,请教如何调试
  详细解决方案

小弟我写了段win masm32 代码,请教如何调试

热度:259   发布时间:2016-05-02 04:33:08.0
我写了段win masm32 代码,请问怎么调试
我就写了个简单的 创建文件并且向文件里cpy数据,代码如下:, 代码已能运行,
文件已经能成功创建,可是数据就是复制不进去,
那个创建的文件总是0KB,我也不知道怎么调试,只有瞪着两眼找来找去,找不到原因,请高手看下是什么问题,
另外,不知道直接写出来的masm32有没有好的调试工具
szMyDosHeaderFile db 'D:\masm32\source\Image_dos_header.txt',0   
      
       invoke CreateFile, addr szMyDosHeaderFile,\ 
                                GENERIC_READ or GENERIC_WRITE ,\ 
                                FILE_SHARE_READ or FILE_SHARE_WRITE,\ 
                                NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,\ 
                                NULL 
.if eax!=INVALID_HANDLE_VALUE
    mov @hMyFile,eax
    invoke GetFileSize,eax,NULL
    mov @dwMyFileSize,eax
    .if eax
      invoke CreateFileMapping,@hMyFile,\  ;内存映射文件
             NULL,PAGE_READWRITE,0,0,NULL
      .if eax
        mov @hMyMapFile,eax
        invoke MapViewOfFile,eax,\
               FILE_MAP_WRITE,0,0,65536
        .if eax
               mov @lpMyMem,eax
        invoke MemCopy,@lpMyMem,addr szMyDosHeaderFile,sizeof szMyDosHeaderFile
 invoke UnmapViewOfFile,@lpMyMem
 invoke CloseHandle,@hMyMapFile
 invoke CloseHandle,@hMyFile         
        .endif
      .endif
    .endif
  .endif

;以上是我加的
------解决方案--------------------
如果是新建文件的话,新建时的大小就是 0 啊,后面的 CreateFileMapping() 又没指定大小,就是文件的大小了。
向文件写入内容,这个方法没必要吧,有些复杂了;CreateFile() 后 WriteFile() 反而简单。