MS-DOS 6.22 MEM Command Memory Addresses

This guide explains how to view specific program memory address locations in MS-DOS 6.22 using the MEM utility. While standard memory reports display only high-level memory totals and program sizes, using a specific command-line switch enables low-level troubleshooting by revealing the exact segment addresses of active drivers, resident programs, and free memory blocks.

To display program memory address locations in MS-DOS 6.22, use the /D (or /DEBUG) parameter with the MEM command.

Syntax and Execution

Enter either of the following commands at the MS-DOS command prompt:

MEM /D

or

MEM /DEBUG

Because the debug output produces a lengthy list of all internal device drivers, installed TSR (Terminate and Stay Resident) programs, and system data structures, it typically scrolls off the screen quickly. To pause the output one screen at a time, pair it with the /P (page) switch:

MEM /D /P

Alternatively, you can pipe the output to the MORE filter:

MEM /D | MORE

Information Displayed by the /D Switch

When invoked with the /D parameter, the MEM command shifts from an aggregated view to a detailed map of conventional and Upper Memory Blocks (UMBs). The output provides:

  • Segment Addresses: The starting memory location in hexadecimal format (e.g., 002B0, 009C0) for every allocated block.
  • Module Name: The name of the program, driver, or system component occupying that address space.
  • Total Size: The exact byte size of the allocated memory block, displayed in both hexadecimal and decimal notations.
  • Type/Sub-type: Identifiers indicating whether a block represents an environment block, program code, data area, or free space.

Comparison with the /C Switch

The other common switch, /C (or /CLASSIFY), only summarizes the memory footprint of programs in conventional and upper memory, listing their sizes without memory addresses. The /D switch is the only native MS-DOS 6.22 MEM option that exposes the physical starting address of each memory segment.