这是一个我真的需要帮助的问题,我目前在FASM程序集中编写了一个操作系统,并且有一个像样的输出,图标来自ASCII表格。我想知道是否可以在装配程序中显示图像。我无法找到一个网站,所以链接到一个可以帮助完美的网站,或者如果它不可能的话,就不会。我如何在汇编程序中放置位图或任何图像格式
-4
A
回答
1
首先,您需要知道您正在实施的文件结构。
您可以点击此处查看例如在维基百科上,对BMP: https://en.wikipedia.org/wiki/BMP_file_format
或位置:http://www.dragonwins.com/domains/getteched/bmp/bmpfileformat.htm - 我更喜欢用这一个
正如你看到的,我们必须实现一个有点头,然后我们就可以只需创建该文件。
让我们写一些示例代码:
File_begin:
file_header:
.bfType: db "BM"
.bfSize: dd File_end - File_begin
.bfReserved1: dw 0
.bfReserved2: dw 0
.bfOffBits: dd PIXEL_DATA_START
image_header:
.biSize: dd image_header_end-image_header
.biWidth: dd 3
.biHeight: dd 3
.biPlanes: dw 1
.biBitCount: dw 32
.biCompression: dd 0
.biSizeImage: dd 0
.biXPelsPerMeter: dd 0
.biYPelsPerMeter: dd 0
.biClrUsed: dd 0
.biClrImportant: dd 16
image_header_end:
PIXEL_DATA_START:
dd 0x00000000, 0x00000000, 0x00000000
dd 0x00ffffff, 0x00ffffff, 0x00000000
dd 0x00ffffff, 0x00000000, 0x00ffffff
File_end:
这是一个显示一个3x3的滑翔机符号一个非常简单的BMP文件。
正如您所看到的,BMP文件格式实现起来非常简单 - 如果需要解释任何字段,请参阅我链接到的文档。
要记住的一件事是,你应该按照相反的顺序定义字节,因为PC架构中的东西很少。
我的代码使用FASM编译并在每个平台上运行,因为它只是一个映像 - 根本没有处理器作业。
因此,要回答您的问题,请查找文件头格式,然后实施它。相同的技术可以处理汇编中的所有操作,因此该文件在正常操作系统源代码中看起来将完全相同。
创建或解析这样的文件后,应该用下面的公式写每一个像素到帧缓冲器:
像素地址=帧缓冲器地址+ pixelX *颜色质量汇总+ pixelY *屏幕宽度*颜色质量汇总
例如:
mov eax, [framebuffer_addr]
add eax, pixelX * cDepth ; simplified code, in normal circumstances you will have to muliply it first
add eax, pixelY * cDepth * scrWidth
mov [eax], 0x00ff0000 ;; this will paint your desired pixel red
处理图像的每个像素并将其写入帧缓冲区,然后完成。
相关问题
- 1. 如何使用位图加载任何图像格式在wxPython
- 2. 如何在网格中放置图像?
- 3. 如何以编程方式放置或放下视图?
- 4. 如何使用引导程序在图像上放置图像
- 5. monodroid如何在图像上放置图像并放置图像
- 6. 如何在网格中的图像内放置图像?
- 7. 如何将jdeveloper序列图导出为任何图像格式?
- 8. 是否可以在页面的任何位置放置图像?
- 9. 如何在图像上放置图像?
- 10. 如何在Android中以编程方式放大图像?
- 11. 如何在屏幕上的任何位置放置视图?
- 12. 如何用位置图或其他方式旋转图像
- 13. 如何在任何设备的中心放置图像?
- 14. 在Windows应用程序中以编程方式设置图像的位置
- 15. 如何在bootstrap中的特定位置放置图像?
- 16. 如何以编程方式在表格行中添加图像?
- 17. 如何使程序图标位置以编程方式固定在跳板中
- 18. 我如何下载并在Android视图中放置图像
- 19. 如何在给定的位置设置位图图像中心
- 20. 如何在我的图像和边框之间放置空格?
- 21. 如何以编程方式在jasper标题中设置图像
- 22. MacOS - 如何以编程方式将图像视图彼此相邻放置?
- 23. 我们如何获得图像的位置并将其他图像放置在该位置使用android
- 24. Eclipse RCP图像应用程序:如何布置我的图像?
- 25. 如何在屏幕上的任何位置放置子视图,'停靠视图'
- 26. kivy:如何在BoxLayout中放置图像?
- 27. 如何在AlertDialog中放置图像? Android
- 28. JQuery,如何在div中放置图像?
- 29. 如何在AlertDialog中放置图像?
- 30. 如何在div中放置图像
真的吗?我以前建议你看看http://osdev.org。它很清楚地解释了这一点。您需要了解如何创建和管理帧缓冲区。 –
osdev.org不显示如何将位图上传到FASM中的程序集文件中,我期待但感谢您的回复。 –