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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hellocn.cpp

?? 小型的操作系統開發的原代碼
?? CPP
字號:
//***********************************************************************/
//    Author                    : Garry
//    Original Date             : May,27 2004
//    Module Name               : hellocn.cpp
//    Module Funciton           : 
//                                This module countains the source code.
//    Last modified Author      :
//    Last modified Date        :
//    Last modified Content     :
//                                1.
//                                2.
//    Lines number              :
//***********************************************************************/

//#ifndef __HELLO_CHINA__
//#include "hellocn.h"
//#endif

#ifndef __STDAFX_H__
#include "..\INCLUDE\StdAfx.h"
#endif

void PrintStr(const char* pszMsg)
{
#ifdef __I386__                  //I386 implementation.
	__asm{
		push ebx
		push ecx
		mov ebx,__PRINTSTR_BASE
		mov ecx,dword ptr [ebx]
		mov eax,pszMsg
		push eax
		call ecx
		pop eax
		pop ecx
		pop ebx
	}
#else
#endif
}

void ClearScreen()
{
#ifdef __I386__
	__asm{
		push ebx
		mov ebx,__CLEARSCREEN_BASE
		call dword ptr [ebx]
		pop ebx
	}
#else
#endif
}

void PrintCh(unsigned short ch)
{
#ifdef __I386__
	__asm{
		push ebx
		mov ebx,__PRINTCH_BASE
		mov ax,word ptr [ebp + 0x08]
		push eax
		call dword ptr [ebx]
		pop eax
		pop ebx
	}
#else
#endif
}

void GotoHome()
{
#ifdef __I386__
	__asm{
		push ebx
		mov ebx,__GOTOHOME_BASE
		call dword ptr [ebx]
		pop ebx
	}
#else
#endif
}

void ChangeLine()
{
#ifdef __I386__
	__asm{
		push ebx
		mov ebx,__CHANGELINE_BASE
		call dword ptr [ebx]
		pop ebx
	}
#else
#endif
}

KEY_HANDLER SetKeyHandler(KEY_HANDLER keyHandler)
{
#ifdef __I386__
	__asm
	{
		push ebx
        push ecx
		mov ebx,__SETNOTIFYOS_BASE
		mov ecx,keyHandler
		push ecx
		call dword ptr [ebx]
		pop ecx
		pop ecx
		pop ebx
	}
#else
#endif
}

VOID GotoPrev()
{
#ifdef __I386__
	__asm{
		push ebx
		mov ebx,__GOTOPREV_BASE
		call dword ptr [ebx]
		pop ebx
	}
#else
#endif
}

INT_HANDLER SetTimerHandler(__GENERAL_INTERRUPT_HANDLER TimerHandler)
{
#ifdef __I386__
	__asm{
		push ebx
		push ecx
		mov ebx,__TIMERHANDLER_BASE
		mov eax,TimerHandler
		mov ecx,dword ptr [ebx]
		mov dword ptr [ebx],eax
		mov eax,ecx
		pop ecx
		pop ebx
	}
#else
#endif
}

WORD SetGdtEntry(DWORD dw1,DWORD dw2)
{
#ifdef __I386__
	__asm{
		push ebx
		mov ebx,__SETGDTENTRY_BASE
		push dw2
		push dw1
		call dword ptr [ebx]
		pop dw1
		pop dw2
		pop ebx
	}
#else
#endif
}

VOID MemZero(LPVOID pMemAddress,DWORD dwSize)
{
#ifdef __I386__
	__asm{
		push ecx
		push edi
		push eax
		xor al,al
		mov ecx,dwSize
		mov edi,pMemAddress
		cld
		rep stosb
		pop eax
		pop edi
		pop ecx
	}
#else
#endif
}

VOID MemCpy(LPVOID lpDes,LPVOID lpSrc,DWORD dwSize)
{
#ifdef __I386
	__asm{
		push esi
		push edi
		push ecx
		mov esi,lpSrc
		mov edi,lpDes
		mov ecx,dwSize
		rep movsb
		pop ecx
		pop edi
		pop esi
		retn
	}
#else
#endif
}

