How to Access & Modify Memory in MS-DOS from a C Program

ID: Q23868

6.00 6.00a 6.00ax 7.00 | 1.00 1.50

MS-DOS                 | WINDOWS
kbprg

The information in this article applies to:

SUMMARY

The code example below contains two functions to access memory in an application developed for the MS-DOS operating system. The peek() function provides access to a memory location and the poke() function allows an application to specify the value for a memory location.

MORE INFORMATION

Sample Code

/*
 * Compile options needed: None
 */ 

// The following function places a value into the specified
// memory location segment:offset

void poke(unsigned int segment, unsigned int offset,
          unsigned char val)
{
   unsigned char far *ptr;

   ptr = (unsigned char far *)(((long)segment << 16) | (long)offset);
   *ptr = val;
}

// The following function returns the contents of the specified
// memory location segment:offset

unsigned char peek(unsigned int segment, unsigned int offset) {
   unsigned char far *ptr;

   ptr = (unsigned char far *)(((long)segment << 16) | (long)offset);
   return *ptr;
}

Additional reference words: kbinf 6.00 6.00a 6.00ax 7.00 1.00 1.50 KBCategory: kbprg KBSubcategory: CLngIss Keywords : kb16bitonly

Last Reviewed: July 18, 1997