Zjištění adresy viru v paměti
Narozdíl od boot virů, které mají jistotu, že jejich spuštění bude realizováno vždy v paměti od adresy adresy
0000:7c00, musí viry souborové svoji aktuální pozici v paměti zjišťovat. Segmentová část adresy je určena segmentem
vlastního kódu (CS), offsetová část adresy pak trikem pomocí instrukce call, která ukládá na zásobník návratovou adresu
(t.j. adresu následující instrukce programu).
call trik ; skok na nasledujici instrukci
trik:
pop bp ; ziskava adresu teto instrukce
sub bp, offset trik ; korekce na originalni posun
Od tohoto okamžiku virus zná svoji pozici v paměti, což je využíváno kódem viru zejména při práci s proměnnými, resp.
při jejich adresování (použití registru BP je samozřejmě jednou z možných variant).
Dále pak lze v těle viru nalézt odkazy podobného typu, jako zde následující uvedené příklady načtení offsetu
proměnné či načtení obsahu adresy definované proměnnou.
Konstrukce mov dx, offset proměnná:
lea dx, [bp+offset promenna]
resp.
lea dx, [bp+promenna]