汇编直接在显存地址写字符显示

汇编器:nasm
虚拟机:bochs
操作系统:mac osx

将汇编代码写入磁盘的0柱面,0磁道,1扇区,开机启动后bios会自动加载这512字节到内存0x7c00处,然后跳到这开始执行。

在屏幕上显示字符,可以直接写到显存里,就直接在屏幕上显示出来了,显存地址从0x8000开始,每个字符占两个字节,一个字节存放字符,一个字节存放这个字节的显示属性。
具体可参考王爽汇编语言实验9。

;在屏幕显示字符
;不过不用bios中断,而是直接在显存里写
;显存地址0xb8000-0xbffff共32KB的空间,为80*25彩色字符模式的显示缓冲区,向这个地址空间写入数据,写入的内容立即出现在显示器上
;25行*80个字符,字符一个字节,属性一个字节
;一屏80*25*2=4000Bytes
;
;属性
;7   6 5 4  3  2 1 0
;BL  R G B  I  R G B
;   ------     ----- 
;闪烁 背景 高亮 前景

BOOTSEG equ 0x7c0
VIDEO equ 0xb800

section .text vstart=0

jmp BOOTSEG:start

start:
    mov ax, VIDEO
    mov ds, ax

    mov byte [0], 'a'
    mov byte [1], 0x42

    jmp $

times 510-($-$$) db 0
dw 0xaa55
make
bochs
b 0x0
c

下图左上角红底绿字的’a’:
汇编直接在显存地址写字符显示_第1张图片

github videochace源码

你可能感兴趣的:(汇编,操作系统,Linux内核)