⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boot.asm

📁 boot.asm是用nasm汇编程序做的VESA显存模式驱动的写点 带有软盘驱动引导程序 用FloppyWriter.exe写主引导区
💻 ASM
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
	org	07c00h			; 告诉编译器程序加载到7c00处
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	call Display
	;;;;;;;;;;;;;;;;;;;;;;;;
	;;
	;;;;;;;;;;;;;;;;;;;;;;;
	mov cx,0800
LOPP:
	call SetPixel
	push ax
	mov ax,[X1]
	add ax,1
	mov [X1],ax
	pop ax
	loop LOPP
	;;;;;;;;;;;;;;;;;;;;;;;;
	;;
	;;;;;;;;;;;;;;;;;;;;;;;;
	jmp     $
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Display:
	mov ax,0x4f02
	mov bx,0x115
	int 10h
	ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SetPixel_Begin:
	mov ax,0xA000
	mov es,ax
	mov bx,0x0000
        ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SetPixel:
        ;;;;;;;;;;;;;;;;(800*y+x)
	mov  bx,[X1]
	sub  bx,1
	mov  ax,[Y1]
	sub  ax,0001
	mov  dx,0800
	mul  dx
	add  ax,bx
	mov  bx,4
	mul  bx
	mov  [color_pos],ax
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	call SetPixel_Begin
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	add bx,[color_pos]
        mov al,0x00         ;显存是每字节放RGBA四个的一个g
	mov [es:bx],al
	inc bx
	mov al,0x00         ;显存是每字节放RGBA四个的一个b
	mov [es:bx],al
	inc bx
	mov al,0xff         ;显存是每字节放RGBA四个的一个r
	mov [es:bx],al
	inc bx
	mov al,0x00         ;显存是每字节放RGBA四个的一个a
	mov [es:bx],al
	inc bx
        ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PutPixel:
	mov ax,0xA000
	mov es,ax
	mov bx,0x0000
        ;;连续写点,要在一子程序同时写
	mov ax,4
	mov dx,200
	mul dx
	mov cx,ax  ;;计数器--------200/4=800个像素
LOP:
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;;;MEM_0_green
        mov al,0x00         ;显存是每字节放RGBA四个的一个
	mov [es:bx],al
	inc bx
	;;;MEM_1_blue
	mov al,0x00         ;显存是每字节放RGBA四个的一个
	mov [es:bx],al
	inc bx
	;;;MEM_2_red
	mov al,0xff         ;显存是每字节放RGBA四个的一个
	mov [es:bx],al
	inc bx
	;;;MEM_3_aphle
	mov al,0x00         ;显存是每字节放RGBA四个的一个
	mov [es:bx],al
	inc bx
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	loop LOP    ;;cx=cx-1,当cx=0跳出循环
        ;;否则为写点一次,刷新一次
	ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
color_g     db  0x00         ;;db-----al <---> dw-----------ax
color_b     db  0x00
color_r     db  0x00
color_a     db  0x00
color_pos   dw  0
X1          dw  0001
Y1          dw  0010

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
times 	510-($-$$)	db	 0         ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -