news 2026/4/18 8:13:53

汇编语言全接触-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/6 18:41:33

AI机器人快速构建终极指南:从零打造会说话的智能伙伴

AI机器人快速构建终极指南:从零打造会说话的智能伙伴 【免费下载链接】xiaozhi-esp32 Build your own AI friend 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 你是否梦想拥有一个能听懂指令、会跳舞互动的AI机器人伙伴?面对…

作者头像 李华
网站建设 2026/4/15 20:27:49

ModelScope模型部署终极指南:从零开始快速搭建AI开发环境

ModelScope模型部署终极指南:从零开始快速搭建AI开发环境 【免费下载链接】modelscope ModelScope: bring the notion of Model-as-a-Service to life. 项目地址: https://gitcode.com/GitHub_Trending/mo/modelscope 还在为AI模型本地部署的复杂环境配置而头…

作者头像 李华
网站建设 2026/3/28 7:14:16

中小企业AI选型指南:低成本OCR识别系统推荐

中小企业AI选型指南:低成本OCR识别系统推荐 在数字化转型浪潮中,OCR(光学字符识别)技术已成为中小企业提升办公自动化水平的关键工具。无论是发票报销、合同归档,还是门店信息录入,传统人工抄录方式效率低、…

作者头像 李华
网站建设 2026/4/16 16:36:50

SVGcode完全指南:快速掌握免费矢量图转换技巧

SVGcode完全指南:快速掌握免费矢量图转换技巧 【免费下载链接】SVGcode Convert color bitmap images to color SVG vector images. 项目地址: https://gitcode.com/gh_mirrors/sv/SVGcode SVGcode是一款功能强大的免费开源工具,专门用于将彩色位…

作者头像 李华
网站建设 2026/4/15 9:31:52

AI+AR实时合成:快速原型开发的最佳实践

AIAR实时合成:快速原型开发的最佳实践 为什么需要AIAR实时合成技术 作为一名AR应用开发者,你是否遇到过这样的困境:想要实现实时AI背景替换功能,但在真机上调试时发现模型推理效率低下,迭代周期漫长?这正是…

作者头像 李华
网站建设 2026/4/18 7:56:41

无需AI专家:CRNN OCR快速部署方案

无需AI专家:CRNN OCR快速部署方案 📖 项目简介 在数字化转型加速的今天,OCR(光学字符识别)文字识别已成为文档自动化、票据处理、信息提取等场景的核心技术。无论是扫描件转文本、发票结构化,还是街景路牌…

作者头像 李华