最近闲来无聊,在 上海图书馆 借了本《IBM-PC汇编语言程序设计》。没想,在看显示器访问的那章时。觉得作者讲得实在含糊,无法让人明白。后来,又借了本《80x86汇编语言程序设计》发现,这两本书在那一章节的内容几乎是一样,例子图片都一样。在我反复的摸索和在 上海科学技术情报研究所 里查看几天的资料后。终于模清了门路。当然,我也上网看了。没有相关的内容,也许是我没找到。所以,在这里献上我的成果希望有缘人能和我交流。
本文主要是介绍不用BIOS中断在VGA 640*480 16色模式下,对屏幕单个象素进行读写操作。我将用两段代码来说明如何操作,用于对各位处于迷茫的学者们一些提示。
在阅读本文前,我希望读者能够有一定的汇编基础,和对VGA显卡原理的基础知识(其实只要知道一些就可以了)。如果有空,可以在看本文之前阅读前面我借的两本书中的一本中,有关VGA显示卡的操作内容。
本文使用的例子,是用于NASM汇编器,读者可以从网上免费下载。我使用的软件,都可以从www.sf.net免费下载。
对VGA的写操作
首先是确定坐标位置,由于对内存的访问是一个字节,也就是 8 位二进制,而四个位面同一地址的字,构成了一个四位的颜色值。所以,我们需要确定在0a000h中的哪段地址进行操作。
b=x/8+y*80
既然知道如何计算所写的位置,我们就来写一段汇编代码。
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;开始计算x/8 ;开始计算y*80 ;开始汇总计算 mov bl,al add dx,bx ;dx+bx mov word[x],dx |

本文详细介绍了如何在VGA 640*480 16色模式下,不依赖BIOS中断直接对屏幕进行单个像素的读写操作。通过汇编代码示例,阐述了坐标计算、位面选择、位屏蔽寄存器的使用以及颜色设置等步骤,适合有一定汇编基础和VGA显卡知识的读者。文章提供了完整的汇编子程序代码,可确保在NASM下运行成功。
最低0.47元/天 解锁文章
360





