1,26 → 1,25 |
|
use32 ; âà á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §àï¤ëå ª®¬ ¤ë |
org 0x0 ; ¡ §®¢ë© ¤à¥á ª®¤ , ¢á¥£¤ 0x0 |
db 'MENUET01' ; ¨¤¥â¨ä¨ª â®à ¨á¯®«ï¥¬®£® ä ©« (8 ¡ ©â) |
dd 0x1 ; ¢¥àá¨ï ä®à¬ â § £®«®¢ª ¨á¯®«ï¥¬®£® ä ©« |
dd start ; ¤à¥á, ª®â®àë© á¨á⥬ ¯¥à¥¤ ñâ ã¯à ¢«¥¨¥ |
; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥¨ï ¢ ¯ ¬ïâì |
dd i_end ; à §¬¥à ¯à¨«®¦¥¨ï |
dd mem ; ¡ê¥¬ ¨á¯®«ì§ã¥¬®© ¯ ¬ïâ¨, ¤«ï á⥪ ®â¢¥¤¥¬ 0å100 ¡ ©â ¨ ¢ë஢¨¬ £à¨æã 4 ¡ ©â |
dd mem ; à ᯮ«®¦¨¬ ¯®§¨æ¨î á⥪ ¢ ®¡« á⨠¯ ¬ïâ¨, áà §ã § ⥫®¬ ¯à®£à ¬¬ë. ¥àè¨ á⥪ ¢ ¤¨ ¯ §®¥ ¯ ¬ïâ¨, 㪠§ ®¬ ¢ëè¥ |
dd 0x0 ; 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨. |
dd 0;pathprog ;¯ãâì ¨ ¨¬ï ¯à®£¨ |
|
include "../../macros.inc" |
include "../../proc32.inc" |
include "API.inc" |
include "../../dll.inc" |
include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
include '../../develop/libraries/box_lib/load_lib.mac' |
|
include "API.inc" |
|
use32 ; òðàíñëÿòîð, èñïîëüçóþùèé 32 ðàçðÿäíûõ êîìàíäû |
org 0x0 ; áàçîâûé àäðåñ êîäà, âñåãäà 0x0 |
db 'MENUET01' ; èäåíòèôèêàòîð èñïîëíÿåìîãî ôàéëà (8 áàéò) |
dd 0x1 ; âåðñèÿ ôîðìàòà çàãîëîâêà èñïîëíÿåìîãî ôàéëà |
dd start ; àäðåñ, íà êîòîðûé ñèñòåìà ïåðåäà¸ò óïðàâëåíèå |
; ïîñëå çàãðóçêè ïðèëîæåíèÿ â ïàìÿòü |
dd i_end ; ðàçìåð ïðèëîæåíèÿ |
dd mem ; Îáúåì èñïîëüçóåìîé ïàìÿòè, äëÿ ñòåêà îòâåäåì 0õ100 áàéò è âûðîâíèì íà ãðíèöó 4 áàéòà |
dd mem ; ðàñïîëîæèì ïîçèöèþ ñòåêà â îáëàñòè ïàìÿòè, ñðàçó çà òåëîì ïðîãðàììû. Âåðøèíà ñòåêà â äèàïàçîíå ïàìÿòè, óêàçàííîì âûøå |
dd 0x0 ; óêàçàòåëü íà ñòðîêó ñ ïàðàìåòðàìè. |
dd 0;pathprog ;ïóòü è èìÿ ïðîãè |
|
|
start: |
mcall 68,11 ;èíèöèàëèçèðóåì êó÷ó |
mcall 68,11 ;¨¨æ¨ «¨§¨à㥬 ªãçã |
test eax,eax |
jz Win1.Exit |
stdcall dll.Load, @IMPORT |
40,8 → 39,8 |
; test al,al |
; jne @b |
|
;GetFileInfo fStruc,pathprog,fInfo ;ïðîâåðêà íà íàëè÷èå ôàéëà |
;test eax,eax ;çàîäíî è ïîëó÷ó ðàçìåð ôàéëà |
;GetFileInfo fStruc,pathprog,fInfo ;¯à®¢¥àª «¨ç¨¥ ä ©« |
;test eax,eax ;§ ®¤® ¨ ¯®«ãçã à §¬¥à ä ©« |
;je WordFileOK |
|
;stdcall [mb_create],msgNotFound,mbThread |
51,7 → 50,7 |
; stdcall mem.Alloc,dword [fInfo+32] |
; mov ebx,dword [fInfo+32] |
; mov [filBuffer],eax |
; add dword[fInfo+32],eax ;çäåñü õðàíèòñÿ óêàçàòåëü íà êîíåö áóôåðà |
; add dword[fInfo+32],eax ;§¤¥áì åà ¨âáï 㪠§ â¥«ì ª®¥æ ¡ãä¥à |
; ReadFile fStruc,pathprog,ebx,eax,0 |
; test eax,eax |
; jz Win1.Redraw |
71,7 → 70,7 |
mov ecx,(548*10000h+200) |
mov edx,73FFFFFFh |
mov edi,Win1.Caption |
int 40h ;îêíî ñ ïðîçðà÷íûì ôîíoì |
int 40h ;®ª® á ¯à®§à çë¬ ä®o¬ |
|
mcall 9,ThreadInfo,-1 |
|
81,9 → 80,9 |
mov ecx,[ThreadInfo+42h] |
inc ecx |
mov edx,clWhite |
int 40h ;à òåïåðü íå ïðîçðà÷íûì:) |
int 40h ; ⥯¥àì ¥ ¯à®§à çë¬:) |
|
call Perevod ; â ïåðåðèñîâêå ñðàçó ïåðåâîäèì ââåä¸ííîå ñëîâî |
call Perevod ; ¢ ¯¥à¥à¨á®¢ª¥ áà §ã ¯¥à¥¢®¤¨¬ ¢¢¥¤ñ®¥ á«®¢® |
call NextPerev |
stdcall [edit_box_draw],EditIN |
RedrawWinEnd |
120,7 → 119,7 |
|
ExitProcess |
|
Win1.FonRedraw: ;ïåðåðèñîâêà îáëàñòè âûâîäà |
Win1.FonRedraw: ;¯¥à¥à¨á®¢ª ®¡« á⨠¢ë¢®¤ |
mcall 9,ThreadInfo,-1 |
|
mov eax,13 |
139,12 → 138,12 |
|
;------------------------------------------------------------------------------- |
|
Perevod: ;ñàì ïåðåâîä |
Perevod: ;á ¬ ¯¥à¥¢®¤ |
mov edi,dict;[filBuffer] |
|
Perev: |
xor ebx,ebx |
@@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi |
@@: ;áà ¢¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi |
mov al,[text+ebx] |
test al,al |
je endWord |
158,7 → 157,7 |
jne WordNotFound |
|
add edi,ebx |
dec edi ;ïðîïóñêàåì ïðîáåëû ïîñëå àíãëèéñêîãî ñëîâà |
dec edi ;¯à®¯ã᪠¥¬ ¯à®¡¥«ë ¯®á«¥ £«¨©áª®£® á«®¢ |
@@: |
inc edi |
cmp byte[edi],20h |
165,7 → 164,7 |
je @b |
|
xor ebx,ebx |
CopyWord: ;êîïèðóåì ïåðåâîä â ñòðîêó äëÿ âûâîäà |
CopyWord: ;ª®¯¨à㥬 ¯¥à¥¢®¤ ¢ áâப㠤«ï ¢ë¢®¤ |
mov al,[edi+ebx] |
cmp al,0Dh |
je @f |
178,7 → 177,7 |
OutText 7,25,perevText |
ret |
|
WordNotFound: ;åñëè ñëîâî íå ïîäîøëî |
WordNotFound: ;¥á«¨ á«®¢® ¥ ¯®¤®è«® |
add edi,ebx |
@@: |
cmp byte[edi],0Dh |
201,9 → 200,9 |
NextPerev: |
mov ecx,Lines |
mov edi,dict;[filBuffer] |
LinePerev: ;öèêë ðèñîâàíèÿ ñòðîêè |
LinePerev: ;横« à¨á®¢ ¨ï áâப¨ |
xor ebx,ebx |
@@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi |
@@: ;áà ¢¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi |
mov al,[text+ebx] |
test al,al |
je N_endWord |
217,7 → 216,7 |
jne N_Ppoisk |
ret |
|
N_Ppoisk: ;ïîèñê íà÷àëà ñòðîêè |
N_Ppoisk: ;¯®¨áª ç « áâப¨ |
add edi,ebx |
@@: |
dec edi |
225,7 → 224,7 |
jne @b |
inc edi |
|
;########ïðîïóñêàåì óæå ïåðåâåä¸ííîå ñëîâî######## |
;########¯à®¯ã᪠¥¬ 㦥 ¯¥à¥¢¥¤ñ®¥ á«®¢®######## |
xor ebx,ebx |
N_NoDouble: |
mov al,[text+ebx] |
248,8 → 247,8 |
add edi,2 |
jmp LinePerev |
|
N_NoDblOk: ;############âûâîä ðåçóëüòàòîâ#################### |
xor ebx,ebx ;êîïèðóåì ðåçóëüòàò |
N_NoDblOk: ;############¢ë¢®¤ १ã«ìâ ⮢#################### |
xor ebx,ebx ;ª®¯¨à㥬 १ã«ìâ â |
N_CopyWord: |
mov al,[edi+ebx] |
cmp al,20h |
306,7 → 305,7 |
jne @b |
inc edi |
|
loop @f ;íåäîòÿãèâàåòñÿ äî LinePerev |
loop @f ;¥¤®â¢ ¥âáï ¤® LinePerev |
ret |
@@: |
jmp LinePerev |
337,11 → 336,11 |
|
idbExit = 1 |
|
Lines = 16 ;êîëè÷åñòâ ñòðîê |
Lines = 16 ;ª®«¨ç¥á⢠áâப |
|
clTheme = 080B0FFh |
|
Win1.Caption db 'Dictionary RUS -> ENG',0 |
Win1.Caption db 'Dictionary ENG -> RUS',0 |
Win1X = 524 |
Win1Y = 548 |
Win1W = 500 |
359,18 → 358,18 |
|
; msgNotFound: |
; dw 0 |
; db 'Îøèáêà',0 |
; db 'Ôàéë dictionary.wrd íå íàéäåí',0 |
; db 'ßñíî',0 |
; db '訡ª ',0 |
; db ' ©« dictionary.wrd ¥ ©¤¥',0 |
; db 'á®',0 |
; db 0 |
; |
; msgNotFound1: |
; dw 0 |
; db '!!!',0 |
; db 'Îøèáêà ÷òåíèÿ ' |
; db '訡ª ç⥨ï ' |
; NumErr: db 0 |
; db 0 |
; db 'ßñíî',0 |
; db 'á®',0 |
; db 0 |
; |
; WordFile db '.wrd',0 |