您的位置:首页精文荟萃破解文章 → 如何产生一个BMP文件

如何产生一个BMP文件

时间:2004/10/15 1:02:00来源:本站整理作者:蓝点我要评论(0)

 

概述:

     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

    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程