保护模式下的内存访问(笔记)

         ;代码清单12-1
         ;文件名:c12_mbr.asm
         ;文件说明:硬盘主引导扇区代码
         ;创建日期:2011-5-16 19:54;修改于2022-02-16 11:15

         ;设置堆栈段和栈指针
         mov ax, cs
         mov ss, ax
         mov sp, 0x7c00

         ;计算GDT所在的逻辑段地址
         mov ax, [cs: gdt_base + 0x7c00]              ;低16位
         mov dx, [cs: gdt_base + 0x7c00 + 0x02]       ;高16位
         mov bx, 16
         div bx

         mov ds, ax                                   ;令DS指向该段以进行操作
         mov bx, dx                                   ;段内起始偏移地址

         ;创建0#描述符,它是空描述符,这是处理器的要求
         mov dword [bx+0x00],0x00
         mov dword [bx+0x04],0x00

         ;创建#1描述符,保护模式下的数据段描述符(文本模式下的显示缓冲区)
         mov dword [bx+0x08],0x8000ffff
         mov dword [bx+0x0c],0x0040920b

         ;初始化描述符表寄存器GDTR
         mov word [cs: gdt_size+0x7c00],15            ;描述符表的界限(总字节数减一)

         lgdt [cs: gdt_size+0x7c00]

         in al,0x92                                   ;南桥芯片内的端口
         or al,0000_0010B
         out 0x92,al                                  ;打开A20

         cli                                          ;保护模式下中断机制尚未建立,应
                                                      ;禁止中断
         mov eax,cr0
         or eax,1
         mov cr0,eax                                  ;设置PE位

         ;以下进入保护模式... ...

         mov cx,00000000000_01_000B                   ;加载数据段选择子(0x08)
         mov ds,cx

         ;以下在屏幕上显示"Protect mode OK."
         mov byte [0x00],'P'
         mov byte [0x02],'r'
         mov byte [0x04],'o'
         mov byte [0x06],'t'
         mov byte [0x08],'e'
         mov byte [0x0a],'c'
         mov byte [0x0c],'t'
         mov byte [0x0e],' '
         mov byte [0x10],'m'
         mov byte [0x12],'o'
         mov byte [0x14],'d'
         mov byte [0x16],'e'
         mov byte [0x18],' '
         mov byte [0x1a],'O'
         mov byte [0x1c],'K'
         mov byte [0x1e],'.'

         hlt                                          ;已经禁止中断,将不会被唤醒

;-------------------------------------------------------------------------------

         gdt_size         dw 0
         gdt_base         dd 0x00007e00               ;GDT的物理地址

         times 510-($-$$) db 0
                          db 0x55,0xaa

根据上一篇我们讲到的内容继续
你会发现,控制实模式和保护模式切换的开关原是在一个叫CR0的寄存器
在这里插入图片描述

CR0

CR0是处理器内部的控制寄存器,之所以有个“0”后缀,是因为还有CR1,CR2,CR3…控制寄存器,到CR8
CR0是32位寄存器,包含了一系列用于控制处理操作模式和运行状态的标志位
如下
在这里插入图片描述

PE位

如果它的第1位为保护模式允许位,是开启保护模式的关键,如果为1,则处理器进入保护模式。
这里我们先只介绍这个
在保护模式下的中断和实模式下的中断不同,原有的中断向量表不再适用,而且必须要知道的是,BIOS中断都不能再使用。
所以你会看到37行
在这里插入图片描述
8086的段寄存器是16位的,共有四个:CS、DS、ES、SS
32位处理器内,在原有的基础上又增加了FS和GS

在这里插入图片描述

不可见部分是段的线性基址、界限、属性

段选择子

在保护模式下访问一个段时,传送到段寄存器的是段选择子
在这里插入图片描述由上图我们可以看到
它由三部分构成

  • 描述符索引号(Index)
  • TI描述符指示器(Table Indicator)
    当TI=0时,表示描述符在GDT中
    当TI=1时,描述符在LDT中
    LDT和GDT类似
  • PRT请求特权级

