直接写屏的函数怎么编?

death 2000-08-31 12:10:00
谁能给我个直接写屏的函数WriteChar(int x,int y,char symbol),
在坐标(x,y)处写个字符。
...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
maptrix 2000-09-05
  • 打赏
  • 举报
回复
上面的有一点笔误,就是(x * 80 + y) 应该是(y * 80 + x)

下面的程序效率更快一些,但原理和上面的一样。
void WriteChar(int x, int y, char c, char attrib)
{
char *ScreenBase=0xB800;
ScreenBase+=(x+y*80)*2;
*ScreenBase++=c;
*ScreenBase=attrib;
}
tibetty 2000-08-31
  • 打赏
  • 举报
回复
不过这仅仅是0x03显示模式下的写屏方法
tibetty 2000-08-31
  • 打赏
  • 举报
回复
void WriteChar(int x, int y, char c, int attrib)
{
*((char *)MK_FP(0xB800, (x * 80 + y) * 2)) = c;
*((char *)MK_FP(0xB800, (x * 80 + y) * 2 + 1)) = attrib;
}
wu_xin 2000-08-31
  • 打赏
  • 举报
回复
在DOS下吗?
「已注销」 2000-08-31
  • 打赏
  • 举报
回复
void write_string(int x,int y,int attrib,char *s)
{
_CX=strlen(s);
asm mov ax,y;
asm db 0x69,0xc0,0xa0,0x00
asm mov dx,x;
asm shl dx,1
asm add ax,dx
asm mov di,ax
asm mov ax,0xb800
asm mov es,ax
_SI=FP_OFF(s);
asm mov ah,byte ptr attrib
asm cld
loop_001:
asm lodsb
asm stosb
asm xchg ah,al
asm stosb
asm xchg ah,al
asm loop loop_001
}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