1.显示原理
A. 屏幕上的内容=显存中的数据
2 8086CPU各地址空间
A. 主存储器地址空间:00000-9FFFF,640K
B. 显存地址空间:A0000-BFFFF,128K,其中B8000H~BFFFFH共32K的空间是80列 * 25行彩色字符模式第 0页的显示缓冲区。
C. 各类ROM地址空间:C0000-FFFFF,256K
D. 显示缓冲区结构:
F. 用E命令直接修改内存的值示例
解决:十六进制41就是字符A,占低位字节。
02转为二进制就是:0000 0010,1代表G,也就是green,所以显示为黑底绿色。RGB(111)为白色,RGB(000)为黑色。
其它依次类推。
G. 编程序,在屏幕的中间显示白底蓝字
assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!'
datasg ends
codesg segment
start:
;初始化寄存器
mov ax,datasg
mov ds,ax
mov ax,0B800H ;显存地址
mov es,ax
mov si,0
;显示器是80列,每列2字节,共160字节,共25行,160 * 12 正好垂直居中
;db 'welcome to masm!'是16个字符,每个字符占2个字节(1个用于显示,1个用于属性),共32字节
;因为每行是160字节,所以80 - 16正好水平居中
mov di,160*12+80-16
;显示字符串
mov cx,16 ;循环16次
w:mov al,[si]
mov es:[di],al ;低位字节放字符
inc di
mov al,71H ;71H转为二进制是01110001,也就是 白底蓝字
mov es:[di],al ;高位字节放显示属性
inc si
inc di
loop w
;程序结束
mov ax,4c00h
int 21h
codesg ends
end start
显示效果: