┌──┌─┐┌──
──┘├─┘──┘ Presents
┐  ┌┐┐┌─┤ VMag, Issue 3, 1 January 1999
└─┘┘ ┘└─┘ ─────────────────────────────

       Exe2Com (самостоятельная загрузка небольших exe-файлов).
                                 или
                    На заметку анти/вирумэйкеру ;)

Заголовок exe-файла:

+0       2   Signature   EXE-file signature ('MZ' or 'ZM').
                         See EXE.Txt (LMD #1'97).
+2       2   PartPage    Length of partial page at end (generally ignored).
+4       2   PageCnt     Length of image in 512-byte pages, incl. header.
+6       2   ReloCnt     Number of items in relocation table.
+8       2   HdrSize     Size of header in 16-byte paragraphs.
+0aH     2   MinAlloc    Minimum RAM needed above end of prog (paragraphs).
+0cH     2   MaxAlloc    Maximum RAM needed above end of prog (paragraphs).
+0eH     2   InitSS      Segment offset of stack segment (for setting SS).
+10H     2   InitSP      Value for SP register when started.
+12H     2   ChkSum      File checksum (negative sum of all words in file).
+14H     2   InitIP      Value for IP register when started.
+16H     2   InitCS      Segment offset of code segment (for setting CS).
+18H     2   TablOff     File-offset of first relo item (often 001cH).
+1aH     2   OverlayNo   Overlay number (0 for base module).
         28              Size of formatted portion of EXE header.

+?       4*? ReloTbl     variable-length relocation table.
+?       ?   Filler      filler to paragraph boundary.
+?       ?   Image       start of program image.

   Собственно загрузчик exe-файлов, используемый в  Exe2Com,  вынесен  в
отдельный модуль Loader.Asm, имеющий длину кода 128 байт (8 параграфов),
который "вшивается" в начало обрабатываемого exe-файла. Естественно, что
длина полученного файла должна удовлетворять условиям com-файла (не надо
забывать про стек - я обычно отвожу 100h байт). Комментарии отсутствуют,
как, впрочем, всегда, но, думаю, разобраться большого труда не составит.
Начальные  значения  регистров  для  exe-файла  не  соблюдаются,   кроме
регистров ds и es, устанавливаемых на PSP (вообще говоря, это плохо).

//Scout