99_bmpshow.asm
来自「汇编语言 参考书 包含作业与答案 从入门到精通 通俗易懂」· 汇编 代码 · 共 85 行
ASM
85 行
.model small
data segment word PUBLIC 'DATA'
bmpfilename BYTE 'D:\Dos\ASMWork\bmp\setup.bmp',0
file_handle WORD ?
color_size BYTE 16
palette_buffer BYTE 64 DUP(?),'$'
pixel_data_buffer BYTE ?
;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
lea dx,palette_buffer ;读调色板数据
mov bx,file_handle
mov cx,64
mov ah,3fh
INT 21H
;jc readFileError
;----------------------------------------------------------------------
mov bx,file_handle
xor dx,dx
xor cx,cx
mov ax,4201h
INT 21H
lea dx,pixel_data_buffer ;读象素的数据
mov bx,file_handle
mov cx,1
mov ah,3fh
INT 21h
;jc readFileError
mov al,pixel_data_buffer
shl al,1
; jc isOver8
openFileError:
EXIT:
mov ax,4c00h
INT 21H
RET
main ENDP
code ENDS
end main
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?