Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扩展ASCII字符以黄色而不是白色打印-OSDev_C_Kernel_Osdev - Fatal编程技术网

扩展ASCII字符以黄色而不是白色打印-OSDev

扩展ASCII字符以黄色而不是白色打印-OSDev,c,kernel,osdev,C,Kernel,Osdev,我正在开发一个操作系统内核。我在屏幕上打印扩展ASCII字符时遇到问题。当我尝试在屏幕上打印字符时,一般ascii字符很容易以白色打印。但当我试图打印扩展ASCII字符,如块、西格玛等时,它会以黄色打印。而是使用颜色的数字-1打印这些字符 WHITE -> YELLOW YELLOW -> BRIGHT MAGENTA BRIGHT MAGENTA -> BRIGHT RED . . and so on 有人能告诉我为什么会发生这种情况,并帮助我解决这个问题吗 我的代码就是这

我正在开发一个操作系统内核。我在屏幕上打印扩展ASCII字符时遇到问题。当我尝试在屏幕上打印字符时,一般ascii字符很容易以白色打印。但当我试图打印扩展ASCII字符,如块、西格玛等时,它会以黄色打印。而是使用
颜色的数字-1
打印这些字符

WHITE -> YELLOW
YELLOW -> BRIGHT MAGENTA
BRIGHT MAGENTA -> BRIGHT RED
.
.
and so on
有人能告诉我为什么会发生这种情况,并帮助我解决这个问题吗

我的代码就是这样-

putChar(0xdb,0,3,color(BLACK,BLACK));
putChar('A',2,3,color(WHITE,BLACK));

putChar(228,0,4,color(B_GREEN,BLUE));
putChar('A',2,4,color(B_GREEN,BLUE));

putChar(228,0,5,color(B_MAGENTA,BLUE));
putChar('A',2,5,color(B_MAGENTA,BLUE));
输出是-

我本可以使用颜色+1代码,但没有任何颜色高于白色。我怎么能把它们印成白色

编辑-putChar代码

void putChar(char character, short col, short row, unsigned char attr) {
    volatile unsigned char* vid_mem = (unsigned char *) VIDEO_MEM;
    int offset = (row*80 + col)*2;
    vid_mem += offset;
    if(!attr) {
        attr = default_color;
    }
    *(unsigned short int *)vid_mem = (attr<<8)+character;
}
void putChar(字符、短列、短行、无符号字符属性){
易失性无符号字符*vid_mem=(无符号字符*)VIDEO_mem;
整数偏移=(行*80+列)*2;
vid_mem+=偏移量;
如果(!attr){
attr=默认颜色;
}

*(unsigned short int*)vid_mem=(attr最有可能的问题是:

(attr<<8)+character

(attr最可能的问题是:

(attr<<8)+character

(attrWell…
putChar()
中有什么?@dashwuff我添加了代码它只是符号扩展-要么将
character
变成一个
unsigned char
,要么在添加到
attr之前屏蔽高位,谢谢现在它工作正常!!好吧,
putChar()中有什么内容
?@Daskwuff我已经添加了代码它只是符号扩展-要么将
字符
变成
无符号字符
,要么在添加到
属性之前屏蔽高位。谢谢,现在它工作正常了!!是的,这就是问题所在。我已经纠正了,现在它工作了。是的,这就是问题所在。我已经纠正了,现在又解决了作品