main.c

来自「gerneral os development」· C语言 代码 · 共 57 行

C
57
字号
#define	VGA_MISC_READ	0x3CC/**********************************************************************************************************************************************************/__inline__ unsigned char inportb(unsigned short port){	unsigned char ret_val;	__asm__ __volatile__("inb %1,%0"		: "=a"(ret_val)		: "d"(port));	return ret_val;}/**********************************************************************************************************************************************************/void *memcpy(void *dst_ptr, const void *src_ptr, unsigned count){	void *ret_val = dst_ptr;	const char *src = (const char *)src_ptr;	char *dst = (char *)dst_ptr;	for(; count != 0; count--)		*dst++ = *src++;	return ret_val;}/*****************************************************************************for MinGW32*****************************************************************************/#ifdef __WIN32__#if __GNUC__<3#error Do not use MinGW GCC 2.x with NASM#endifint __main(void) { return 0; }void _alloca(void) { }#endif/**********************************************************************************************************************************************************/int main(void){	static const char msg1[] = "H e l l o   f r o m   O S D   3 ";	static const char msg2[] = "G o o d b y e .   "		"U s e   r e s e t   b u t t o n   t o   e n d ";/**/	unsigned vga_fb_adr;/* check for monochrome or color VGA emulation */	if((inportb(VGA_MISC_READ) & 0x01) != 0)		vga_fb_adr = 0xB8000;	else		vga_fb_adr = 0xB0000;/* display message on top line */	memcpy((char *)(vga_fb_adr + 0), msg1, sizeof(msg1) - 1);/* display message on second line */	memcpy((char *)(vga_fb_adr + 160), msg2, sizeof(msg2) - 1);/* return to KSTART.ASM, which will freeze */	return 0;}

⌨️ 快捷键说明

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