news 2026/7/7 18:40:22

汇编语言全接触-78.如何产生一个BMP文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
汇编语言全接触-78.如何产生一个BMP文件

概述:

BMP 文件是一种常用的图像文件格式,本文的例子程序产生一个简单的 640x480 24 bit 颜色的 BMP 文件。BMP 文件的格式分两部分,第一部分为文件头,具体定义见源程序,第二部分为数据区,紧接着文件头存放。

源程序:

code segment

assume cs:code,ds:code

org 100h

start:

jmp install

;BMP 文件头定义

;---------------------------------------------------------------

BMP_HEAD DB 'BM' ;固定为 'BM'

D_FILE_LENGTH DD 640*480*3+36h ;文件总长度,包括文件头

D_RESERVED DD ? ;reserved

D_OFFSET DD 36h ;数据区开始位置

D_BISIZE DD 28h ;bit map info' head length

D_WIDTH DD 640 ;图形的宽度(单位象素)

D_HEIGHT DD 480 ;图形的高度(单位象素)

D_PLANES DW 1 ;图形的平面数

D_BIT DW 24 ;颜色位数

D_COMPRESS DD 0 ;压缩方式(0为不压缩)

D_SIZE DD 640*480*3 ;数据长度

D_XPPM DD 0c00h ;pixels per meter (x)

D_YPPM DD 0c00h ;pixels per meter (y)

D_CLRUSED DD 0 ;color used

D_CLRIMP DD 0 ;important color index

BMP_HEAD_END EQU THIS BYTE

;----------------------------------------------------------------

HANDLE DW ?

FILE_NAME DB 'test.bmp',0

LINE_BUF DB 640*3 dup (0)

D_RED DB 0ffh

D_GREEN DB 0

D_BLUE DB 0

install:

mov ah,3ch ;建立文件

xor cx,cx

mov dx,offset file_name

int 21h

jnb cre_ok

int 20h

cre_ok:

mov handle,ax

mov ah,40h ;写入文件头

mov bx,handle

mov cx,offset bmp_head_end-offset bmp_head

mov dx,offset bmp_head

int 21h

mov cx,480 ;写入 480 行数据

xor bp,bp

b_lop:

push cx

mov ax,bp

inc bp

cmp ax,160

jb b1

cmp ax,320

jb b2

b3:

sub ax,320

mov si,offset d_blue

mov di,offset d_red

jmp short b4

b2:

sub ax,160

mov si,offset d_green

mov di,offset d_blue

jmp short b4

b1:

mov si,offset d_red

mov di,offset d_green

b4:

mov cx,0ffh

mul cx

mov cx,160 ;160

div cx

mov byte ptr ds:[si],0ffh

sub byte ptr ds:[si],al

mov byte ptr ds:[di],al

mov cx,640

mov di,offset line_buf

cld

b_lop1:

mov al,d_red

stosb

mov al,d_green

stosb

mov al,d_blue

stosb

loop b_lop1

mov ah,40h

mov bx,handle

mov cx,640*3

mov dx,offset line_buf

int 21h

pop cx

loop b_lop

mov ah,3eh ;关闭文件

int 21h

int 20h

CODE ENDS

END START

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 11:44:35

OCR识别预处理优化:CRNN输入图像增强技巧

OCR识别预处理优化:CRNN输入图像增强技巧 📖 技术背景与问题提出 在现代文档数字化、自动化信息提取和智能办公场景中,OCR(光学字符识别)技术已成为不可或缺的一环。无论是发票扫描、证件识别,还是街景文字…

作者头像 李华
网站建设 2026/7/1 11:44:35

计算机毕设java大学生实习实训管理系统 基于Java的大学生实习与实践管理平台开发 Java技术驱动的大学生实训管理系统设计与实现

计算机毕设java大学生实习实训管理系统yxi319(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网技术的飞速发展,数字化管理已成为教育领域的必然趋势。传统的…

作者头像 李华
网站建设 2026/7/1 11:44:37

揭秘 Windows 木马提权:技术原理、演进趋势与防护体系构建

在数字化时代,Windows系统作为全球应用最广泛的桌面与服务器操作系统,始终是网络攻击的核心目标。木马提权作为恶意攻击链条中的关键环节,其本质是攻击者通过技术手段突破系统权限边界,从普通用户权限升级至管理员(Adm…

作者头像 李华
网站建设 2026/7/1 16:22:15

ESP32S3开发板深度解析:AI交互新纪元的硬件基石

ESP32S3开发板深度解析:AI交互新纪元的硬件基石 【免费下载链接】xiaozhi-esp32 Build your own AI friend 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 在智能硬件快速发展的今天,Movecall-Moji墨迹板以其独特的设计理念和…

作者头像 李华
网站建设 2026/7/1 15:51:10

如何快速掌握7-Zip:新手用户的完整实战指南

如何快速掌握7-Zip:新手用户的完整实战指南 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 在数据压缩和文件管理的日常工作中,高效的工具…

作者头像 李华
网站建设 2026/7/1 22:34:06

突破性OBS回放插件:3分钟掌握实时精彩重播的完整攻略

突破性OBS回放插件:3分钟掌握实时精彩重播的完整攻略 【免费下载链接】obs-replay-source Replay source for OBS studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-replay-source 你是否曾在直播中错过精彩瞬间?是否希望能在教学演示中即…

作者头像 李华