format PE console
use32
entry start
include 'win32a.inc'
struct przz
X dw 0
Y dw 0
ends
;----data----;
COL1 = 2h+8h ; цвет1
COL2 = 1h+2h+8h ; цвет2
str1 db "Plz enter filename(.asm) :",13,10,0
str1len = ($-str1)
str2 db "wa7er`z commentz cleaner(asm).",0
str3 db "File not found.",13,10,0
str3len = ($-str3)
BUF DB 200 dup(?)
buv db 256 dup(?) ;256 bytes for srcz
resylt dd 0
str3len = ($-str3)
writtenc dd ?
inp dd ?
outp dd ?
prz przz <?>
hhhhh dd ? ; хэндл для файла
strm dd ?
kolvo dd ? ; filesize
tz db ";"
kovichka db '"'
f_mode db "rb+", 0
c_mode db "a+",0
ncm db "_nocomments.asm",0
;----data----;
start:
invoke CharToOemA,str1,str1
invoke CharToOemA,str2,str2
invoke CharToOemA,str3,str3
invoke FreeConsole ,0
invoke AllocConsole ,0
invoke GetStdHandle ,-10
push EaX
pop [inp]
invoke GetStdHandle ,-11
push EaX
pop [outp]
mov [prz.X],150 ; высота консоли
mov [prz.Y],25 ; ширина консоли
invoke SetConsoleScreenBufferSize,[outp],prz
invoke SetConsoleTitleA,str2
push 0 ; позиция
push 1 ; курсора
pop [prz.X]
pop [prz.Y]
invoke SetConsoleCursorPosition,[outp],prz
invoke SetConsoleTextAttribute,[outp],COL1
invoke WriteConsoleA,[outp],str1,str1len,writtenc,NULL
invoke ReadConsoleA,[inp],BUF,200,writtenc,0
;в буфе имя файла.
mov edi, BUF
mov al, 0dh
cld
repne scasb
dec edi
mov byte[edi], 0
cinvoke fopen,BUF,f_mode
push EaX
pop [hhhhh]
cmp [hhhhh],NULL
jnz nice1
invoke WriteConsoleA,[outp],str3,str3len,writtenc,NULL
jmp ENDz
nice1:
invoke lstrcat,BUF,ncm
cinvoke fopen,eax,c_mode
push EaX
pop [strm]
nice:
cinvoke fgets,buv,256,[hhhhh]
cmp [buv],0
jz ENDz
invoke lstrlen,buv
;invoke WriteConsoleA,[outp],buv,eax,writtenc,NULL
mov edi,buv
mov al, 59
cld
repne scasb
dec edi
mov word[edi],0a0dh
cinvoke fputs,buv,strm
jmp nice
;----END----;
ENDz:
MOV ECX,01FFFFFFFH
L1:
LOOP L1
call [FreeConsole]
call [ExitProcess]
data import
library kernel32,'KERNEL32.DLL',\
user32, 'USER32.DLL',\
msvcrt, 'msvcrt.dll'
import msvcrt,\
fgets, 'fgets',\
fopen, 'fopen',\
fputs, 'fputs'
include 'api\kernel32.inc'
include 'api\user32.inc'
end data