关于80286——《x86汇编语言:从实模式到保护模式》读书笔记15
一、80286的工作模式
80286首次提出了实模式和保护模式的概念。
实模式:和8086的工作方式相同;
保护模式:提供了存储器管理机制和保护机制,支持多任务。
二、80286的寄存器
(一)通用寄存器
80286的通用寄存器和8086一样,有AX,BX,CX,DX,BP,SP,SI,DI;
(二)IP
80286的指令指针寄存器也和8086一样,没有什么特别的。
(三)标志寄存器
80286的标志寄存器同8086相比,增加了IOPL(特权级)和NT(子任务嵌套),这两个字段只在保护模式中使用。
(四)MSW
MSW(机器状态字)是80286新设置的16位寄存器,在80386及其后续的CPU中,已经把MSW扩展为4个32位的控制寄存器CR0、CR1、CR2和CR3,原来的MSW功能由CR0的低16位来实现。
MSW的位0是启用保护模式(Protection Enable)标志,也就是我们常说的PE位。PE=1时,开启保护模式;PE=0时表示工作在实模式。
(五)段寄存器
8086中的段寄存器,在808286中称为段选择子或者段选择器。当进行逻辑地址到实地址的变换时,用它来选择描述符表中的一个描述符。段选择子的格式和含义同32位处理器的段选择子相同,这里不再赘述。
(六)段描述符
字段说明
P位、DPL位、A位同32位处理器的段描述符含义相同。
【S】S=1代表代码段或者数据段描述符;S=0代表非段描述符;
【E】相当于32位处理器描述符的X位。E=1表示代码段描述符;E=0表示数据段描述符;
对于代码段描述符:
【C】相当于32位处理器段描述符的C(一致性)位。
【R】相当于32位处理器段描述符的R位。R=1时可读,可执行;R=0时仅执行;
对于数据段描述符:
【ED】相当于32位处理器段描述符的E(扩展方向)位。
【W】相当于32位处理器段描述符的W(是否可写)位。
(七)存储器寻址
物理地址由段描述符中的24位的段基址和16位的偏移量相加而成。
关于80286——《x86汇编语言:从实模式到保护模式》读书笔记15的更多相关文章
- 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16
一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 ...
- ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构
★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...
- 存储器的保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记20
存储器的保护(三) 修改本章代码清单,使之可以检测1MB以上的内存空间(从地址0x0010_0000开始,不考虑高速缓存的影响).要求:对内存的读写按双字的长度进行,并在检测的同时显示已检测的内存数量 ...
- 存储器的保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记18
本文是原书第12章的学习笔记. 说句题外话,这篇博文是补写的,因为让我误删了,可恶的是CSDN的回收站里找不到! 好吧,那就再写一遍,我有坚强的意志.司马迁曰:“文王拘而演<周易>:仲尼厄 ...
- 进入保护模式(三)——《x86汇编语言:从实模式到保护模式》读书笔记17
(十)保护模式下的栈 ;以下用简单的示例来帮助阐述32位保护模式下的堆栈操作 mov cx,00000000000_11_000B ;加载堆栈段选择子 mov ss,cx mov esp,0x7c00 ...
- 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14
首先来段题外话:之前我发现我贴出的代码都没有行号,给讲解带来不便.所以从现在起,我要给代码加上行号.我写博客用的这个插入代码的插件,确实不支持自动插入行号.我真的没有找到什么好方法,无奈之下,只能按照 ...
- 《X86汇编语言:从实模式到保护模式》读书笔记之引言
有幸结识了<X86汇编语言:从实模式到保护模式>一书.我觉得这本书非常好,语言活泼,通俗易懂,源码丰富,受益匪浅.读罢一遍,意犹未尽.于是打算再读一遍,并把自己的读书所学总结成笔记,一来给 ...
- 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01
本文是<x86汇编语言:从实模式到保护模式>(电子工业出版社)的读书实验笔记. 这篇文章我们先不分析代码,而是说一下在Bochs环境下如何看到实验结果. 需要的源码文件 第一个文件是加载程 ...
- 程序的载入和运行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25
程序的载入和运行(五)--<x86汇编语言:从实模式到保护模式>读书笔记25 前面几篇博文最终把代码分析完了.这篇就来说说代码的编译.运行和调试. 1.代码的编译及写入镜像文件 之前我们都 ...
随机推荐
- linux bash命令行基本操作
shell shell 我们叫做壳,我们知道操作系统底层是有一个内核kernel的,内核用来实现所有上层服务,所有上层命令,上层应用所需要的一些基本功能,比如说网络连接,网络通信,比如说键盘驱动, ...
- HBase介绍(2)---数据存储结构
在本文中的HBase术语:基于列:column-oriented行:row列组:column families列:column单元:cell 理解HBase(一个开源的Google的BigTable实 ...
- Crystal Reports for Visual Studio 2015 安装
如果你在vs2015下要用到Cystal Reports,请安装下面的插件.安装时请退出vs2015,安装后重启. https://www.aspsnippets.com/Articles/Downl ...
- 工作中的Buff加成-结构化思考力:第一章:认识结构化思维及其作用
一:引言 为了更好的说明结构思考力,我们先来做几个小测试. PS:如果你能做到,请留言,因为我要和你交好友,因为你是人才啊,可以挖一挖,挖到我的公司中. 第一个测试:请在三秒内记住下列数字.数字顺序不 ...
- SQLlite 分页
如果我要去11-20的Account表的数据 Select * From Account Limit 9 Offset 10; 以上语句表示从Account表获取数据,跳过10行,取9行 嗯,我觉得这 ...
- EntityFramework Code First 模式下使用数据迁移
启用数据迁移 在程序包管理控制台选择安装了EntityFramework的项目,键入如下指令以启EF用数迁移. Enable-Migrations 命令成功运行后,所选项目下会添加名为Migratio ...
- Sublime text3!行首,行尾,批量编辑!
1.Windows下的操作操作步骤 1.Ctrl + H 2.打开正则,输入^,然后Find All,查找所有的行首 3.打开正则,输入$,然后Find All,查找所有的行尾 4.光标闪动,就可以进 ...
- Mysql数据类型《一》整数类型
数值类型 1. 整数类型 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用:存储年龄,等级,id,各种号码等 ======================== ...
- numpy数组 拼接
转载自:https://blog.csdn.net/zyl1042635242/article/details/43162031 数组拼接方法一 首先将数组转成列表,然后利用列表的拼接函数append ...
- Access MongoDB Data with Entity Framework 6
This article shows how to access MongoDB data using an Entity Framework code-first approach. Entity ...