__declspec(naked) VOID ReadByteFromPort(UCHAR* pByte,WORD wPort)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		push edx
		push ebx
		mov ebx,dword ptr [ebp + 8]
		mov dx,word ptr [ebp + 12]
		in al,dx
		mov byte ptr [ebx],al
		pop ebx
		pop edx
		leave
		retn
	}
#else
#endif
}

__declspec(naked) VOID WriteByteToPort(UCHAR byte,WORD wPort)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		push edx
		mov al,byte ptr [ebp + 8]
		mov dx,word ptr [ebp + 12]
		out dx,al
		pop edx
		leave
		retn
	}
#else
#endif
}

__declspec(naked) VOID ReadByteStringFromPort(LPVOID lpBuffer,DWORD dwBufLen,WORD wPort)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		//push ebx
		push ecx
		push edx
		push edi
		mov edi,dword ptr [ebp + 8]
		//mov esi,dword ptr [ebx]
		mov ecx,dword ptr [ebp + 12]
		mov dx,word ptr [ebp + 16]
		rep insb
		pop edi
		pop edx
		pop ecx
		//pop ebx
		leave
		retn
	}
#else
#endif
}

__declspec(naked) VOID WriteByteStringToPort(LPVOID lpBuffer,DWORD dwBufLen,WORD wPort)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		push ecx
		push edx
		push esi
		mov esi,dword ptr [ebp + 8]
		mov ecx,dword ptr [ebp + 12]
		mov dx,word ptr [ebp + 16]
		rep outsb
		pop esi
		pop edx
		pop ecx
		leave
		retn
	}
#else
#endif
}

__declspec(naked) VOID ReadWordFromPort(WORD* pWord,WORD wPort)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		push ebx
		push edx
		mov dx,word ptr [ebp + 0x0c]
		mov ebx,dword ptr [ebp + 0x08]
		in ax,dx
		mov word ptr [ebx],ax
		pop edx
		pop ebx
		leave
		retn
	}
#else
#endif
}

__declspec(naked) VOID WriteWordToPort(WORD,WORD)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		push dx
		mov dx,word ptr [ebp + 0x0c]
		mov ax,word ptr [ebp + 0x08]
		out dx,ax
		pop dx
		leave
		retn
	}
#else
#endif
}

__declspec(naked) VOID ReadWordStringFromPort(LPVOID,DWORD,WORD)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		push ecx
		push edx
		push edi
		mov edi,dword ptr [ebp + 0x08]
		mov ecx,dword ptr [ebp + 0x0c]
		shr ecx,0x01
		mov dx,  word ptr [ebp + 0x10]
		cld
		rep insw
		pop edi
		pop edx
		pop ecx
		leave
		retn
	}
#else
#endif
}

__declspec(naked) VOID WriteWordStringToPort(LPVOID,DWORD,WORD)
{
#ifdef __I386__
	__asm{
		push ebp
		mov ebp,esp
		push ecx
		push edx
		push esi
		mov esi,dword ptr [ebp + 0x08]
		mov ecx,dword ptr [ebp + 0x0c]
		shr ecx,0x02
		mov dx,  word ptr [ebp + 0x10]
		rep outsw
		pop esi
		pop edx
		pop ecx
		leave
		retn
	}
#else
#endif
}

//
//Interrupt flag control functions.
//

__declspec(naked) VOID DisableInterrupt()
{
#ifdef __I386__
	__asm{
		cli
		retn
	}
#else
#endif
}

__declspec(naked) VOID EnableInterrupt()
{
#ifdef __I386__
	__asm{
		sti
		retn
	}
#else
#endif
}

