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 + -
显示快捷键?