in out指令

justin_0009 2007-11-26 03:10:15
比如我需要向屏幕输出字符串。不使用中断使用in,out指针怎么输出?

字符串为helloworld!

...全文
405 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
justin_0009 2007-11-28
  • 打赏
  • 举报
回复
IN,OUT咋搞???谁出来来个代码。最好是汇编的。
justin_0009 2007-11-27
  • 打赏
  • 举报
回复
该看什么资料呢??
翻了一下书籍都写的比较简单。能不能来个例子,比如我需要键盘,不使用IN,OUT也可以吗
Joke_Olive 2007-11-27
  • 打赏
  • 举报
回复
3楼说得没错。
要注意的是,图形模式下,写显存所在地址时,写的不是ASCII码,而是显示点阵数据

lxjjoinly 2007-11-27
  • 打赏
  • 举报
回复
BIOS里的字符点阵也就是8个字节画一个字符,8*8的像素点
for(y=0;y<8;y++)
for(x=0;x<8;x++)
if(c[y]>>x & 1)
putpixel(xPos+x,yPos+y,Color);
不过问下LS的不用BIOS的10号中断要怎样画像素点?
新人,不好意思,刚学。
图形模式下放进去的也应该是字节吧,那它和像素是怎么关联的呢?
lxjjoinly 2007-11-27
  • 打赏
  • 举报
回复
我去找了下,也没找到什么。。。
1。1024*768,256色(RGB-3色3个字节设置表示1个点) VGA 图形模式 AH=00H AL=62H INT 10H
2。ROM中ASCII码像素表对应地址F000:FA6E
四个I/O端口可以完成设置颜色寄存器的工作。这四个端口分别是:
0x3c6、0x3c7、0x3c8和0x3c9。
端口0x3c6称为调色板屏蔽寄存器,用来屏蔽所要求的调色板寄存器的位,如果你在这个寄存器中放入0xff,你就可以通过调色板索引寄存器0x3c7和0x3c8(一个用于读,一个用于写)访问任何你希望访问的颜色寄存器,端口0x3c9称为调色板数据寄存器,红、绿、蓝三种成份就是通过它进行读写(颜色值要读或写三次)。
1。设置颜色寄存器值的函数:
void SetPaletteRegister(int index,RGBColorPtr color)
{
outportb(0x3c6,0xff);
outportb(0x3c8,index);
outportb(0x3c9,color->red);
outportb(0x3c9,color->green);
outportb(0x3c9,color->blue);
}
2。获取颜色寄存器值的函数:
void GetPaletteRegister(int index,RGBColorPtr color)
{
outportb(0x3c6,0xff);
outportb(0x3c7,index);
color->red=inportb(0x3c9);
color->green=inportb(0x3c9);
color->blue=inportb(0x3c9);
}
---------------------
一般VGA视频BIOS的入口地址在C000H——CFFFFH之间
zhgwbzhd 2007-11-27
  • 打赏
  • 举报
回复
我认为最低端的就是in out 啦
zhouziheng_chang 2007-11-26
  • 打赏
  • 举报
回复
直接写显存所在的地址空间。

------------------------------------------------------
汇编语言学习支持网 www.asmedu.net
jvphxys 2007-11-26
  • 打赏
  • 举报
回复
楼上的是一种方法啊..
呵呵..
要使用IN,OUT,看来首先要把地址找到塞..
翻一些资料先吧
lxjjoinly 2007-11-26
  • 打赏
  • 举报
回复
你直接把它送到B8000去连,in,out都不要

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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