3.3让我们直接对显示器说点什么吧
在MBR环节我们利用BIOS提供的0x10中断来实现的滚屏和打印字符
3.3.1CPU如何与外设通信-IO接口
IO作用就是在 CPU 和外设之间相互爹故协调转换, 如 CPU和外设速度不匹配, 它就是变速箱, CPU和外设信号不通用它就是翻译机。
IO接口是连接 CPU与外部设备的逻辑控制部件, 既然称为逻辑, 就说明可分为硬件和软件两部分。
硬件部分处理的是协调CPU和外设之间的种种不匹配。
软件部分指的是控制接口电路工作的驱动程序以及完成内部数据传输的所需要的程序。
IO接口功能:
1.设置数据缓冲 解决 CPU 与外设的速度不匹配
2. 设量信号电平转换电路
3. 设置数据格式转换
4. 设置时序控制电路来同步 CPU 和外部设备
5. 提供地址译码
IO接口要被设计成通用寄存器的方式同CPU进行通信,在IO接口中的通用寄存器一般称之为端口。
in指令用于从端口中读取数据, 其一般形式是=
(1) in al,dx
(2) inax,dx
out指令用于往端口中写数据, 其一般形式是
(l) out dx,a1.
(2) out dx,ax
(3) out 立即数,al
(4) out 立即数,ax
3.3.2显卡概述
在实模式下通过中断向量表进行对显示屏操作,也是对显示屏中的显卡操作。而在未来保护模式下并不会有中断向量表。所有我们后面会直接对显示屏的显存进行操作。
3.3.3显存,显卡,显示器
显存是显卡提供给我们的接口。
显存地址分布
 ;BH = 上卷行属性 ;(CL,CH) = 窗口左上角的(X,Y)位置 ;(DL,DH) = 窗口右下角的(X,Y)位置 ;无返回值: mov ax, 0600h mov bx, 0700h mov cx, 0 ; 左上角: (0, 0) mov dx, 184fh ; 右下角: (80,25), ; 因为VGA文本模式中,一行只能容纳80个字符,共25行。 ; 下标从0开始,所以0x18=24,0x4f=79 int 10h ; int 10h ; 输出背景色绿色,前景色红色,并且跳动的字符串"1 MBR" mov byte [gs:0x00],'1' mov byte [gs:0x01],0xA4 ; A表示绿色背景闪烁,4表示前景色为红色 mov byte [gs:0x02],' ' mov byte [gs:0x03],0xA4 mov byte [gs:0x04],'M' mov byte [gs:0x05],0xA4 mov byte [gs:0x06],'B' mov byte [gs:0x07],0xA4 mov byte [gs:0x08],'R' mov byte [gs:0x09],0xA4 jmp $ ; 通过死循环使程序悬停在此 times 510-($-$$) db 0 db 0x55,0xaa
关键字byte表示操作数的数据宽度为1
关键字word表示操作数的数据宽度为2
关键字dword表示操作数的数据宽度为4