操控显存输出字符串
在8086的内存地址结构中,B8000H~BFFFFH 这部分的内存区域为显存区域,一旦向这个地址空间写入数据cpu会从0号偏移地址开始读取数据然后显示输出,(每写入一次数据就从0开始读取一次)
代码:
start:
mov ax,0B800H
mov ds,ax
mov dl,'a'
mov ds:[0],dl
end start
在这块区域中,每个字符固定占用两个字节的空间,也就是ds:[0] 和ds:[1]存放一个字符的信息,前者存放字符具体的内容,后者存放字符对应的颜色
start:
mov ax,0B800H
mov ds,ax
mov dl,'a'
mov ds:[0],dl
mov dl,00000100B ;让字符以红色显示
mov ds:[1],dl
end start
字符颜色设置规则
00000000 ;用八个二进制位表示字符属性
从高往低数,第一个二进制位表示是否显示闪烁痕迹
第234个二进制位表示字符背景颜色,分别代表RGB
第5个二进制位表示字符是否高亮
第678个二进制位表示字符本身的颜色,分别代表RGB
由于cpu会从0号偏移地址开始读取数据然后显示输出,因此假如你直接在6号偏移地址写入字符数据,那么前面三个数据会以占位形式存在
start:
mov ax, 0B800H
mov ds, ax
mov di, 'a'
mov ds: [0], d1
mov d1,00000111B
mov ds: [6],d1;输出结果为" a"
end start