/*
//
//64 bit unsigned number operation's implementation.
//

//Compare two U64 numbers,if the first is larger than the second,
//returns TRUE,else,returns FALSE.
BOOL U64_LARGER(__U64* lpFirst,__U64* lpSecond)
{
	BOOL        bResult          = FALSE;

	if((NULL == lpFirst) || (NULL == lpSecond))  //Parameters check.
		return FALSE;

	if(lpFirst->dwHighPart > lpSecond->dwHighPart)
		bResult = TRUE;
	else
	{
		if((lpFirst->dwHighPart == lpSecond->dwHighPart) &&
		   (lpFirst->dwHighPart >  lpSecond->dwHighPart))
		   bResult = TRUE;
		else
			bResult = FALSE;
	}
	return bResult;
}

//Compare two U64 numbers,if equal,returns TRUE,else,returns FALSE.
BOOL U64_EQUAL(__U64* lpFirst,__U64* lpSecond)
{
	if((NULL == lpFirst) || (NULL == lpSecond))
		return FALSE;

	return ((lpFirst->dwHighPart == lpSecond->dwHighPart) &&
		    (lpFirst->dwLowPart  == lpSecond->dwLowPart)) ?
           TRUE : FALSE;
}

//Increment one U64 number.
VOID U64_INCREMENT(__U64* lpNumber)
{
	if(NULL == lpNumber) //parameter check.
		return;

	if(0xFFFFFFFF == lpNumber->dwLowPart)
	{
		lpNumber->dwHighPart += 1;
		lpNumber->dwLowPart  =  0;
	}
	else
	{
		lpNumber->dwLowPart += 1;
	}
	return;
}

//Decrement one U64 number.
VOID U64_DECREMENT(__U64* lpNumber)
{
	if(NULL == lpNumber)
		return;

	if(0 == lpNumber->dwLowPart)
	{
		lpNumber->dwHighPart -= 1;
		lpNumber->dwLowPart = 0xFFFFFFFF;
	}
	else
	{
		lpNumber->dwLowPart -= 1;
	}
	return;
}

//Add two U64 number,stores the result into the third one.
VOID U64_ADD(__U64* lpFirst,__U64* lpSecond,__U64* lpResult)
{
}

//Substract the second U64 number from the first,stores the result into third one.
VOID U64_SUB(__U64* lpFirst,__U64* lpSecond,__U64* lpResult)
{
}

//Set one bit of a U64 number,it's position is indicated by second parameter.
VOID U64_SET_BIT(__U64* lpNumber,UCHAR ucPos)
{
	DWORD         dwTmp        = 0x00000001;
	UCHAR         ucTmp        = 0;

	if((NULL == lpNumber) || ucPos >= 64)  //Parameters check.
		return;

	if(ucPos < 32)
	{
		ucTmp = ucPos;
		dwTmp <<= ucTmp;
		lpNumber->dwLowPart |= dwTmp;
	}
	else
	{
		ucTmp = ucPos - 32;
		dwTmp <<= ucTmp;
		lpNumber->dwHighPart |= dwTmp;
	}
}

//Clear one bit of a U64 number.
VOID U64_CLEAR_BIT(__U64* lpNumber,UCHAR ucPos)
{
	DWORD         dwTmp         = 0x00000001;
	UCHAR         ucTmp         = 0;

	if((NULL == lpNumber) || (ucPos >= 64))
		return;

	if(ucPos < 32)
	{
		ucTmp = ucPos;
		dwTmp <<= ucTmp;
		dwTmp = ~dwTmp;
		lpNumber->dwLowPart &= dwTmp;
	}
	else
	{
		ucTmp = ucPos - 32;
		dwTmp <<= ucTmp;
		dwTmp = ~dwTmp;
		lpNumber->dwHighPart &= dwTmp;
	}
}
*/

//
//Error handling routines implementing.
//

static VOID FatalErrorHandler(DWORD dwReason,LPSTR lpszMsg)
{
	PrintLine("Error Level : FATAL(1)");
	if(lpszMsg != NULL)
		PrintLine(lpszMsg);
	return;
}

static VOID CriticalErrorHandler(DWORD dwReason,LPSTR lpszMsg)
{
	PrintLine("Error Level : CRITICAL(2)");
	if(lpszMsg != NULL)
		PrintLine(lpszMsg);
	return;
}

static VOID ImportantErrorHandler(DWORD dwReason,LPSTR lpszMsg)
{
	PrintLine("Error Level : IMPORTANT(3)");
	if(lpszMsg != NULL)
		PrintLine(lpszMsg);
	return;
}

