亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xms_demo.c

?? 操作系統(tǒng)實(shí)驗(yàn)教程核心技術(shù)與編程實(shí)例書中地例子代碼
?? C
字號(hào):
#include<\tc\include\stdio.h>
#include<\tc\include\dos.h>
int xms_demo();
void main(void)
{
	xms_demo();
	exit();
}
int xms_demo()
{
	union REGS inregs,outregs;
	struct SREGS segs;
	unsigned XMS_handle;
	 /*Data structure about moving File :  */
	FILE *fp;
	char buffer[256];
	struct xms_move
	{
		unsigned long int byte_count;        /*Number of bytes to move*/
		unsigned int source_handle;
		unsigned long int source_offset;
		unsigned int destination_handle;
		unsigned long int destination_offset;
	}block;
	int string_length;
	long character_count=0L;
	int transfer_error =0; /*1 if a transfer error occurs */
	int i,extra_byte;
	unsigned long int pp;
	unsigned int block_seg;
	void call_xms(union REGS * ,union REGS *,unsigned int );
	block_seg=FP_SEG(&block);
	/*buffer=(char far *)malloc(sizeof(char));*/
	/************check if XMS driver not installed** start*/
									  /* 2f interrupt 43 function*/
	inregs.x.ax=0x4300;
	int86(0x2f,&inregs,&outregs);
	if(outregs.h.al!=0x80)
	{printf("\nXMS driver not installed");exit(0);};
	/*************Get available XMS size           ** start*/
					 /* function 8 of XMS*/
  inregs.h.ah=8;
  call_xms(&inregs,&outregs,block_seg);
  if (outregs.x.ax==0)
  {  printf("\nError querying free extended memory %2xH",
	  outregs.h.bl);
	  return 1;
  };
  printf("Largest available XMS block %dKB",outregs.x.ax);
  printf("\nTotal free XMS %dKB",outregs.x.dx);
	/*************Allocate the extended memory     ** start*/
					 /* function 9 of XMS*/
  inregs.h.ah=9;
  inregs.x.dx=32000;  /*Size 32000KB */
  call_xms(&inregs,&outregs,block_seg);
  if (outregs.x.ax==0)
  {  printf("\nError allocateing extende memory %2xH",
	  outregs.h.bl);
	  return 1;
  };
  XMS_handle=outregs.x.dx;
  inregs.h.ah=8;
  call_xms(&inregs,&outregs,block_seg);
  if (outregs.x.ax==0)
  {  printf("\nError querying free extended memory %2xH",
	  outregs.h.bl);
	  return 1;
  }
  printf("\n32000KB Extende memory are alocated, ");
  printf("largest available XMS block %dKB",
	  outregs.x.ax);
  printf("\nTotal free XMS %dKB\n",outregs.x.dx);

  /****Read the file into a conventional memory buffer */
  /****and then move the data to extended memory */
  if ((fp=fopen("\\tc\\g\\mode.TXT","r"))==NULL)
  {
	  printf("\nError opening CONFIG.SYS");
	  return 1;
  }
  segread(&segs);
  segs.ds=block_seg;
  while (fgets(buffer,sizeof(buffer),fp))
  {
	  /***Copy buffer to extended momory */
	  string_length=strlen(buffer);
	  block.byte_count=string_length+1;
	  /***Transfer amount must be even */
	  if (block.byte_count%2) block.byte_count++;
	  block.source_handle=0;
	  pp=(void far *)MK_FP(segs.ds,buffer);
	  block.source_offset=pp;
	  block.destination_handle=XMS_handle;
	  block.destination_offset=character_count;
	  character_count+=string_length+1;
	  inregs.h.ah=0xB;
	  inregs.x.si=(unsigned int)&block;
	  call_xms(&inregs,&outregs,block_seg);
	  if (outregs.x.ax==0){transfer_error=1;break;}
  }
  if (transfer_error) {printf("\nError in data transfer11");
		return 1;};
  /****Move the data from extended memory to */
  /**** the conventional memory buffer and display     */
  block.destination_handle=0;
  block.source_handle=XMS_handle;
  block.destination_offset=(void far *)MK_FP(segs.ds,buffer);
  block.source_offset=0L;
  block.byte_count=sizeof(buffer);
  while (block.source_offset<character_count)
  {
	  if ((block.byte_count+block.source_offset)>character_count)
		  block.byte_count=character_count -block.source_offset;
	  if (block.byte_count%2) {block.byte_count++;extra_byte=1;}
	  else extra_byte=0;
	  call_xms(&inregs,&outregs,block_seg);
	  if (outregs.x.ax==0){transfer_error=1;break;}
	  for(i=0;i<(block.byte_count-extra_byte);i++)
	  if (buffer[i]) putchar(buffer[i]);
	  block.source_offset+=block.byte_count;
  }
  if (transfer_error) {printf("\nError in data transfer2");
	  return 1;};
	/**************Release the extended memory     ** start*/
										  /* function 0A of XMS*/
  inregs.h.ah=0x0A;
  inregs.x.dx=XMS_handle;
  call_xms(&inregs,&outregs,block_seg);
  if (outregs.x.ax==0)
  {  printf("\nError releasing extende memory %2xH",
	  outregs.h.bl);
	  return 1;
  };
  inregs.h.ah=8;
  call_xms(&inregs,&outregs,block_seg);
  if (outregs.x.ax==0)
  {  printf("\nError querying free extended memory %2xH",
	  outregs.h.bl);
	  return 1;
  };
  printf("32000KB Extende memory are released, ");
  printf("largest available XMS block %dKB",
	  outregs.x.ax);
  printf("\nTotal free XMS %dKB",outregs.x.dx);
}
void call_xms(union REGS * inregs,union REGS * outregs,unsigned int block_seg)
{
	union REGS in,out;
	struct SREGS segs;
	unsigned segs_ds,save_bx,flags;
	void far (*xms)(void); /*Pointer to the XMS servers */
  /***************Get the entry point to the XMS servers */
	in.x.ax=0x4310;
	int86x(0x2f,&in,&out,&segs);
	xms = (void far *)(((long)(segs.es)<<16)+out.x.bx);
  /**Assign the input registers to the actual registers **/
  _AX=inregs->x.ax;
  _CX=inregs->x.cx;
  _DX=inregs->x.dx;
  _SI=inregs->x.si;
  _DI=inregs->x.di;
  _BX=inregs->x.bx;
  _DS=block_seg;
  xms();  /* Call the XMS entry point */
  /**Assign the registers to the output register structure **/
  asm pushf
  asm push bx
  asm pop save_bx
  asm pop flags
  outregs->x.ax=_AX;
  outregs->x.bx=save_bx;
  outregs->x.cx=_CX;
  outregs->x.dx=_DX;
  outregs->x.si=_SI;
  outregs->x.di=_DI;
  outregs->x.cflag=flags&1;
  outregs->x.flags=flags;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利一区二区三区| av日韩在线网站| 7777精品伊人久久久大香线蕉经典版下载| 亚洲精品精品亚洲| 欧美色老头old∨ideo| 天天综合色天天综合色h| 91精品国产一区二区| 精品一区二区三区在线视频| 久久精品视频免费| 91视频xxxx| 日本视频一区二区三区| ww亚洲ww在线观看国产| jvid福利写真一区二区三区| 亚洲福利视频一区二区| 久久综合久久综合久久综合| 不卡在线观看av| 无码av中文一区二区三区桃花岛| 亚洲精品一区二区三区精华液| 国产精品888| 亚洲国产一区二区三区| 精品国产三级a在线观看| 99视频超级精品| 日韩高清不卡在线| 国产精品入口麻豆九色| 欧美日韩在线播放| 福利一区二区在线观看| 夜夜嗨av一区二区三区四季av| 日韩欧美国产综合一区| 91香蕉视频黄| 久久福利视频一区二区| 亚洲欧美一区二区久久| 精品国产乱码久久久久久免费| www.亚洲精品| 久久99热99| 亚洲超丰满肉感bbw| 国产精品热久久久久夜色精品三区| 欧美影院精品一区| 成人精品gif动图一区| 免费成人美女在线观看.| 亚洲免费av高清| 久久免费电影网| 777奇米四色成人影色区| 91香蕉视频黄| 成人一区二区三区| 久久国产精品露脸对白| 国产一区二区免费看| 亚洲综合无码一区二区| 欧美国产日本视频| 精品1区2区在线观看| 欧美日韩精品一区二区天天拍小说| 国产成人av自拍| 麻豆一区二区三区| 午夜影视日本亚洲欧洲精品| 自拍偷在线精品自拍偷无码专区| 国产亚洲自拍一区| 精品国产乱码久久久久久久久| 欧美日韩国产免费一区二区| 色综合中文字幕| 成人毛片视频在线观看| 国产一区二区福利视频| 激情另类小说区图片区视频区| 日本在线不卡一区| 午夜精品影院在线观看| 亚洲成人av中文| 亚洲超碰精品一区二区| 亚洲国产精品自拍| 亚洲电影在线播放| 亚洲综合免费观看高清在线观看| 亚洲欧美偷拍另类a∨色屁股| 中文字幕在线一区免费| 一区二区中文字幕在线| 中文字幕一区在线观看视频| 中文文精品字幕一区二区| 国产午夜精品福利| 中文成人av在线| 亚洲欧洲精品一区二区三区 | 午夜激情一区二区| 亚洲国产精品久久一线不卡| 五月婷婷色综合| 人人狠狠综合久久亚洲| 看片的网站亚洲| 国产伦精品一区二区三区视频青涩 | 日韩成人精品在线| 三级在线观看一区二区| 免费欧美在线视频| 韩国欧美国产1区| 成人在线一区二区三区| av不卡在线观看| 91成人免费在线视频| 欧美日韩视频在线第一区| 91精品国产黑色紧身裤美女| 日韩精品专区在线| 国产日韩欧美电影| 樱桃国产成人精品视频| 天天色 色综合| 精品在线一区二区| 成人av综合在线| 色婷婷av一区二区三区大白胸| 欧美午夜免费电影| 欧美tickle裸体挠脚心vk| 国产日韩精品一区| 亚洲精品视频自拍| 久草这里只有精品视频| av电影一区二区| 4438成人网| 中文字幕第一区二区| 亚洲成人av福利| 黑人巨大精品欧美黑白配亚洲| 成人小视频在线观看| 欧美日韩一区 二区 三区 久久精品| 欧美一卡二卡三卡| 中文字幕中文在线不卡住| 日韩精品免费视频人成| 国产**成人网毛片九色 | 亚洲精品欧美激情| 蜜桃精品视频在线观看| 99久久婷婷国产精品综合| 欧美猛男男办公室激情| 国产日韩成人精品| 偷拍自拍另类欧美| 成人禁用看黄a在线| 日韩一区二区在线播放| 亚洲欧美精品午睡沙发| 激情丁香综合五月| 欧美日韩午夜精品| 成人免费在线观看入口| 久久精品国产精品亚洲红杏| 91国偷自产一区二区三区成为亚洲经典| 91精品国产欧美一区二区成人| 亚洲人成人一区二区在线观看| 极品尤物av久久免费看| 欧美日韩亚洲综合在线| 国产精品电影院| 国产在线视频一区二区| 欧美日韩aaaaa| 亚洲另类在线制服丝袜| 国产成人av电影在线播放| 制服丝袜一区二区三区| 亚洲精品国产无天堂网2021| 国产成人精品网址| 欧美电影免费观看高清完整版在线观看 | 久久黄色级2电影| 在线播放亚洲一区| 亚洲自拍偷拍九九九| 成人黄页在线观看| 久久久久亚洲综合| 激情六月婷婷久久| 精品奇米国产一区二区三区| 亚洲二区视频在线| 欧美影院一区二区三区| 亚洲区小说区图片区qvod| 粉嫩av一区二区三区在线播放| 日韩免费高清视频| 久久激五月天综合精品| 日韩一区二区三区电影| 日本色综合中文字幕| 精品视频资源站| 亚洲一线二线三线视频| 色婷婷国产精品| 夜夜嗨av一区二区三区网页| 一本色道久久综合亚洲91| 亚洲婷婷综合色高清在线| 99在线视频精品| 日韩毛片一二三区| 99久久久精品| 亚洲另类在线一区| 在线观看免费视频综合| 亚洲国产精品精华液网站| 欧美手机在线视频| 午夜精品一区二区三区免费视频| 欧美高清视频不卡网| 日韩精品亚洲专区| 日韩精品一区在线| 国产一区二区三区在线观看免费视频 | 一区二区三区欧美激情| 欧美日韩在线综合| 日韩一区精品视频| 日韩欧美资源站| 国产精品白丝jk黑袜喷水| 国产日韩欧美精品在线| 成人免费三级在线| 亚洲精品国产无天堂网2021| 欧美性感一类影片在线播放| 天天色天天操综合| 久久综合成人精品亚洲另类欧美| 国产乱码精品一区二区三| 中文字幕一区免费在线观看| 色屁屁一区二区| 日本成人在线电影网| 久久久综合精品| a级精品国产片在线观看| 亚洲精品欧美综合四区| 日韩一区和二区| 成人黄色一级视频| 亚洲一区影音先锋| 日韩视频在线观看一区二区| 国产99久久久国产精品免费看| 中文字幕在线观看一区二区| 在线国产电影不卡| 韩国女主播一区|