📄 showbmp.asm
字号:
;功能:打开bmp图片
;入口参数:ax--y,bx---x 为图片位置的左下角坐标,dx为文件名指针
;si为显示方式 1-P_COPY,2- P_AND, 3-- P_OR, 4- P_XOR
;出口参数:无
include macro.lib
extern writepoint:far
public showbmp
data segment public 'data'
filecode dw 0
buf db 3*1024 dup(0)
picwidth dd 0
x dw 0
y dw 0
data ends
;===============================================
code segment 'code'
assume cs:code,ds:data
.386
;显示bmp图片
showbmp proc far
pusha
push ds ;保护现场
mov x,bx
mov y,ax
mov bx,data
mov ds,bx
mov ah,3dh
mov al,0
int 21h
jc exit
mov filecode,ax ; 保存文件代号
readfile filecode, buf, 54
jnc next
closefile filecode ;读文件失败
jmp exit
next: lea bx,buf ;读文件头信息
mov eax,18[bx] ;文件宽度
mov picwidth,eax
mov ax,x
cwde
mov ebx,eax ;设置起始点
mov ax,y
add picwidth,ebx
lopa: push ax
readfile filecode ,buf,3*1024
or ax,ax ;如果ax为零,则文件已经读完
jz finish
xor dx,dx
mov cx,3
div cx
mov cx,ax
pop ax
lea di,buf
lopb: RGB 2[di],1[di],0[di] ;颜色转换
call writepoint ;画一个像素
inc ebx
cmp ebx,picwidth ;换行
jne next1
dec ax
mov bx,x
next1: add di,3 ;读另一个象素
loop lopb
jmp lopa
finish:
pop ax
closefile filecode
pop ds
exit: popa
ret
showbmp endp
code ends
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -