linux0.11 学习笔记1

加载启动区

按下开机键的那一刻,在主板上提前写死的固件程序 BIOS 会将硬盘中启动区的 512 字节的数据(0盘0道1扇区),原封不动复制到内存中的 0x7c00 这个位置,并跳转到那个位置进行执行

寄存器

cs代码段

cpu当前执行的代码所在内存的位置 由cs:ip配合指向,cs基址,ip偏移

ds

是一个 16 位的段寄存器,具体表示数据段寄存器。
实模式 :在内存寻址时充当段基址的作用
保护模式:段选择子:存储段描述符的索引
在这里插入图片描述
在这里插入图片描述

es

扩展段寄存器

ss

栈段基址

sp

栈顶
ss:sp

指令

mov

mov ax,[0x0001]

sub

sub a,b
a=a-b

rep

重复执行后面的指令
rep movw

movw 复制一个字(16位)

将ds:si处复制到es:di处 复制cs次数 一次复制1个字

jmpi

段间跳转指令
jmpi go,0x9000
跳转到0x9000:go 执行

go一个标签

编译成机器码就被编译成一个值,代表他的偏移地址
go:
mov ax,cs
mov ds,ax
最终go=mov ds,ax这段代码的所在内存地址

int

int 0x13中断读取磁盘 其次还需要配置参数
int 0x10 bios显示服务 执行完毕dx h 存储行号,l存储列号

lgdt 存储描述符

lss 栈顶指针指向

中断

中断发起后,CPU 会通过这个中断号,去寻找对应的中断处理程序的入口地址,并跳转过去执行,逻辑上就相当于执行了一个函数。

cli 关闭中断

磁盘数据读取

jnc

jnc ok_load_setup
跳转到ok_load_setup标签

模式的转换

16位实模式转拜年位32位保护模式

gbt 全局描述符表

存在gdtr寄存器中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

中断描述符表 idt

a20地址线

地址信号线20位宽度,变成30位可用

_pg_dir 页目录

TSS任务状态段描述符

局部描述符LDT

开启分页机制

分页机制开启后物理地址计算

在这里插入图片描述

地址转换过程

在这里插入图片描述
由硬件MMU 内存管理单元进行虚拟地址和物理地址映射
页目录表 PDE
页表PTE

分段机制

每个程序提供的单独代码段互不干扰

分页机制

按需使用武力内存

问题

  1. x86为了让16位下实模式能访问20位,段基地址要左移4位。

积累

mov cx,#256
cx赋值10进制256
加电自检后自动初始化到文字模式,一屏幕25行80列

  • system 模块就是除了 bootsect 和 setup 之外的全部程序链接在一起的结果,可以理解为操作系统的全部。在这里插入图片描述
  • 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值