這是一個我真的需要幫助的問題,我目前在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. monodroid如何在圖像上放置圖像並放置圖像
- 4. 如何將jdeveloper序列圖導出爲任何圖像格式?
- 5. 如何在圖像上放置圖像?
- 6. 是否可以在頁面的任何位置放置圖像?
- 7. 如何在Android中以編程方式放大圖像?
- 8. 如何在屏幕上的任何位置放置視圖?
- 9. 如何用位置圖或其他方式旋轉圖像
- 10. 如何在bootstrap中的特定位置放置圖像?
- 11. 我如何下載並在Android視圖中放置圖像
- 12. 如何在我的圖像和邊框之間放置空格?
- 13. 我們如何獲得圖像的位置並將其他圖像放置在該位置使用android
- 14. MacOS - 如何以編程方式將圖像視圖彼此相鄰放置?
- 15. Eclipse RCP圖像應用程序:如何佈置我的圖像?
- 16. 如何在AlertDialog中放置圖像? Android
- 17. kivy:如何在BoxLayout中放置圖像?
- 18. 如何在div中放置圖像
- 19. 如何在我的應用程序的電子郵件中格式化和放置圖像?
- 20. Android:在任意位置放置視圖
- 21. 如何指定我的圖像位置?
- 22. 如何在ReportViewer中將圖像放置在圖像上方
- 23. 如何在圖形對象的任何位置繪製位圖?
- 24. 在應用程序中的任何位置的持久視圖
- 25. 如何轉換位圖中的NV21圖像格式?
- 26. 如何在確定的像素/位置放置視圖
- 27. 如何將圖像完全放置在菜單位置
- 28. 如何在ASP.Net中將圖像從任何格式轉換爲JPG格式?
- 29. 如何從任何顏色格式的MediaCodec輸出中縮放YUV圖像?
- 30. 我如何根據圖像的位置以編程方式調整精靈圖像的尺寸
真的嗎?我以前建議你看看http://osdev.org。它很清楚地解釋了這一點。您需要了解如何創建和管理幀緩衝區。 –
osdev.org不顯示如何將位圖上傳到FASM中的程序集文件中,我期待但感謝您的回覆。 –