news 2026/4/22 13:36:44

汇编语言全接触-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/4/22 7:25:13

从零到发布:24小时用Z-Image-Turbo打造一个AI绘画小程序

从零到发布:24小时用Z-Image-Turbo打造一个AI绘画小程序 如果你正在参加黑客马拉松,或者想快速开发一个AI绘画应用,但时间紧迫不想被复杂的环境配置拖累,那么Z-Image-Turbo可能是你的理想选择。这款由阿里通义实验室开源的6B参数图…

作者头像 李华
网站建设 2026/4/22 13:35:47

CSANMT模型在学术论文翻译中的应用与效果评估

CSANMT模型在学术论文翻译中的应用与效果评估 📌 引言:AI 智能中英翻译服务的兴起与挑战 随着全球科研交流日益频繁,学术论文的跨语言传播需求急剧增长。中文研究成果需要精准、专业地转化为英文以进入国际期刊和会议体系,而传统…

作者头像 李华
网站建设 2026/4/16 13:49:04

百考通AI一键生成专业报告,让决策快人一步!

在当今这个“数据即资产”的时代,无论是企业高管、市场经理、产品经理,还是学术研究者和数据分析师,都深刻地明白一个道理:精准的数据洞察是驱动业务增长、优化运营效率、做出明智决策的核心引擎。然而,从海量原始数据…

作者头像 李华
网站建设 2026/4/17 21:51:26

Ryujinx Switch模拟器性能飞跃:3大核心维度深度优化实战手册

Ryujinx Switch模拟器性能飞跃:3大核心维度深度优化实战手册 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 还在为Ryujinx模拟器运行Switch游戏时的各种卡顿问题而苦恼吗&…

作者头像 李华
网站建设 2026/4/20 10:01:55

医学图像标注终极指南:用MONAI Label让AI帮你轻松搞定

医学图像标注终极指南:用MONAI Label让AI帮你轻松搞定 【免费下载链接】MONAILabel MONAI Label is an intelligent open source image labeling and learning tool. 项目地址: https://gitcode.com/gh_mirrors/mo/MONAILabel 还在为繁琐的医学图像标注发愁吗…

作者头像 李华
网站建设 2026/4/18 3:43:55

教育游戏开发:用Z-Image-Turbo快速生成游戏教学素材

教育游戏开发:用Z-Image-Turbo快速生成游戏教学素材 作为一名教育游戏开发者,我经常需要为不同学科设计大量定制化的教学图像。传统的美术资源制作流程既耗时又昂贵,直到我发现了阿里开源的Z-Image-Turbo模型——这个6B参数的图像生成工具能…

作者头像 李华