hugenorm.c

来自「[随书类]Dos6.0源代码」· C语言 代码 · 共 34 行

C
34
字号
/***************************************************************************/
/*																									*/
/*	HUGENORM.C																					*/
/*																									*/
/*		Copyright (c) 1991 - Microsoft Corp.											*/
/*		All rights reserved.																	*/
/*		Microsoft Confidential																*/
/*                                                                         */
/* Accepts a far pointer and returns a new pointer to the same location 	*/
/* which has been normalize so that the offset is always < 16.					*/
/*																									*/
/* char far *NormalizePtr( char far *Ptr )											*/
/* 																								*/
/* ARGUMENTS:		Ptr		- Far pointer to be normalized						*/
/* RETURNS		char far *	- Normalized far pointer								*/
/* 																								*/
/* johnhe - 03/23/89																			*/
/***************************************************************************/

#define		UL 	unsigned long

char far *NormalizePtr( char far *Ptr )
{
	UL 	lAddr;

	lAddr = ((UL)Ptr & 0xffff0000L) >> 12;		/* Convert seg to real 20 bit */
	lAddr += (UL)Ptr & 0xffffL;					/* Add offset to 20 bit addr */
	
	Ptr = (char far *)((lAddr & 0xfffffff0L) << 12);/* Creat ptr segment	*/
	Ptr += (unsigned)(lAddr & 0xf);						/* Add ptr offset		*/

	return( Ptr );
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?