• 注册
  • 关于作者
    企业认证:趣记站长
    关注 6 粉丝 4 喜欢 9 内容 992
    江西省·南昌市
    聊天 送礼
    • 查看作者
    • 如何产生一个BMP文件

      BMP 文件是一种常用的图像文件格式,本文的例子程序产生一个简单的 640x480 24 bit 颜色的 BMP 文件。BMP 文件的格式分两部分,第一部分为文件头,

      检测DOS程序执行的目录
      用MASM32编程获取并显示WinRAR的路径 ,MASM-两个16位二进制数减法模拟,一个旋转的3D箱子(动画),用汇编破解cmos密码,真正意义上的前台窗口切换,检测DOS程序执行的目录,如何产生一个BMP文件,图形显示方式屏幕的保存和恢复,高级语言反汇编程序的函数调用过程,汇编语言的未来展望,定时器时间数据转换子程序分析,汇编语言命令参数程序的编写,win32asm原理,掀起硬盘主引导扇区的神秘面纱
      汇编语言

      具体定义见源程序,第二部分为数据区,紧接着文件头存放。

      源程序:

      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

      检测DOS程序执行的目录
      用MASM32编程获取并显示WinRAR的路径 ,MASM-两个16位二进制数减法模拟,一个旋转的3D箱子(动画),用汇编破解cmos密码,真正意义上的前台窗口切换,检测DOS程序执行的目录,如何产生一个BMP文件,图形显示方式屏幕的保存和恢复,高级语言反汇编程序的函数调用过程,汇编语言的未来展望,定时器时间数据转换子程序分析,汇编语言命令参数程序的编写,win32asm原理,掀起硬盘主引导扇区的神秘面纱
      汇编语言

    • 0
    • 0
    • 0
    • 63
    • 单栏布局 侧栏位置: