3.3让我们直接对显示器说点什么吧

简介: 3.3让我们直接对显示器说点什么吧

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显存,显卡,显示器

显存是显卡提供给我们的接口。

显存地址分布

![请添加图片描述](https://ucc.alicdn.com/images/user-upload-01/08c577ae003e4de2881d21504355b62b.png

a431696113714067994fd1c08fba74d6.png


上面表示的是显存里面地址对应的各种模式。

在显示器上显示一个字符需要两个byte位,0-8位用来进行字符本体的描述,9-15位用来进行字体颜色等属性的演示。

如图所示:

3ae1bc6b3db347369fdb55045a74df65.png


65e16acbffe84243a308c7fed24ea3be.png


3.3.4改进的MBR,直接操作显卡

;主引导程序 
;
;LOADER_BASE_ADDR equ 0xA000 
;LOADER_START_SECTOR equ 0x2
;------------------------------------------------------------
SECTION MBR vstart=0x7c00         
   mov ax,cs      
   mov ds,ax
   mov es,ax
   mov ss,ax
   mov fs,ax
   mov sp,0x7c00
   mov ax,0xb800
   mov gs,ax
; 清屏
;利用0x06号功能,上卷全部行,则可清屏。
; -----------------------------------------------------------
;INT 0x10   功能号:0x06     功能描述:上卷窗口
;------------------------------------------------------
;输入:
;AH 功能号= 0x06
;AL = 上卷的行数(如果为0,表示全部)
;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


目录
相关文章
|
7月前
|
Windows
显示器设置
显示器设置
89 2
|
6月前
把电脑显示器当作另一个视频输出设备的显示器
把电脑显示器当作另一个视频输出设备的显示器
|
编解码 数据挖掘 iOS开发
一台主机外接两台显示器
一台主机外接两台显示器
787 4
|
10月前
|
编解码
一个简单的获取显示器长宽和显示器分辨的代码
一个简单的获取显示器长宽和显示器分辨的代码
69 11
|
10月前
MacBook pro今天开机屏幕不亮了,其它什么都好的,键盘也亮的,声音软件都好的...
MacBook pro今天开机屏幕不亮了,其它什么都好的,键盘也亮的,声音软件都好的...
382 2
触摸屏模拟按键
该项目较为简单,功能需求是用触摸屏模拟20个按键,按下一次打开继电器,再次按下关闭继电器,最多可以同时打开三个,主页面能够显示总电流I。
128 1
|
存储 编解码 iOS开发
显示器相关
显示器相关
110 0
|
缓存 编解码 API
ZYNQ-使用HDMI显示器进行VDMA彩条显示测试
ZYNQ-使用HDMI显示器进行VDMA彩条显示测试
361 0
ZYNQ-使用HDMI显示器进行VDMA彩条显示测试
|
存储 人工智能 物联网
一个屏幕还不够!搭载翻转副屏的电视了解一下
随着彩电行业越来向消费电子领域靠拢,电视机的外观设计、形态创新越来越被厂商们所重视,近几年出现了采用不少新形态设计的电视,让人耳目一新。
342 0
一个屏幕还不够!搭载翻转副屏的电视了解一下