我正在使用C创建文本编辑器。你能解释一下这些宏吗?
#define Ad (unsigned char far *)0xb8000000
#define Pos(y,x) (2*((y)*80+x))
#define Write(y,x,ch) *(Ad+Pos(y,x))=ch
#define WriteA(y,x,fb) *(Ad+1+Pos(y,x))=fb
答案 0 :(得分:7)
回到控制台程序的黑暗时代,人们习惯通过直接写入屏幕缓冲区来输出文本。
控制台屏幕缓冲区被组织为一组连续的字节对,描述显示的字符及其属性(颜色,背景颜色,最终闪烁)。
在您的情况下,屏幕缓冲区似乎为0xb800000(Ad
)。假设屏幕宽度为80,Pos
会将屏幕位置(y,x)
转换为屏幕缓冲区中的内存偏移量。
Write
更改指定位置的显示字符,而WriteA
更改字符的颜色。
答案 1 :(得分:4)
我的天哪,就像1990年一样......
我不想苛刻,但如果你在这个级别上挣扎,你将很难写出一个文本编辑器。
答案 2 :(得分:3)
答案 3 :(得分:3)
您不想使用它们。
这些宏用于旧硬件,可以直接访问屏幕。
far
)同样,您不想使用这些宏。