看看你C语言是什么级别
											要C是吧,就C个切底咯。条件是不允许你调用任何的函数库,函数库不是C语言必要的一部分,看你能C到什么地方?连最简单的hello world输出都艰难是吧。
程序代码:void prints(char*);
void print(char*);
void crlf();
int main()
{
    char s[]="hello world!$";
    prints(s);
    crlf();
    print(s);
    getch();
    return 0;
}
void crlf()
{
    asm mov dl,0dh
    asm mov ah,2h
    asm int 21h
    asm mov dl,0ah
    asm int 21h
}
void prints(char* s)
{
    asm mov dx,s
    asm mov ah,9
    asm int 21h
}
void print(char* s)
{
    asm mov si,s
    asm mov ah,2
print1:
    asm lodsb
    asm or al,al
    asm jz over
    asm mov dl,al
    asm int 21h
    asm jmp print1
over:
    asm mov ah,3
    asm int 10h
    asm dec dl
    asm mov ah,2
    asm int 10h
    asm mov al,20h
    asm mov cx,1
    asm mov ah,0ah
    asm int 10h
}tc编译,应该用堆栈传递的,有点长,算了
程序代码:
#define BLACK        0  //黑色
#define BLUE         1  //蓝色
#define GREEN        2  //绿色
#define CYAN         3  //青色
#define Red          4  //红色
#define MAGENTA      5  //洋红色
#define BROWN        6  //褐色
#define LIGHTGRAY    7  //高亮灰色
#define DARKGRAY     8  //灰色
#define LIGHTBLUE    9  //高亮蓝色
#define LIGHTGREEN   10 //高亮绿色
#define LIGHTCYAN    11 //高亮青色
#define LIGHTRED     12 //高亮红色
#define LIGHTMAGENTA 13 //高亮洋红色
#define YELLOW       14 //黄色
#define WHITE        15 //白色
#define BLINK        16
void print(char* String,int Color)
{
    char far* screen_address=(char far*)0xB8000000;
    while(*String)
    {
        *screen_address=*String;
        screen_address++;
        *screen_address=Color;
        String++;
        screen_address++
    }
}
int main(void)
{
    print("hello world",GREEN);
    return 0;
}
我以前写了个直接读显存的。原文地址:https://bbs.bccn.net/viewthread.php?tid=220406&highlight=%2Bioriliao