我们可以看到12-1的代码清单,定义了1个段描述符,因为表内描述符的编号是从0开始的,所以它的索引号是1
在45、46行,将描述符选择子0x0008传送到段选择器DS中,代码中用的是二进制
从二进制可以看到,指定描述符号的索引值号是1,指定的是GDT,请求特权级PRT为00
在这里插入图片描述
GDT的线性基址在GDTR中,又因为每个描述符占8字节,因此描述符在表内的偏移地址是索引号乘以8
在这里插入图片描述下图是保护模式下内存访问
在这里插入图片描述保护模式下处理器取指令的过程
在这里插入图片描述
在进入保护模式前,处理器就已经使用CS描述符高速缓存器里的基址从代码段取指令并执行指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/728246.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

blender 快捷键 常见问题

一、快捷键 平移视图:Shift 鼠标中键旋转视图:鼠标中键缩放视图:鼠标滚动框选放大模型:Shift B 二、常见问题 问题:导入模型成功,但是场景中看不到。 解决办法:视图-裁剪起点&#xff0…

搭建群辉AudioStation音乐库

目录 1、安装套件 2、配置歌词插件 3、配置音乐库 4、PC端使用 5、手机APP (1)DS Audio (2)音流 6、关于歌曲信息及封面 (1)歌词 (2)封面 作为音乐爱好者,在NAS上存了大量的无损音乐,用文件流量的方式播放,体验未免欠佳。这次我们打造自己的音乐库,随时随…

数据可视化实验五:seaborn绘制进阶图形

目录 一、绘制动态轨迹图 1.1 代码实现 1.2 绘制结果 二、使用seaborn绘制关系图 2.1 绘制散点图分析产品开发部已离职的员工的评分与平均工作时间 2.1.1 代码实现 2.1.2 绘制结果 ​编辑 2.2 基于波士顿房价数据,绘制房间数和房屋价格的折线图 2.2.1 代码…

Meta悄咪咪的发布多款AI新模型

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则…

数据资产与用户体验优化:深入挖掘用户数据,精准分析用户需求与行为,优化产品与服务,提升用户体验与满意度,打造卓越的用户体验,赢得市场认可

一、引言 在数字化时代,数据已经成为企业最宝贵的资产之一。通过深入挖掘和分析用户数据,企业能够精准把握用户需求和行为,从而优化产品与服务,提升用户体验和满意度。这不仅有助于企业在激烈的市场竞争中脱颖而出,还…

ECM和MEMS技术在心肺声学监测中的应用

心肺疾病是全球范围内导致死亡的主要原因。因此,对这些疾病迹象的准确和快速评估对于为患者提供适当的医疗保健至关重要。心血管疾病最重要的迹象之一是心脏周期的异常。大多数呼吸系统疾病则表现为呼吸周期的异常。有多种方法可以监测心脏和肺部的周期。听诊是监测…

windows服务器下jenkins c语言打包的一些经验share

前言 因为一些原因,需要从linux环境下的jenkins 打包c语言转移到使用windows环境下的jenkins打包c语言,从转移的过程中,发现了一些问题和解决方案,故在此和各位运维工程师分享一下。 一、windows 下的c语言编译环境配置 这边就…

串口rx + RAM + LCD

