您的位置:IT教程网首页>操作系统教程>dos>DOS下看真彩BMP位图的小程序

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


asmint10h


pi100:
asmcmpbx,100h
asmjnzpi101

asmmovdx,640
asmjmpwrite_256


pi101:
asmcmpbx,101h
asmjnzpi103

asmmovdx,640
asmjmpwrite_256



pi103:


您正在看的DOS教程是:DOS下看真彩BMP位图的小程序。
asmcmpbx,103h
asmjnzpi105

asmmovdx,800
asmjmpwrite_256



pi105:
asmcmpbx,105h
asmjnzexit_256

asmmovdx,1024

write_256:
asmmovax,0a000h
asmmoves,ax
asmmovax,wordptr[y]
asmmuldx
asmaddax,wordptr[x]
asmadcdl,0
asmmovdi,ax

asmmovax,4f05h
asmmovbx,0
asmint10h

asmmovcl,byteptr[color]
asmmovbyteptres:[di],cl


exit_256:
asmpopdi
asmpopes

retur
}
[/code:1:9253783525]


gl.asm底层画点函数要用TASM编译,不过有上边的嵌入式汇编这个可以不用了

[code:1:9253783525]
.386

public_init
public_Demo
public_Pixel16HiC
public_Pixel24TrC
public_Pixel256C


_ATTRIstruc

MODE_ATTRDW?
WIN_A_ATTRDB?
WIN_B_ATTRDB?
WIN_GRANDB?
WIN_SIZEDW?
WIN_A_SEGDW?
WIN_B_SEGDW?
WIN_FUNC_PTRDD?
LINE_BYTEDW?

_ATTRIends



mpushamacro
pushax
pushcx
pushdx
pushbx
push
push
pushsi
pushdi
endm


mpopamacro
popdi
popsi
pop
pop
popbx
popdx
popcx
popax
endm


DGROUPgroup_DATA,_




extrn_printf:far




_TEXTsegmentuse16bytepublic'code'
aumecs:_TEXT,ds:DGROUP


;初始化图型模式
;入口参数:显示模式压入?

_initprocfar

enterw0,0
movbx,[ 6]
movax,4f02h
int10h
leavew
ret

_initendp


;画点



_Pixel24TrCprocfar

enterw0,0
pushes
pushdi

movax,4f03h
int10h

pi112:cmpbx,112h
jnzpi115

movdx,640
jmpwrite_24t


pi115:cmpbx,115h
jnzpi118

movdx,800
jmpwrite_24t

pi118:cmpbx,118h
jnzTr_exit

movdx,1024

write_24t:movax,0a000h
moves,ax
movax,wordptr[ 12]
muldx
movbx,ax
movcx,dx
addax,bx
adcdx,cx
addax,bx
adcdx,cx
addax,bx
adcdx,cx

movbx,wordptr[ 10]
addbx,wordptr[ 10]
addbx,wordptr[ 10]
addbx,wordptr[ 10]
addax,bx
adcdx,0
movdi,ax

movax,4f05h
movbx,0
int10h

movcx,wordptr[ 6]
movwordptres:[di],cx
adddi,2
movcx,wordptr[ 8]
movwordptres:[di],cx

Tr_exit:popdi
popes

leavew
ret

_Pixel24TrCendp




_Pixel16HiCprocfar

enterw0,0
pushes
pushdi

movax,4f03h
int10h

pi110:cmpbx,110h
jnzpi111

movdx,640
jmpwrite_16h



pi111:cmpbx,111h
jnzpi113

movdx,640
jmpwrite_16h



pi113:cmpbx,113h
jnzpi114

movdx,800
jmpwrite_16h


pi114:cmpbx,114h
jnzpi116

movdx,800
jmpwrite_16h


pi116:cmpbx,116h
jnz


您正在看的DOS教程是:DOS下看真彩BMP位图的小程序。pi117

movdx,1024
jmpwrite_16h


pi117:cmpbx,117h
jnzHi_exit

movdx,1024


write_16h:movax,0a000h
moves,ax
movax,wordptr[ 10]
muldx
shlax,1
jca1
shldx,1
jmpcont
a1:shldx,1
incdx

cont:shlwordptr[ 8],1
addax,wordptr[ 8]
adcdx,0
movdi,ax

movax,4f05h
movbx,0
int10h

movcx,wordptr[ 6]
movwordptres:[di],cx

Hi_exit:popdi
popes

leavew
ret

_Pixel16HiCendp




_Pixel256Cprocfar

enterw0,0
pushes
pushdi


movax,4f03h
int10h


pi100:cmpbx,100h
jnzpi101

movdx,640
jmpwrite_256

pi101:cmpbx,101h
jnzpi103

movdx,640
jmpwrite_256



pi103:cmpbx,103h
jnzpi105

movdx,800
jmpwrite_256



pi105:cmpbx,105h
jnzexit_256

movdx,1024

write_256:movax,0a000h
moves,ax
movax,wordptr[ 10]
muldx
addax,wordptr[ 8]
adcdl,0
movdi,ax

movax,4f05h
movbx,0
int10h

movcl,byteptr[ 6]
movbyteptres:[di],cl


exit_256:popdi
popes

leavew
ret

_Pixel256Cendp



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

;出口参数dx:ax=转换十进数
B_Oprocnear

enterw5,0
pushes
pushdi
pushsi
movbx,10
movcx,5