从实模式到保护模式(1)

本文详细介绍了从开机到BIOS的启动流程,包括实模式的限制、BIOS的检测与中断向量表设置,以及主引导扇区的作用。重点讲解了如何在文本模式下操作显存,展示了如何在Bochs中进行调试,以显示字符loveyou的过程。
摘要由CSDN通过智能技术生成

一、从开机到BIOS

何为实模式,简单讲就是逻辑地址等于物理地址的模式。
在这里插入图片描述
Intel 8086时期只有20条地址线,也就是说若按字节寻址的话咱们的发挥空间就只有1MB,用16进制表示就是从0x00000到0xFFFFF,以下给出实模式下的地址分布
在这里插入图片描述
在这里插入图片描述
BIOS其实也是指令流,也是个程序,所以肯定也得有入口地址,这个入口地址便是0xFFFF0。一开机,入口地址被初始化为0xFFFF0,这是因为开机后寄存器初始化情况如下图所示,只有CS被置为FFFF,其他都是0,
在这里插入图片描述
也就是说,一开机就执行下图所示指令:
在这里插入图片描述
8086采用小端方式,段地址:0xF000,偏移地址:0xE05B
从0xFFFF0开始的5个字节共同构成jump指令。
执行完上述jmp指令后,寄存器变化情况如下图:
在这里插入图片描述
接下来BIOS所做的事情就是各种检测内存显卡等外设信息,然后在0x000到0x3ff处建立中断向量表。
在BIOS做的最后一件事就是将硬盘的主引导扇区读到0x7C00处,然后用一个跳转指令跳到那里执行。如下图黄色部分所示:
在这里插入图片描述

二、主引导扇区MBR

MBR大小为512B,上一小节说到BIOS做的最后一件事是将主引导扇区读到0x7C00处,在此之前,BIOS需要检查一下该主引导扇区是否有效。有效的主引导扇区其最后两个字节必须是0x55和0xAA。

三、在屏幕上显示文本

工程师们将显卡的工作模式分成两种。一种是文本模式,一种是图像模式。而且他们的显存也是分开的。有文本模式下的显存和图像模式下的显存。在文本模式下,显存的内容是字符的代码。在图像模式下显存的内容是像素的颜色。
我们可以将字符的编码放到显存里。比如在这里,我们依次存放了字符h,字符e和字符l的编码。在显卡上有字符发生器。这个东西可以根据字符的编码来控制屏幕上的像素。是它们共同组成字符的轮廓。如下图所示:
在这里插入图片描述

由于历史的原因,所有在个人计算机上使用的显卡。在加电自检之后,都会把自己初始化到80×25的文本模式。在这一种模式下。屏幕上可以显示25行,每行80个字符,所以叫做80×25的文本模式。那么,这样的话,每屏总共可以显示2000个字符。所以一直以来。从从地址0xB8000一直到0XBFFF的这一部分空间,是留给显卡的。
在这里插入图片描述

3.1 准备访问文本模式下的显存

在这里插入图片描述
对段寄存器的修改可以通过上述两种方式,而不能直接将数写进段寄存器,如 mov ds, 0xB800 ,这种写法是错误的。

ASCII字符集的编码:

在这里插入图片描述

字符的属性

在这里插入图片描述
在这里插入图片描述

显存如下图所示:

在这里插入图片描述
在这里插入图片描述

start:
        mov ax, 0xb800  ;段地址b800
        mov ds, ax
	   
	     mov byte [0x00],0x4c;ASCII方式
         mov byte [0x01],0x04
         mov byte [0x02],'o' ;单引号加字符方式
         mov byte [0x03],0x04
         mov byte [0x04],'v'
         mov byte [0x05],0x04
         mov byte [0x06],'e'
         mov byte [0x07],0x04
         mov byte [0x08],' '
         mov byte [0x09],0x04
         mov byte [0x0a],'y'
         mov byte [0x0b],0x04
         mov byte [0x0c],"o"
         mov byte [0x0d],0x04
         mov byte [0x0e],'u'
         mov byte [0x0f],0x04
		 jmp 0x0000:0x7c00
current:
        times 510-(current-start) db 0
		db 0x55,0xaa

3.2 在Bochs上调试

在这里插入图片描述
b 0x7c00 命令相当于在7c00处下断点
c 继续执行
在这里插入图片描述
s 下一步
n 相当于显卡的下一步

在这里插入图片描述
最后写出 love you如上图所示

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木林_森林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值