Creating a Pointer to a Specific Memory Address

ID: Q23977

5.10 6.00 6.00a 6.00ax 7.00 | 1.00 1.50

MS-DOS                      | WINDOWS
kbprg

The information in this article applies to:

SUMMARY

An application can create a pointer to access a specific address in memory with the FP_SEG and FP_OFF macros or by creating a far pointer in a long value.

MORE INFORMATION

The FP_SEG and FP_OFF macros are defined in the DOS.H header file. These macros can retrieve or specify the segment or offset in a far pointer.

The following code example demonstrates using the FP_SEG and FP_OFF macros to create a pointer to access video memory:

   char far *p;
   FP_SEG(p) = 0xb800;   // point to segment of video memory
   FP_OFF(p) = 0;        // set offset to first screen position

For more information on the FP_SEG and FP_OFF macros, see the Microsoft C "Run-time Library Reference" or see the online help provided with the compiler.

Another method to create a far pointer involves casting a long as a far pointer, as in the following example:

   p = (char far *)0xb8000000L;   // video memory

In the long value, the most significant 16 bits specify the segment and the lower 16 bits specify the offset.

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

Last Reviewed: July 18, 1997