REVIEW 昨天摸鱼怪发现高两位的数据写入or读出存在问题: RAM 串口的简单应用-CSDN博客 1. 今日摸鱼任务 UART_RX RAM LCD 来显示一下是 rx or tx 的问题 2. 代码部分 rx_ram_lcd.v module rx_ram_lcd(input clk ,input reset_n ,input uart_rx ,output …

【服务器03】之【Navicat完整版破解】

首先清掉电脑所有Navicat组件 虽然被卸载掉了但是没有彻底清理掉Navicat组件 在原装盘里找到Navicat清楚碎片 清空之后开始下载 navicat16 https://www.alipan.com/s/GTvP93mn3sU 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需…

ChatGPT提效:告别CRUD

前言 随着AIGC的发展以及大语言模型的成熟,各种AI应用眼花缭乱,以至于我们看到各种新奇的应用都会产生焦虑,我有一天会不会被淘汰?且看后文分析。AIGC的发展与逐渐成熟已经是无可逆转的局势,既然我们打不过为何不加入…

财务RPA是什么?解析财务RPA的定义和功能

RPA技术作为人工智能领域的代表之一,因其可以高效解决各种基于一定规则的重复而复杂的业务流程,帮助企业节约人工成本并提升效率,如今已经普及到各行各业。而财务领域存在大量规则明确但机械重复的工作和业务流程,这些工作场景是财…

干货 | 使用 Navicat BI 解锁数据的力量

商业智能(BI)是一种将数据转化为可执行洞察的实践,能够帮助业务领导者提升整体业绩。这个过程中最重要的一个阶段是数据探索和可视化阶段,它涉及通过报告将数据组织并转化为有意义的信息。为了让数据更易于理解,BI 专业…

了解CDN:提升网络性能和安全性的利器

在当今的数字时代,网站性能和安全性是每一个网站管理员必须关注的核心问题。内容分发网络(CDN,Content Delivery Network)作为解决这一问题的重要工具,逐渐成为主流。本文将详细介绍CDN的定义、作用及其工作原理&#…

【投稿优惠|稳定出版】2024年体育、健康与食品安全国际学术会议(ICSHFS 2024)

【投稿优惠|稳定出版】2024年体育、健康与食品安全国际学术会议(ICSHFS 2024) 2024 International Conference on Sports, Health, and Food Safety(ICSHFS 2024) 会议简介: 2024年体育、健康与食品安全国际学术会议(ICSHFS 2024…

Linux源码学习笔记01-Linux内核源码结构

Linux内核特性 是一个类Unix操作系统,但不是简化的Unix;不仅继承了Unix的特征,还有其他特性。 Linux内核的组织形式:整体式的结构,方便每个领域的开发人员参与开发;Linux进程调度方式简单高效&#xff1a…

打字速度对编程的影响大吗?

知道打字速度对编程的影响大吗?实际上,在编程的世界里,关键在于思考,而非打字速度。要明白,编程与日常聊天中的打字有着本质的区别,如果编程仅仅取决于打字速度,那它岂不就等同于打字员的工作了…

Rust中的数据抓取:代理和scraper的协同工作

一、数据抓取的基本概念 数据抓取,又称网络爬虫或网页爬虫,是一种自动从互联网上提取信息的程序。这些信息可以是文本、图片、音频、视频等,用于数据分析、市场研究或内容聚合。 为什么选择Rust进行数据抓取? 性能:…

Nature正刊!亚利桑那大学博士生陈舒立一作兼通讯最新成果!揭示亚马逊雨林干旱响应的生物地理学机制

2024年6月19日,国际知名学术期刊《Nature》发表了一项美国亚利桑那大学Scott Saleska教授团队的最新成果“Amazon forest biogeography predicts resilience and vulnerability to drought”。通过将森林样地调查数据与遥感观测相结合系统揭示了亚马逊雨林干旱响应的…

动态轮换代理在多账户管理中有何用处?

如果您要处理多个在线帐户,选择正确的代理类型对于实现流畅的性能至关重要。但最适合这项工作的代理类型是什么? 为了更好地管理不同平台上的多个账户并优化成本,动态住宅代理IP通常作用在此。 一、什么是轮换代理? 轮换代理充当…

东芝-Soft Limit 报警及其解决办法

灵感来源与生活,在生活中总能有意想不到的惊喜,下面来看看小编今天的惊喜!!! 今天不知道怎么了,有人来找就说是机器人坏了,一直报警,重启关机回原点也没有用。 意外到来,…