看看你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