бинарный файл в текстовый Fasm

Тема в разделе "WASM.BEGINNERS", создана пользователем 131s, 18 ноя 2008.

  1. 131s

    131s New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    7
    нужна прога которая бинарный файл преобразует в 10 или 16 формат.
    Приблизительно повыдирал из других программ, но что то не работает...
    подскажите что не правильно.

    Код (Text):
    1. format PE GUI 4.0
    2. entry WINMAIN
    3.  
    4. include '%fasminc%\win32a.inc'
    5.  
    6. null equ ebx
    7.  
    8. section '.data' data readable writeable
    9.   fin           db 'f1.txt',0
    10.   fout          db 'f2.txt',0
    11.   zg db "Âû÷èñëåíèå:",0
    12.   form dd " %u ",0
    13.   buf1 db 21 dup(0)
    14.  
    15.   hFile         dd      ?
    16.   lFile         dd      ?
    17.  
    18.   inbuf         dd      ?
    19.  
    20.   hFileO        dd      ?
    21.  
    22.   szFileWritten dd      ?
    23.   szReadByte    dd      ?
    24.  
    25. section '.code' code readable executable
    26.  
    27. proc WINMAIN uses ebx esi
    28.      
    29.      xor     ebx, ebx
    30.      
    31.      invoke  CreateFile,\
    32.              fin,\
    33.              GENERIC_READ,\
    34.              null,\
    35.              null,\
    36.              OPEN_EXISTING,\
    37.              FILE_ATTRIBUTE_ARCHIVE,\
    38.              null
    39.      mov     [hFile],eax
    40.  
    41.      invoke  GetFileSize,[hFile],null
    42.      mov     [lFile],eax
    43.  
    44.      invoke  CreateFile,\
    45.              fout,\
    46.              GENERIC_READ or GENERIC_WRITE,\
    47.              FILE_SHARE_READ or FILE_SHARE_WRITE,\
    48.              null,\
    49.              CREATE_NEW,\
    50.              FILE_ATTRIBUTE_ARCHIVE,\
    51.              null
    52.      mov     [hFileO],eax
    53.  
    54.      mov     esi,[lFile]
    55.  
    56.  
    57. @loop:
    58.  
    59.      invoke  ReadFile,[hFile],inbuf,1,szReadByte,null
    60.  
    61.      invoke wsprintf,buf1,form,inbuf                             ;здесь должно приобразовать в числа, но не получается
    62.      ;invoke MessageBox,0,buf1,zg,MB_OK
    63.  
    64.      invoke  WriteFile,[hFileO],buf1,1,szFileWritten,null
    65.  
    66.      dec     esi
    67.      jnz     @loop
    68.  
    69.      invoke  CloseHandle,[hFile]
    70.      invoke  CloseHandle,[hFileO]
    71.  
    72.      pop     esi
    73.      pop     ebx
    74.      invoke  ExitProcess, null
    75. endp
    76.  
    77. section '.idata' import data readable writeable
    78.  
    79.   library kernel32,'KERNEL32.DLL',\
    80.           user32,'USER32.DLL'
    81.  
    82.   include '%fasminc%/api/kernel32.inc'
    83.   include '%fasminc%/api/user32.inc'
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    131s
    > invoke WriteFile,[hFileO],buf1,1,szFileWritten,null
    Вместо единицы должна быть длина записываемой строки.
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    эта задача решается на уровне компиляции.
    file 'target.bin'
    ...
    load B byte from %-1
    ...
     
  4. 131s

    131s New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    7
    спасибо заработало.