MEM Command Reports Less Than
640K Total Conventional Memory
The DOS MEM command will report 640K or 655,360 bytes of total
conventional memory on most systems. Issuing the command as just MEM will
show the total as 640K, issuing the command as MEM/C/P will show the total
as 655,360 bytes
.
If the BIOS has set up an Extended BIOS
Data Area (EBDA or XBDA), then 1KB (1024 bytes) at the top of base memory
will be allocated for the EBDA. This will cause the MEM command to report
639K or 654,336 bytes of total conventional memory
.
If EMM386 (or certain other memory managers) is loaded, it will
automatically relocate the EBDA to within the first 64KB of base memory
(unless the NOMOVEXBDA parameter is used), which will cause the MEM
command to report the full 640K or 655,360 bytes as the total amount of
conventional memory. Windows 95 seems to automatically relocate the EBDA
even if VMM32 is not loaded. There is no memory gained by relocating the
EBDA - all that is changed is its location and whether DOS or the BIOS is
keeping track of it
.
The presence of an onboard PS/2 mouse port is one reason why an
Extended BIOS Data Area would be used
.
If the MEM command does report 639K as the total amount of conventional
memory, the DEBUG command can be used to determine whether this is due to
the use of an Extended BIOS Data Area
.
Type DEBUG at the DOS prompt. This gives a dash prompt. Then type D
40:0. This will display several rows of pairs of hex characters. The last
two pairs of the top row are a pointer to the EBDA. This pair of hex
values is reversed, it represents a segment (or paragraph) address. The
values will be C0 9F (9FC0:0000) if there is an Extended BIOS Data Area
present at the top of conventional memory. These values will differ if the
EBDA has been relocated. 32 0D (0D32:0000) is a typical value for the
relocated EBDA. 80 9F (9F80:0000) indicates that the EBDA begins at 2K
under the top of 640K. These values should be 00 00 if no EBDA has been
allocated
.
Another reason why less than 640K may be reported as the total amount
of conventional memory is the presence of certain viruses in memory. Virus
infections are very common and the most common PC viruses are boot sector
infectors which load into memory every time the system is booted from an
infected hard drive or floppy disk. To test for a virus, boot clean from a
known uninfected, write-protected boot disk and run a good anti-virus
utility
.
Yet another reason for less than 640K to be reported would be the
presence of certain expansion cards, such as hard drive controller cards,
which have not only a ROM BIOS Extension but also the need to store
information such as hard drive parameters in system RAM. Some such cards
may allocate 1K or more of conventional memory for their own use. A
network adapter card with a boot ROM may do this also. To test for this,
remove the card and run the MEM command again
.
While every attempt is made to ensure the accuracy of our
support documents, CpuCare.com provides these documents on an AS-IS basis
for information purposes only
.