◄Map► ◄Up► ◄Contents► ◄Index► ◄Back► ──────────────────────────────────────────────────────────────────────────── ;* GetMem - Gets total size of memory and determines the largest amount of ;* unallocated memory available. GetMem invokes DOS Function 48h (Allocate ;* Memory) to request an impossibly large memory block. DOS denies the re- ;* quest, but returns instead the size of the largest block available. This ;* is the amount that GetMem returns to the calling program. See the WinOpen ;* procedure for an example of calling Function 48h to allocate unused memory. ;* ;* Shows: BIOS Interrupt - 12h (Get Conventional Memory Size) ;* Instructions - push pop ret ;* ;* Params: None ;* ;* Return: Long integer, high word = total memory in kilobytes (KB) ;* low word = largest block of available memory (KB) GetMem PROC int 12h ; Get total memory in K push ax ; Save size of memory mov ah, 48h ; Request memory allocation mov bx, 0FFFFh ; Ensure request is denied for ; impossibly large block int 21h ; Get largest available block in BX mov ax, bx ; Copy to AX mov cl, 6 ; Convert paragraphs to kilobytes by shr ax, cl ; dividing by 64 pop dx ; Recover total in DX ret ; Return long integer DX:AX GetMem ENDP -♦-