static VOID AlarmErrorHandler(DWORD dwReason,LPSTR lpszMsg)
{
	PrintLine("Error Level : ALARM(4)");
	if(lpszMsg != NULL)
		PrintLine(lpszMsg);
	return;
}

static VOID InformErrorHandler(DWORD dwReason,LPSTR lpszMsg)
{
	PrintLine("Error Level : INFORM(5)");
	if(lpszMsg != NULL)
		PrintLine(lpszMsg);
	return;
}

VOID ErrorHandler(DWORD dwLevel,DWORD dwReason,LPSTR lpszMsg)
{
	switch(dwLevel)
	{
	case ERROR_LEVEL_FATAL:
		FatalErrorHandler(dwReason,lpszMsg);
		break;
	case ERROR_LEVEL_CRITICAL:
		CriticalErrorHandler(dwReason,lpszMsg);
		break;
	case ERROR_LEVEL_IMPORTANT:
		ImportantErrorHandler(dwReason,lpszMsg);
		break;
	case ERROR_LEVEL_ALARM:
		AlarmErrorHandler(dwReason,lpszMsg);
		break;
	case ERROR_LEVEL_INFORM:
		InformErrorHandler(dwReason,lpszMsg);
		break;
	default:
		break;
	}
}

//
//The following routine prints out bug's information.
//
VOID __BUG(LPSTR lpszFileName,DWORD dwLineNum)
{
	BYTE    strBuff[12];
	PrintLine("BUG oencountered.");
	PrintStr("File name: ");
	PrintStr(lpszFileName);
	Hex2Str(dwLineNum,strBuff);
	PrintLine("Lines: ");
	PrintStr(strBuff);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜脚交一区二区| 91福利在线看| 91国偷自产一区二区开放时间| 欧美一激情一区二区三区| 国产欧美日韩综合| 免费观看成人av| 在线观看免费一区| 1000部国产精品成人观看| 精品在线免费观看| 欧美日本不卡视频| 亚洲一区二区三区自拍| 国产在线精品一区二区夜色 | 一区二区在线免费观看| 精品亚洲免费视频| 4hu四虎永久在线影院成人| 亚洲欧美成人一区二区三区| 国产精品自在欧美一区| 日韩免费看的电影| 五月婷婷激情综合| 欧美日免费三级在线| 亚洲欧美日韩小说| 99视频国产精品| 国产精品久久777777| 成人综合在线观看| 欧美激情艳妇裸体舞| 国产伦精品一区二区三区免费迷 | 欧洲av一区二区嗯嗯嗯啊| 欧美激情综合在线| 国产乱子伦视频一区二区三区 | 4438成人网| 婷婷开心激情综合| 777午夜精品免费视频| 亚洲成va人在线观看| 欧美色网一区二区| 亚洲bdsm女犯bdsm网站| 欧美色视频在线| 日韩国产高清影视| 日韩欧美高清dvd碟片| 免费观看在线色综合| 精品国产三级a在线观看| 美日韩黄色大片| 欧美精品一区二区三区蜜桃视频| 日本成人在线看| 久久这里只有精品首页| 国产高清在线精品| 亚洲欧美在线aaa| 日本国产一区二区| 午夜精品福利一区二区三区蜜桃| 欧美另类变人与禽xxxxx| 免费三级欧美电影| 久久久久成人黄色影片| 91影院在线免费观看| 亚洲综合在线免费观看| 欧美日韩国产高清一区二区三区| 日本不卡视频在线| 久久亚洲春色中文字幕久久久| 国产精品1区2区3区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美视频一区在线观看| 精品一区二区国语对白| 国产精品久久久久久久久快鸭 | 欧美v国产在线一区二区三区| 精品一区二区三区久久| 亚洲欧洲日本在线| 91精品国产综合久久久久久久 | 国产拍欧美日韩视频二区| 91黄色小视频| 国内精品自线一区二区三区视频| 中文字幕欧美三区| 欧美丰满少妇xxxbbb| 国产成人午夜视频| 视频在线观看国产精品| 国产精品国产三级国产专播品爱网| 日本久久电影网| 国模套图日韩精品一区二区| 亚洲欧美怡红院| 精品久久久久av影院| 91亚洲大成网污www| 久久精品999| 综合色天天鬼久久鬼色| 精品国产a毛片| 欧美在线免费观看亚洲| 粉嫩av一区二区三区在线播放 | 狠狠色狠狠色综合日日91app| 亚洲男帅同性gay1069| 久久久蜜桃精品| 欧美日韩国产在线播放网站| 成人午夜碰碰视频| 麻豆精品久久久| 亚洲午夜私人影院| 国产精品久久久久精k8| 精品福利在线导航| 欧美一级专区免费大片| 在线亚洲高清视频| aaa欧美日韩| 粉嫩av一区二区三区粉嫩| 精品一区二区免费| 免费观看久久久4p| 日韩中文字幕亚洲一区二区va在线| 国产精品理论片在线观看| 精品精品国产高清a毛片牛牛 | 看片网站欧美日韩| 亚洲123区在线观看| 曰韩精品一区二区| 亚洲四区在线观看| 久久精品亚洲精品国产欧美| 日韩精品一区二| 91精品国产综合久久久久| 色天天综合色天天久久| 色婷婷综合久久久久中文| 91免费版在线| 91美女精品福利| 一本一道久久a久久精品| 99久久精品99国产精品| heyzo一本久久综合| av色综合久久天堂av综合| 国产sm精品调教视频网站| 韩国视频一区二区| 国产呦精品一区二区三区网站| 狠狠色丁香久久婷婷综| 韩国v欧美v日本v亚洲v| 国产在线看一区| 成人在线视频一区二区| av电影在线不卡| 日本乱人伦一区| 欧美性受极品xxxx喷水| 69久久夜色精品国产69蝌蚪网| 56国语精品自产拍在线观看| 欧美成人vps| 国产欧美一区二区精品性| 中文字幕在线观看一区二区| 亚洲欧美日韩一区二区 | 日韩一区二区麻豆国产| 欧美videos中文字幕| 久久久久久一级片| 亚洲人成网站在线| 一区二区三区高清在线| 五月综合激情婷婷六月色窝| 日本不卡1234视频| 国产一区二区三区| www.亚洲精品| 欧美精品第1页| 日韩精品自拍偷拍| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美日韩一区二区三区高清 | 亚洲国产精品成人综合色在线婷婷 | 久久麻豆一区二区| 一区二区三区在线免费视频| 视频一区视频二区中文字幕| 久久99国内精品| 成人18视频在线播放| 欧美日韩一级视频| 久久亚洲一区二区三区明星换脸 | 91免费视频网址| 日韩欧美自拍偷拍| 亚洲欧美怡红院| 老司机精品视频导航| 色天天综合色天天久久| 亚洲精品一区二区三区蜜桃下载| 中文字幕在线不卡一区二区三区| 日韩成人午夜精品| www.日本不卡| 精品国产伦一区二区三区观看体验| 欧美—级在线免费片| 免费观看日韩电影| 色综合av在线| 欧美国产日产图区| 精品一区免费av| 欧美情侣在线播放| 国产精品久久二区二区| 狠狠网亚洲精品| 91麻豆精品国产91久久久资源速度| 亚洲天堂a在线| 成人午夜电影久久影院| 日韩一级片在线观看| 伊人婷婷欧美激情| 成+人+亚洲+综合天堂| 精品福利av导航| 日本免费新一区视频| 欧美日韩激情一区二区三区| 亚洲欧洲av在线| 成人午夜av电影| 欧美电影免费观看高清完整版在| 亚洲一区二区三区爽爽爽爽爽| 99国内精品久久| 欧美国产精品久久| 国产老女人精品毛片久久| 精品少妇一区二区三区日产乱码| 亚洲观看高清完整版在线观看| 99久精品国产| 国产精品福利一区| 成人少妇影院yyyy| 国产日本欧美一区二区| 国产美女精品人人做人人爽| 精品欧美乱码久久久久久 | 亚洲国产精品久久人人爱蜜臀| 99免费精品在线观看| 国产精品不卡视频| 91网站黄www| 亚洲人亚洲人成电影网站色|