Az addig nagyon okés, hogy már mindenkinek legalább 8mb-vel bíró gépe van, de hogyan használhatjuk ki ? Azt egyelőre felejtsd el, hogy kiterjesztett memóriát fogsz használni, arról majd később írok, azonban itt van 640kb alapmemória, amit tetszés szerint felhasználhatsz. A DOS azonban lefoglalja az összes szabad memóriát a nagy eszével, ezért ezt fel kell szabadítani, hogy használni tudjuk. Állítólag csak a COM fileoknál kell ezt megcsinálni, EXE-knél nem. [B.k.]

   AX = 4A00h    BX = programunk mérete paragrafusban [méret/16]    ES = a programunk szegmenscíme    int 21h
"COM" filenál BX-be érdemes 4096-ot írni, mert akkor tuti, hogy nem lesz gond ! "EXE" filenál, ha kisebb, mint 2*64kb, akkor is írjunk 8192-t, biztos ami biztos alapon ! Vigyázzatok, hogy (es-1):0-nek az mcb-re (memory controll block) kell mutatni, de a program indulásánál autómatikusan erre mutat, tehát a progi elején hívjátok meg.

Akkor most már csak memóriát kellene kérnünk, ezt a 4800h-s dos interrupttal tudjuk elérni . Paraméterezés:

   AX = 4800h    BX = kérendő memória mérete paragrafusban [méret/16]    int 21h    KI : AX = memóriacím, innentől kezdődik a memória.         Ha a carry flag be van állítva, akkor hibajelzés
Valamelyik szegmensregiszterbe kell rakni az AX értékét, s így tudjuk kezelni a memóriát. Így elméletileg 640kb alapmemóriát tudunk használni, gyakorlatilag ennél egy kicsit kevesebbet..

Ha nincs elég memória, akkor a carry flag be lesz állítva, és ax=8 lesz, bx-ben pedig a legnagyobb lefoglalható memóriablokk mérete paragrafusban.

Ha a programunk befejezi a futását, akkor nem ártana felszabadítani a kért memóriát.

   AX = 4900h    ES = memóriacím, amit AX-ben kaptunk vissza a memória         lefoglalásánál.    int 21h
Na, akkor lássunk egy példát :
--------------------------[MEMUSE.ASM]-------------------------- org      100h section  .text start:          push           cs          pop            ds          mov            ax,4a00h        ; Felszabadítjuk a          mov            bx,4096         ; lefoglalt memóriát          int            21h          mov            ah,48h          ; Kérünk 64kb memóriát          mov            bx,4096          int            21h          mov            bp,ax          mov            es,bp           ; ES-től kezdve lehet a                                         ; memóriába írni          xor            di,di          xor            ax,ax           ; Kinullázzunk a kért          mov            cx,32000        ; memóriát          rep            stosw          xor            ax,ax           ; Várunk egy gombot          int            16h          mov            ah,49h          ; Felszabadítjuk a          mov            es,bp           ; memóriát          int            21h          mov            ax,4c00h          int            21h section  .data section .bss -------------------------[END OF]--------------------------