📄 99_bmpshow_ref_2.asm
字号:
.model small
data segment word PUBLIC 'DATA'
bmpfilename BYTE 'D:\test.bmp',0
file_handle WORD ?
color_size BYTE 16
palette_buffer BYTE 64 DUP(?),'$'
pixel_data_buffer BYTE 3 DUP(?)
;temp WORD ?
msg_open_err BYTE 'Open BMP file error. Please try again!.','$'
data ENDS
stack SEGMENT WORD PUBLIC 'STACK'
DW 100 DUP(0)
STACK ENDS
CODE SEGMent word public 'code'
assume cs:code,DS:data,ss:stack
main proc far
mov ax,data
mov ds,ax
;------------------------------------------------------------------
openFile: ;打开bmp文件,保存文件句柄
lea dx,bmpfilename
mov al,0
mov ah,3dh
INT 21h
jc openFileError
mov file_handle,ax
mov ax,0012h ;设置显示模式640 480 16色VGA
INT 10H
mov bx,file_handle ;移动文件指针到文件头
mov dx,36h
xor cx,cx
mov ax,4200h
INT 21H
MOV AH,3FH
MOV DX,OFFSET PIXEL_DATA_BUFFER
MOV BX,FILE_HANDLE
MOV CX,3
INT 21H
;----------------------------------------------------------------------
MOV AH,02H
MOV BH,0
MOV DX,0000H
INT 10H
MOV AH,10H
mov AL,10H
XOR BX,BX
MOV DH,BYTE PTR PIXEL_DATA_BUFFER+2
MOV CH,BYTE PTR PIXEL_DATA_BUFFER+1
MOV CL,BYTE PTR PIXEL_DATA_BUFFER
MOV DX,OFFSET PIXEL_DATA_BUFFER
INT 10H
openFileError:
EXIT:
mov ah,00h
int 16h
;mov ax,0003h ;在WINDOWS下不用此结束后会产生花屏
;int 10h
mov ax,4c00h
INT 21H
main ENDP
code ENDS
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -