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
