显示原理
显示字符或者说是文本的程序,是经过cpu–>显存–>屏幕,这样的顺序到达屏幕的,其定义的是屏幕上的每一个像素点,从而达到整体显示的效果
内存分布图
从内存分布图中可以看到,使用文本模式显示,对应的内存空间是0xB8000~0xB7FFF,可以定义的是一个80X25字符的屏幕
字符显示属性
每一个字符占用两字节的空间定义,第一个字节是定义其颜色,第二个字节是字符的ASCLL码,其颜色定义图也如下所示
打印第一个字符
; mbr.asm
org 0x7c00
mov bx,0xb800
mov es,bx ;这两行的作用是将段地址寄存器定义为文本模式所对应的内存空间
mov ah,0x07 ; 0x07对应的二进制是0000 0111,对应的颜色属性是黑底白字
mov al,'Z' ; 这是低字节的地址空间,编译时会将Z转换为对应的ASCLL码
mov [es:0],ax ; 将ax的两个字节装入0xb8000
stop:
hlt ; 表示暂停,将cpu停留在最后的状态
jmp stop
times 510-($-$$) db 0
db 0x55,0xaa
编译后运行,可以看见qemu左上角第一个字符是Z