我这段时间正在学习ucos,在使用到显示字符函数PC_DispChar时总是报错,其中的DISP_BASE不知道取什么值?<br />#define DISP_BASE 0xB800 /* Base segment of display (0xB800=VGA, 0xB000=Mono) */<br />我的一个测试代码如下,麻烦各位帮我看一下,多谢:<br />#include <stdio.h><br />#include <string.h><br />#include <ctype.h><br />#include <stdlib.h><br />#include <conio.h><br />#include <setjmp.h><br />#define MK_FP(seg,ofs) ((void *) <br /> (((unsigned long)(seg) << 16) | (unsigned)(ofs)))<br /><br /><br />#define DISP_BASE 0xB800 /* Base segment of display (0xB800=VGA, 0xB000=Mono) */<br />#define DISP_MAX_X 80 /* Maximum number of columns */<br />#define DISP_MAX_Y 25 /* Maximum number of rows */<br /><br />#define DISP_FGND_WHITE 0x0F<br /><br />#define DISP_BGND_BLACK 0x00<br /><br /><br />typedef unsigned char INT8U; /* Unsigned 8 bit quantity */<br />typedef signed char INT8S; /* Signed 8 bit quantity */<br />typedef unsigned int INT16U; /* Unsigned 16 bit quantity */<br />typedef signed int INT16S; /* Signed 16 bit quantity */<br />typedef unsigned long INT32U; /* Unsigned 32 bit quantity */<br />typedef signed long INT32S; /* Signed 32 bit quantity */<br /><br />void PC_DispChar (INT8U x, INT8U y, INT8U c, INT8U color);<br /><br />void main (void)<br />{<br /><br />char * s="M"; <br />PC_DispChar(0,0,*s,DISP_BGND_BLACK+DISP_FGND_WHITE);<br /> <br />}<br /><br />void PC_DispChar (INT8U x, INT8U y, INT8U c, INT8U color)<br />{<br /> INT8U *pscr;<br /> INT16U offset;<br /> offset = (INT16U)y * DISP_MAX_X * 2 + (INT16U)x * 2; /* Calculate position on the screen */<br /> pscr = (INT8U *)MK_FP(DISP_BASE, offset);<br /> *pscr++ = c; /* Put character in video RAM */<br /> *pscr = color; /* Put video attribute in video RAM */<br />}<br />编译通过了,但是在调试运行到PC_DispChar函数中的*pscr = color; 就报以下错:<br /><br /><br /><br />DISP_BASE的取值是不是固定的,是不是跟显卡有关啊?我的显示是<br />NVIDIARIVATNT2非曲直Model 64/Model 64 Pro,是不是其它的原因?大家帮帮我,谢谢!<br /><br /> |
|