use32 org 0x0 db 'MENUET01' dd 0x01 dd START dd I_END dd 0x100000 dd 0x1000 dd 0x0 dd 0x0 include "macros.inc" ssf: dd 2 dd 0 dd 0 dd 0 dd char_print db 'out_bf.txt',0 char_print: db 0 START: ;mov eax, 70 ;mov ebx, ssf ;int 0x40 ;mov [ssf],dword 3 ;mov [ssf+12],dword 1 mov eax,70 mov ebx,attr_infile int 0x40 mov eax,70 mov ebx,write int 0x40 mov [write],dword 3 mov [write+4],dword 100 mov ecx,[size+32] comp: mov eax,70 mov ebx,read int 0x40 add [read+4],dword 1 mov edx,[dat] mov eax,70 mov ebx,write cmp edx,0x2d jne q mov [write+12],dword 3 mov [write+16],dword minus jmp y q: cmp edx,0x2b jne w mov [write+12],dword 3 mov [write+16],dword plus jmp y w: cmp edx,0x3c jne e mov [write+12],dword 3 mov [write+16],dword back_cell jmp y e: cmp edx,0x3e jne r mov [write+12],dword 3 mov [write+16],dword next_cell jmp y r: cmp edx,0x2e jne t mov [write+12],dword 30 mov [write+16],dword point jmp y t: mov [write+12],dword 1 mov [write+16],dword none y: int 0x40 mov eax,[write+12] add [write+4],eax sub ecx,1 cmp ecx,0 je o jmp comp o: mov eax,70 mov ebx,write mov [write+12],dword 7 mov [write+16],dword exit_code int 0x40 mov eax,-1 int 0x40 I_END: minus: ;3 byte db 0x5a ;pop edx db 0x4a ;dec edx db 0x52 ;push edx plus: ;3 byte db 0x5a ;pop edx db 0x42 ;inc edx db 0x52 ;push edx back_cell: ;3 byte db 0x83,0xc4,0x04 ;add esp,4 next_cell: ;3 byte db 0x83,0xec,0x04 ;sub esp,4 point: ;30 byte db 0xb8,0x46,0x00,0x00,0x00 ;mov eax, 70 db 0xbb,0x24,0x00,0x00,0x00 ;mov ebx, ssf db 0x5a ;pop edx db 0x88,0x15,0x43,0x00,0x00,0x00 ;mov [char_print], dl db 0x52 ;push edx db 0xcd,0x40 ;int 0x40 db 0x81,0x05,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00;add [ssf+4],dword 1 none: ;1 byte db 0x90 ;nop begain_code: db 'MENUET01' db 0x01,0x00,0x00,0x00,0x44,0x00,0x00,0x00 db 0x6f,0x00,0x00,0x00,0x00,0x00,0x10,0x00 db 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00 db 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 db 0x00,0x00,0x00,0x00,0x43,0x00,0x00,0x00 db 'out_bf.txt' db 0x00,0x00,0xb8,0x46,0x00,0x00 db 0x00,0xbb,0x24,0x00,0x00,0x00,0xcd,0x40 db 0xc7,0x05,0x24,0x00,0x00,0x00,0x03,0x00 db 0x00,0x00,0xc7,0x05,0x30,0x00,0x00,0x00 db 0x01,0x00,0x00,0x00 exit_code: db 0xb8,0xff,0xff,0xff,0xff ;mov eax,-1 db 0xcd,0x40 ;int 0x40 num_char: dd 0 size: dd 0 dd 0 dd 0 dd 0 dd 0 attr_infile: dd 5 dd 0 dd 0 dd 0 dd size db 'in_bf.txt',0 read: dd 0 dd 0 dd 0 dd 1 dd dat db 'in_bf.txt',0 write: dd 2 dd 0 dd 0 dd 100 dd begain_code db 'bf',0 dat: