操作系统真象还原第三章

本文详细介绍了操作系统的实模式,包括CPU的工作原理、寄存器、内存分段、寻址方式,以及实模式下的指令如ret、call、jmp等。此外,还探讨了CPU与外设通信的IO接口,显卡、显示器的工作原理,以及硬盘的基本操作和历史。内容涵盖实模式的起源、寻址方式、寄存器使用和硬件交互,是理解操作系统底层运作的宝贵资料。
摘要由CSDN通过智能技术生成

3.1 地址、section、vstart 浅尝辄止

3.1.1 什么是地址

地址描述各种符号在源程序中的位置,是源代码中各符号偏移文件开头的距离。

编译器的工作就是给各符号编址。

3.1.2 什么是 section

编译器提供的关键字 section 只是为了让程序员在逻辑上将程序划分成几个部分。

3.1.3 什么是 vstart

section 用 vstart= 来修饰后,可以被赋予一个虚拟起始地址。

mbr 用 vstart=0x7c00 来修饰的原因,是开发人员知道 mbr 要被加载器(BIOS)加载到物理地址 0x7c00,mbr 中后续的物理地址都是 0x7c00+。

3.2 CPU 的实模式

3.2.1 CPU 的工作原理

CPU 大体上可以划分为 3 个部分:

  • 控制单元。由指令寄存器 IR、指令译码器 ID、操作控制器 OC 组成。
  • 存储单元。CPU 内部的 L1、L2缓存及寄存器。
  • 运算单元。负责算术运算(加减乘除)和逻辑运算(比较、移位)。

3.2.2 实模式下的寄存器

CPU 中的寄存器大致上分为两大类:

  • 对程序员不可见的寄存器。比如全局描述符表寄存器 GDTR、中断描述符表寄存器 IDTR、局部描述符表寄存器 LDTR、任务寄存器 TR、控制寄存器 CR0~3、指令指针寄存器 IP、标志寄存器 flags、调试寄存器 DR0~7。
  • 对程序员可见的寄存器。比如段寄存器、通用寄存器。

实模式下,默认用到的寄存器都是 16 位宽的。

CPU 用“段基址:段内偏移地址”的形式访问内存。

段基址在实模式下要乘以 16,在保护模式下只是个选择子,但其作用就是指定一片内存的起始地址。

在这里插入图片描述

IP 寄存器是不可见寄存器,CS 寄存器是可见寄存器。

无论是实模式还是保护模式,通用寄存器有 8 个:

  • AX
  • BX
  • CX
  • DX
  • SI
  • DI
  • BP
  • SP

在这里插入图片描述

通用寄存器:

寄存器 助记名称 功能描述
ax 累加器 常用于算术运算、逻辑运算、保存与外设输入输出的数据
bx 基址寄存器 常用于存储内存地址
cx 计数器 常用于循环指令中的循环次数
dx 数据寄存器 通常情况下只用于保存外设控制器的端口号地址
si 源变址寄存器 常用于字符串操作中的数据源地址
di 目的变址寄存器 常用于字符串操作中的数据目的地址
sp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值