Egy program megírása közben felmerülhet az a probléma, hogy nem szeretnénk rengeteg apró filet használni, hanem csak nagyot. Bár ez a probléma nem tartozik kifejezetten az asm.art-beli célkitűzésekhez, de azért ez egy gyakorlati probléma.

Tehát akkor kezdjük az elején. A kis fileokat másoljuk össze egy nagyba. Ezután csináljunk egy listát:

  filenevek dw 32322             db 8,'egy.fle',0             db 12,'masodik.fle',0             ...
Most már csak át kell írni az int21h-t, hogyha az ah-ba "3dh" kerül, akkor keresse ki a listából, hogy van-e ilyen file, és ha benne van, akkor nyissa meg az adatfilet, álljon egy másik táblából kivett pozícióra a nagy adatfileban, majd adja vissza az eredeti "handle"-t. Ennyi...
  -------------------------[ SETVECTOR EXAMPLE ]-----------------------   segment code ..start:   jmp          notoldint NewIntproc:cmp          ah,3dh                     ; File megnyitás?            jne          ni_old                     ; Ha nem, akkor a régi            push         es            push         ds            push         dx            mov          ax,data                    ; ES=adatszegmens            mov          es,ax            mov          di,filestruct              ;            mov          cx,word [es:di]            ; cx=ennyi file            add          di,2                       ; az első filera mutat            mov          si,dx                      ; si=file neve comparing: push         cx                         ; cx,si,ax elmentése            push         si            push         ax            mov          cl,byte [es:di]            ; cl= ennyi hosszú az            inc          di                         ; első            repe         cmpsb                      ; Ha megegyezik, akkor            je           ni_put                     ; rewlz            xor          al,al            mov          cx,100            repne        scasb                      ; Ha nem, akkor megyünk a                                                    ; következő filera            pop          ax            pop          si            pop          cx            loop         comparing            jmp          ni_norm                    ; Nem találtunk   ni_put:  pop          ax            pop          si            pop          cx            pop          dx            mov          ax,data                    ; ds=data            mov          ds,ax            mov          ax,[filestruct]            ; fileok neve            sub          ax,cx                      ; Ennyiedik elem kell                                                    ; [ax-cx]            xor          ebp,ebp                    ; ebp=0            mov          bp,ax                      ; Ebben van az eltolás            push         bp            push         fs            mov          dx,dataname                ; Megnyitjuk az adatfilet            mov          ax,3d00h                   ;            call         oldintproc                 ;            mov          fs,ax                      ;            mov          ax,4200h                   ; Pozícionálgatunk            mov          bx,fs            mov          esi,eltolasok            mov          ecx,[esi+ebp*4]            ; 32bit rulez            mov          dx,cx            shr          ecx,16                     ; Szétszedegettük az                                                    ; ecx-et cx:dx-re            call         oldintproc                 ; Seekelünk:)            mov          ax,fs                      ; Visszanyomjuk az                                                    ; eredeti handle-t            pop          fs            pop          bp            pop          ds            pop          es            jmp          ni_end                     ; Ennyi elég is volt! ni_norm:   pop          dx            pop          ds            pop          es ni_old:    call         oldintproc ni_end:    iret oldintproc:pushf            db      9ah   OldInt:  dw      0,0            ret notoldint:            mov          ax,data            mov          ds,ax            mov          ax,stack            mov          ss,ax            mov          sp,stacktop            mov          ax,3521h                   ; Elmentjük a            int          21h                        ; régi interruptot            mov          word [cs:OldInt],bx        ;            mov          word [cs:OldInt+2],es      ;            mov          ax,2521h                   ; Beállítjuk az            mov          dx,NewIntproc              ; újat            push         cs                         ;            pop          ds                         ;            int          21h                        ;            mov          ax,data            mov          ds,ax            mov          ax,13h                     ; LEt's MCGA            int          10h            mov          dx,3c8h                    ; Paletta            xor          al,al                      ; bizergálás            out          dx,al            inc          dx            cld            mov          si,pal            mov          cx,256*3            rep          outsb            mov          si,fname                   ; Csak hogy lássuk,            call         Loadfile                   ; hogy működik            mov          si,fname2            call         Loadfile            xor          ax,ax            int          16h            mov          dx,word [cs:OldInt]        ; Visszaállítjuk a            mov          ax,word [cs:OldInt+2]      ; régi int-eket            mov          ds,ax            mov          ax,2521h            int          21h            mov          ax,3                       ; 80x25            int          10h            mov          ax,4c00h                   ; Kilépünk            int          21h                                                    ; Egyszerűen Loadfile:  mov          ax,3d00h                   ; beolvassuk a            mov          dx,si                      ; 'bigtomb'-be, csak            int          21h            mov          fs,ax                      ; vigyázz, mert  nem                                                    ; túlzottan  elegáns,            mov          ah,3fh                     ; kérj    inkább   a            mov          bx,fs                      ; dos-tól  memóriát,            mov          cx,64000                   ; -ha felhasználod a            mov          dx,bigtomb                 ; forrást -  és  oda            int          21h                        ; másolj!            push         word 0a000h            pop          es            xor          di,di                      ; Akkor be is            mov          si,bigtomb                 ; olvassuk            mov          cx,16000            rep          movsd            xor          ax,ax                      ; várunk egy            int          16h                        ; gombra            mov          ax,3e00h                   ; zárjuk a filet            mov          bx,fs            int          21h            ret   segment data   copyright    db '(c) zso.da.Poisonmixerz'   %include     "pal.inc"                           ; ez egy kis paletta, csak                                                    ; 256*3 byte   fname        db 'elso.pic',0                     ; Ezeket olvassuk be   fname2       db 'gta.pic',0   dataname     db 'datas.dat',0                    ; Ez az adatfile   filestruct   dw      2                           ; Filestruktúra                db      9,'elso.pic',0                db      8,'gta.pic',0   eltolasok    dd 0                                ; Hova seekeljen a program                dd 64000                            ; eltolások   bigtomb      resb 64000   segment stack stack   resb 64   stacktop:   ----------------------------[END OF]------------------------
Hát ennyi lenne. Javasolom még mindenkinek, hogy írjon egy olyan programot, ami összeszedi a összelinkelendő fileok neveit, és legyártja az eltolási táblát egy include fileba.