2012-10-31 89 views
-1

我在8086程序集(这是家庭作业)上有一个任务,我需要在屏幕上显示一个BMP图像并从BMP创建一个ASCII文本文件(就像那些ASCII艺术软件一样)。8086在不覆盖的情况下写入文件

我已经覆盖了显示部分,我完成了“翻译”BMP到ASCII。但是,如您所知,BMP文件颠倒了像素行信息,即最上面一行写在文件的最后一行。

所以我认为,为了创建.txt文件,我可以简单地写一行,返回指向文件开头的指针,然后写另一行,等等。但是,现在看来很明显,这样做只会覆盖上一行,而最终只有一行文本文件。

因此,最后,我的问题是:有没有人有任何建议如何处理这种情况?我非常感谢任何帮助。提前致谢!

PD:我没有要求直接解决方案,只是可能有些东西或某些我不知道的工具,可以帮助解决这个问题。

+1

在计算机上解析BMP的方法会不会更容易,该方法允许您以连续流的形式进行书写?如果你可以做一些不可思议的书写技巧,你当然可以做一个更好的阅读来避免它? –

回答

1

您不能轻易插入到文本文件中。

但是,由于您知道要写入多少行文本以及每行的长度(包括换行符),因此您可以寻找文件的正确部分并开始写入。

首先写出完全空格(和换行符)。然后,对于文本的每个扫描线,寻找适当的位置并输出一行文本。

或者,按相反顺序读取位图扫描线。

+0

哦!我明白你的意思了......文件通常是320 * 200,所以我需要制作一个320 * 200 + 200的数组(200行以上),然后开始在每一行写上它的位置。你在暗示什么? – dhcarmona

+0

我以为你会对图像进行缩减采样,比如80宽度的线条......但是,这就是我的建议。作为替代,我还建议您以相反顺序从位图中读取行,并自上而下写入文本文件。 – paddy

相关问题