我正在尝试使用汇编语言(NASM)创建一些基本的绘画例程。在查看x86 BIOS中断表时,我发现了提供一些视频操作服务的10h中断。
使用它,我已经成功地设计出一个绘制正方形的例程,并将中断调用配置为“写入图形像素”(Write a Graphics Pixel)(AH = 0Ch)。
正方形被绘制正确,但是却花费了太长时间,我能看到它被填充。顺便说一下,我正在QEMU上运行我的代码。
我假设屏幕刷新速度比指令执行速度要快。经过一些研究,我没有找到任何有用的内容。主要的可能解决方案是调整垂直同步和直接写入视频内存。
考虑到我正在使用视频模式12h(640x480 - 16种颜色),我的问题是:
1-直接写入视频内存是否比调用中断更快?
2-视频内存空间中的字节是如何组织的?每个像素占据一个字节(从地址0xa000开始)吗?
使用它,我已经成功地设计出一个绘制正方形的例程,并将中断调用配置为“写入图形像素”(Write a Graphics Pixel)(AH = 0Ch)。
正方形被绘制正确,但是却花费了太长时间,我能看到它被填充。顺便说一下,我正在QEMU上运行我的代码。
我假设屏幕刷新速度比指令执行速度要快。经过一些研究,我没有找到任何有用的内容。主要的可能解决方案是调整垂直同步和直接写入视频内存。
考虑到我正在使用视频模式12h(640x480 - 16种颜色),我的问题是:
1-直接写入视频内存是否比调用中断更快?
2-视频内存空间中的字节是如何组织的?每个像素占据一个字节(从地址0xa000开始)吗?
3 - 如何写入视频内存?只需按顺序逐个写入每个像素的颜色即可。
4 - 一般来说,当显示器刷新屏幕时,它只是不时地直接从视频内存中读取。