新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > DOS教程 > 正文:DOS下看真彩BMP位图的小程序

DOS下看真彩BMP位图的小程序

新客网 XKER.COM 2006-10-03 来源: 收藏本文



;画点



_Pixel24TrC proc far

enterw 0,0
push es
push di

mov ax,4f03h
int 10h

pi112: cmp bx,112h
jnz pi115

mov dx,640
jmp write_24t


pi115: cmp bx,115h
jnz pi118

mov dx,800
jmp write_24t

pi118: cmp bx,118h
jnz Tr_exit

mov dx,1024

write_24t: mov ax,0a000h
mov es,ax
mov ax,word ptr [bp+12]
mul dx
mov bx,ax
mov cx,dx
add ax,bx
adc dx,cx
add ax,bx
adc dx,cx
add ax,bx
adc dx,cx

mov bx,word ptr [bp+10]
add bx,word ptr [bp+10]
add bx,word ptr [bp+10]
add bx,word ptr [bp+10]
add ax,bx
adc dx,0
mov di,ax

mov ax,4f05h
mov bx,0
int 10h

mov cx,word ptr [bp+6]
mov word ptr es:[di],cx
add di,2
mov cx,word ptr [bp+8]
mov word ptr es:[di],cx

Tr_exit: pop di
pop es

leavew
ret

_Pixel24TrC endp




_Pixel16HiC proc far

enterw 0,0
push es
push di

mov ax,4f03h
int 10h

pi110: cmp bx,110h
jnz pi111

mov dx,640
jmp write_16h



pi111: cmp bx,111h
jnz pi113

mov dx,640
jmp write_16h



pi113: cmp bx,113h
jnz pi114

mov dx,800
jmp write_16h


pi114: cmp bx,114h
jnz pi116

mov dx,800
jmp write_16h


pi116: cmp bx,116h
jnz pi117

mov dx,1024
jmp write_16h


pi117: cmp bx,117h
jnz Hi_exit

mov dx,1024


write_16h: mov ax,0a000h
mov es,ax
mov ax,word ptr [bp+10]
mul dx
shl ax,1
jc a1
shl dx,1
jmp cont
a1: shl dx,1
inc dx

cont: shl word ptr [bp+8],1
add ax,word ptr [bp+8]
adc dx,0
mov di,ax

mov ax,4f05h
mov bx,0
int 10h

mov cx,word ptr [bp+6]
mov word ptr es:[di],cx

Hi_exit: pop di
pop es

leavew
ret

_Pixel16HiC endp




_Pixel256C proc far

enterw 0,0
push es
push di


mov ax,4f03h
int 10h


pi100: cmp bx,100h
jnz pi101

mov dx,640
jmp write_256

pi101: cmp bx,101h
jnz pi103

mov dx,640
jmp write_256



pi103: cmp bx,103h
jnz pi105

mov dx,800
jmp write_256



pi105: cmp bx,105h
jnz exit_256

mov dx,1024

write_256: mov ax,0a000h
mov es,ax
mov ax,word ptr [bp+10]
mul dx
add ax,word ptr [bp+8]
adc dl,0
mov di,ax

mov ax,4f05h
mov bx,0
int 10h

mov cl,byte ptr [bp+6]
mov byte ptr es:[di],cl


exit_256: pop di
pop es

leavew
ret

_Pixel256C endp



;入口参数: ax=要转换的二进制数

;出口参数 dx:ax=转换十进数
B_O proc near

enterw 5,0
push es
push di
push si
mov bx,10
mov cx,5
mov di,sp
mov ax,ss
mov es,ax

getover: div bx
add dl,30h
mov byte ptr es:[di],dl
dec cx
jz return
inc di
cmp ax,0
jnz getover
mov byte ptr es:[di],dl

return: xor dx,dx
xor ax,ax
std
mov si,di
relod: mov cx,4
lodsb
re: shl dx,1
shl ax,1
jnc d0
inc dx
d0: dec cx
jnz re

cmp si,sp
jnz relod

pop si
pop di
pop es
leavew
ret

B_O endp


_Demo proc far

enterw 0,0
push es
push di

mov ax,0a000h
mov es,ax
mov dx,1024
mov ax,word ptr [bp+12]
mul dx
mov bx,ax
mov cx,dx
add ax,bx
adc dx,cx
add ax,bx
adc dx,cx
add ax,bx
adc dx,cx

mov bx,word ptr [bp+10]
add bx,word ptr [bp+10]
add bx,word ptr [bp+10]
add bx,word ptr [bp+10]
add ax,bx
adc dx,0
; cmp ax,0fffdh
; jnbe exit_Tr

mov di,ax

mov ax,4f05h
mov bx,0
int 10h

mov cx,word ptr [bp+6]
mov word ptr es:[di],cx
add di,2
mov cx,word ptr [bp+8]
mov word ptr es:[di],cx

exit_Tr: pop di
pop es
leavew

ret

_Demo endp


_TEXT ends




_DATA segment use16 byte public 'data'

c@ label byte
db 37
db 63h
db 10
db 0

s@ label byte
db 37
db 73h
db 10
db 0

d@ label byte

标签:
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 阅读排行
  • 推荐阅读
  • 随机推荐