动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   安全 → 阅读文章

 如何产生一个BMP文件

作者来源: 
阅读 1313 人次 , 2006-4-26 15:38:00 

概述:

     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	?		;reservedD_OFFSET	DD	36h		;数据区开始位置D_BISIZE	DD	28h		;bit map info' head lengthD_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 usedD_CLRIMP	DD	0		;important color indexBMP_HEAD_END	EQU	THIS BYTE;----------------------------------------------------------------
HANDLE		DW	?FILE_NAME	DB	'test.bmp',0LINE_BUF	DB	640*3 dup (0)D_RED		DB	0ffhD_GREEN		DB	0D_BLUE		DB	0
install:		mov	ah,3ch		;建立文件		xor	cx,cx		mov	dx,offset file_name		int	21h		jnb	cre_ok		int	20hcre_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,bpb_lop:		push	cx		          
		mov	ax,bp		inc	bp		cmp	ax,160		jb	b1		cmp	ax,320		jb	b2b3:		sub	ax,320		mov	si,offset d_blue		mov	di,offset d_red		jmp	short b4b2:		sub	ax,160		mov	si,offset d_green		mov	di,offset d_blue		jmp	short b4b1:		mov	si,offset d_red		mov	di,offset d_greenb4:		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		cldb_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

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:破解KeyGenMe(CoDe_InSiDe)
· 下一篇:破解noodles-crackme2.5
· 利用IIS日志追查网站入侵者
· 试过这种超另类的杀毒方法么?
· 给银行的网络安全打个包
· C#究竟能给开发者带来什么
· Checkpoint的安装流程


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077