Apr.8.2024 汇编中in&out的用法 显卡的初步探索

为了读取/写入io,我们可以使用in指令和out指令

in指令可以读取数据

in ax,dx

in al,dx

只能使用ax寄存器和dx寄存器,其中ax/al用来存储数据,dx指定端口

同样还有out指令

out dx,al

out dx,ax

out 0x1234,al

out 0x1234,ax

out指令中,dx/立即数是端口号,al是数据

——————————————————————————————

显存的布局:

显存地址分布
起始地址 结束地址 大小 作用
0xc0000 0xc7fff 32kb 显示BIOS
0xb8000 0xbffff 32kb 文本模式显示适配器
0xb0000 0xb7fff 32kb 黑白显示适配器
0xa0000 0xaffff 64kb 彩色显示适配器

 

同时,gs应为显存的段基址,以下为一段示例代码直接写入显存:

1 mov ax,0xb800
2 mov gs,ax
3 
4 mov byte [gs:0x00],'A'
5 mov byte [gs:0x01],0xa4 ;绿色背景闪烁,前景色红色

可以看到,在低地址处存放字符的ascii码,在高地址处存放字符属性。

 

以上文章参考了《操作系统真象还原》

posted @ 2024-04-08 20:47  jiehuan  阅读(32)  评论(0编辑  收藏  举报