
《x86汇编语言:从实模式到保护模式》学习笔记
文章平均质量分 61
车子 chezi
乐于开源,善于分享。死磕自己,方便大家。广泛查阅,独立思考。持续琢磨,自成一家。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
x86分页机制详解
文章目录1. 为什么会有分页机制?2. 从虚拟地址到物理地址3. 简单的分页模型4. 页表和页目录4.1 层次化的分页结构4.2 页表4.3 页目录5. 地址变换的具体过程1. 为什么会有分页机制?有些资料说是为了实现“虚拟内存”,真的是这样吗?如果没有分页机制,能否实现“虚拟内存”?答案是肯定的。当同时运行的任务很多时,内存可能就不够用。如图所示,每个段描述符都有 AVL 位(简称 A 位),用于表示一个段最近是否被访问过(准确地说是表明从上次操作系统清零该位后一个段是否被访问过)。当创建描述原创 2020-07-13 23:10:18 · 2305 阅读 · 2 评论 -
处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39
处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39处理器可以通过以下四种方法实施任务切换: 1. call指令或者jmp指令的操作数是GDT内的某个TSS描述符的选择子; 2. call指令或者jmp指令的操作数是GDT或者LDT内某个任务门的选择子; 3. 一个异常或者中断发生时,中断号指向IDT内的某个任务门; 4. 在EFLAGS寄存器的NT位置原创 2016-07-09 10:27:58 · 1525 阅读 · 3 评论 -
任务切换——《x86汇编语言:从实模式到保护模式》读书笔记38
第15章代码讲解。原创 2016-06-29 23:24:02 · 2192 阅读 · 2 评论 -
第15章习题解答(二)——《x86汇编语言:从实模式到保护模式》读书笔记41
第二题题目: 修改本章的源程序,使之能够顺序完成以下工作: (1)从程序管理器任务切换到任务A,显示一条消息; (2)再从任务A转换到任务B,显示一条消息; (3)从B直接返回到程序管理任务。原创 2016-07-17 11:36:51 · 1745 阅读 · 2 评论 -
第15章习题解答(一)——《x86汇编语言:从实模式到保护模式》读书笔记40
1. 第15章代码修改2.习题一解答原创 2016-07-17 09:57:17 · 4490 阅读 · 6 评论 -
任务切换的方法——《x86汇编语言:从实模式到保护模式》读书笔记37
处理器可以通过以下四种方法实施任务切换:1. call指令或者jmp指令的操作数是GDT内的某个TSS描述符;2. call指令或者jmp指令的操作数是GDT或者LDT内某个任务门描述符;3. 一个异常或者中断发生时,中断号指向IDT内的某个任务门;4. 在EFLAGS寄存器的NT位置位的情况下,当前任务执行了一个iret指令。原创 2016-06-23 20:44:30 · 3728 阅读 · 0 评论 -
任务和特权级保护(五)——《x86汇编语言:从实模式到保护模式》读书笔记36
任务和特权级保护(五)——《x86汇编语言:从实模式到保护模式》读书笔记36修改后的代码,有需要的朋友可以去下载(c14_new文件夹)。下载地址是: GitHub: https://github.com/LeslieChe/from-real-mode-to-protected-mode1. 第14章的习题2及解答2. 用栈传递参数......原创 2016-06-04 19:15:19 · 1565 阅读 · 0 评论 -
任务和特权级保护(四)——《x86汇编语言:从实模式到保护模式》读书笔记35
任务和特权级保护(四)——《x86汇编语言:从实模式到保护模式》读书笔记35原创 2016-05-25 23:26:42 · 2544 阅读 · 0 评论 -
任务和特权级保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记34
任务和特权级保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记34原创 2016-05-24 23:31:49 · 2490 阅读 · 0 评论 -
TSS详解 ——《x86汇编语言:从实模式到保护模式》读书笔记33
TSS(Task State Segment,任务状态段)详解原创 2016-05-23 22:00:30 · 6244 阅读 · 0 评论 -
任务和特权级保护(二)——《x86汇编语言:从实模式到保护模式》读书笔记32
之前做了那么多铺垫,我们终于可以看看第14章的代码了。 对于引导代码和用户程序,依然采用第13章的;对于内核程序(c14_core.asm),编译的时候有几行报错了,只要加上dword即可解决。原创 2016-05-21 20:52:08 · 5110 阅读 · 3 评论 -
代码段间转移控制时的特权级检查(JMP/CALL)——《x86汇编语言:从实模式到保护模式》读书笔记28
代码段间转移控制时的特权级检查(JMP或者CALL指令)在保护模式下,JMP或CALL指令可以用以下四种方法之一来引用另外一个代码段: 1. 目标操作数含有目标代码段的段选择子和偏移 2. 目标操作数指向一个调用门描述符 3. 目标操作数指向一个TSS 4. 目标操作数指向一个任务门后两种涉及任务的切换。本文仅对前两种进行讨论。原创 2016-05-07 10:21:27 · 2664 阅读 · 0 评论 -
调用门详解
说明:此文是我将以前的两篇博文(读书笔记28和29)中的部分内容综合而来,如遇重复,请您自行跳过。原创 2016-05-17 21:39:35 · 9943 阅读 · 7 评论 -
任务和特权级保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记27
本文及后面的几篇文章是原书第14章的读书笔记。1. LDT2. TSS3. DPL4. CPL5. RPL6. I/O特权级原创 2016-05-02 11:47:38 · 4914 阅读 · 2 评论 -
x86分页机制——《x86汇编语言:从实模式到保护模式》读书笔记42
1. 为什么会有分页机制?2.从虚拟地址到物理地址3.简单的分页模型4.页表和页目录5.地址变换的具体过程原创 2016-07-30 13:01:16 · 3220 阅读 · 3 评论 -
《X86汇编语言:从实模式到保护模式》读书笔记之引言
有幸结识了《X86汇编语言:从实模式到保护模式》一书。我觉得这本书非常好,语言活泼,通俗易懂,源码丰富,受益匪浅。读罢一遍,意犹未尽。于是打算再读一遍,并把自己的读书所学总结成笔记,一来给自己留个纪念,二来供各位访客参考。初出茅庐,牛刀小试,如有错误,实属必然。还请广大博友批评指正,不吝赐教。 在此也向本书的作者——李忠、王晓波(我联想到了作家王小波,其实他曾经也是程序员)、余洁表示敬意。原创 2016-01-03 22:13:01 · 2729 阅读 · 4 评论 -
页目录项和页表项——《x86汇编语言:从实模式到保护模式》读书笔记43
上图就是页目录项和页表项的格式。原创 2016-08-09 21:05:01 · 5630 阅读 · 0 评论 -
显存文本模式详解 ———《x86汇编语言:从实模式到保护模式》读书笔记补遗02
文章修改记录 修改日期 修改内容 2018-2-4 修改了一处错别字;增加了表格的使用方法今天我们讨论如何编程以在屏幕上显示出彩色的文字。为了显示文字,通常需要两种硬件——显示器和显卡。 显卡的作用是为显示器提供要显示的内容,并且控制显示器的模式和状态。 显示器的作用是把那些内容以人们可见的方式呈现在屏幕上。1.显存每个显卡都有自己的存储器,原创 2017-04-15 22:16:44 · 6553 阅读 · 2 评论 -
80x86描述符总结及解析描述符的小程序
一、描述符的分类二、描述符格式1、数据段描述符2、代码段描述符3、LDT段描述符4、TSS段描述符5、调用门描述符6、中断门描述符7、陷阱门描述符8、任务门描述符三、解析描述符的小程序#include //定义描述符中的低32位struct seg_des_low_wo原创 2017-12-23 18:15:02 · 1546 阅读 · 1 评论 -
硬盘和显卡的访问与控制(三)(含多彩的Hello)——《x86汇编语言:从实模式到保护模式》读书笔记03
上一篇博文我们用了很大的篇幅说了加载器,这一篇我们该说说用户程序了。 先看作者的源码吧。 ;代码清单8-2 ;文件名:c08.asm ;文件说明:用户程序 ;创建日期:2011-5-5 18:17;==========================================================原创 2015-12-26 17:48:41 · 1959 阅读 · 0 评论 -
RPL的故事 ——《x86汇编语言:从实模式到保护模式》读书笔记31
关于RPL(请求特权级),网上的资料不少,不过我认为都没有说明白。希望我可以把这个问题讲清楚,如有纰缪,还请您不吝赐教。原创 2016-05-12 00:20:15 · 2586 阅读 · 1 评论 -
计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01
你有没有想过这样一个问题——计算机是怎么开始执行我们写的指令的?原创 2017-04-13 22:01:34 · 1701 阅读 · 0 评论 -
x86汇编如何延时
思路一:NOP指令联合循环来延时 思路二:利用BIOS中断关于思路一,因为循环次数不好把握,这里就不尝试了。关于思路二: 中断号:15H 入口参数: (1) AH:86H (2) CX:DX= 延时时间(单位是微秒),CX是高字,DX是低字原创 2017-04-12 23:42:58 · 6892 阅读 · 2 评论 -
汇编语言Makefile
SRC=$(wildcard *.asm)OBJ=$(patsubst %.asm,%.bin,$(SRC))LIST=$(patsubst %.asm,%.list,$(SRC))CC=nasm$(OBJ): $(SRC) $(CC) -f bin $^ -o $@ -l $(LIST) dd if=$(OBJ) of=a.img.PHONY:cleanclean:原创 2017-04-09 16:27:30 · 2404 阅读 · 1 评论 -
Ubuntu环境下安装Bochs
Ubuntu环境下安装Bochs原创 2015-10-20 22:34:04 · 8114 阅读 · 1 评论 -
硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01
本文是《x86汇编语言:从实模式到保护模式》(电子工业出版社)的读书实验笔记。这篇文章我们先不分析代码,而是说一下在Bochs环境下如何看到实验结果。需要的源码文件 第一个文件是加载程序 ;代码清单8-1 ;文件名:c08_mbr.asm ;文件说明:硬盘主引导扇区代码(加载程序) ;创建日期:2011-5-5 18:17原创 2015-12-26 15:18:13 · 6011 阅读 · 11 评论 -
NASM在Ubuntu上的安装与简单使用
一 、安装NASM 1. 下载安装文件 地址是:http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/解压(具体命令要根据压缩包的类型来选用)进入解压目录 进入刚解压的目录 ./configure make sudo make install二、简单使用NASM准备好源文件 假设命名为 c07_mbr.asm(这是《x86汇编语原创 2015-10-24 18:22:14 · 6543 阅读 · 1 评论 -
《x86汇编语言:从实模式到保护模式》读书笔记之后记
本来打算把整本书的读书笔记写完,可是由于有其他的计划(就叫做“B计划”吧)且优先级更高,所以我的读书笔记搁浅了。为了全力以赴执行B计划,我的博客要荒芜一段时间(我希望不要永远荒芜下去)。关于《x86汇编语言:从实模式到保护模式》读书笔记系列文章,除了引言和后记,一共44篇文章。希望这些文章能给读者带来哪怕是些微的收获。因为是初学,对知识的理解肯定有不对的地方,如果读者发现问题,欢迎留言斧正。维护一个原创 2016-12-24 11:59:41 · 2535 阅读 · 5 评论 -
开启分页机制———《x86汇编语言:从实模式到保护模式》读书笔记44
开启分页机制必须说明的是,必须在保护模式下才能启动分页功能。本章的引导程序依然用第13章的。开启分页机制之前,必须创建页目录和页表。原创 2016-08-13 11:25:20 · 3141 阅读 · 3 评论 -
访问数据段时的特权级检查,修改SS时的特权级检查——《x86汇编语言:从实模式到保护模式》读书笔记30
1. 访问数据段时的特权级检查为了访问数据段,数据段的选择子必须被加载进段寄存器(ES,ES,FS,GS,SS)。在把一个段选择子加载进段寄存器之前,处理器会进行特权级检查(如下图所示)。在数值上必须满足以下两点: 1. CPL<=数据段描述符的DPL 2. RPL<=数据段描述符的DPL 否则,会产生一个一般保护异常。原创 2016-05-11 22:40:58 · 1299 阅读 · 0 评论 -
程序的加载和执行(六)——《x86汇编语言:从实模式到保护模式》读书笔记26
【通过本文能学到什么?】1.NASM的条件汇编2.用NASM编译的时候,通过命令行选项定义宏 3.Makefile的条件语句4.在make命令行中覆盖Makefile中的变量值5.第13章习题解答6.复习如何构造栈段描述符原创 2016-04-16 12:59:27 · 4126 阅读 · 3 评论 -
程序的加载和执行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25
程序的加载和执行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25内容提要:1. 为13章的配书源码写Makefile2. 在源码的基础上修修补补 2.1 让字符带有颜色 2.2 对过程put_hex_dword的修改 2.3 修复符号表重定位的小BUG原创 2016-04-13 22:53:29 · 5053 阅读 · 2 评论 -
数据段描述符和代码段描述符(二)——《x86汇编语言:从实模式到保护模式》读书笔记11
这篇博文,我们编写一个C语言的小程序,来解析数据段或者代码段描述符的各个字段。这样我们阅读原书的代码就会方便一点,只要运行这个小程序,就可以明白程序中定义的数据段或者代码段的描述符了。 这段代码,我用了“位字段”的知识,这还是第一次使用C语言的这个特性呢,如果有不对的地方,欢迎博友斧正。 #include //定义描述符中的低32位struct seg_des_low_原创 2016-01-12 22:23:17 · 2681 阅读 · 0 评论 -
数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10
一、段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符。80X86中有各种各样的段描述符,下图展示了它们的分类。 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住呢? 别担心,我会在以后的博文中,跟随原书的作者,为您逐步介绍。我们的学习是循序渐进的,所以不要求一下子掌握所有东西。我们的原则是:用到什么学什么。我们今天的重点是“存储段描述符”。 二、段原创 2016-01-09 22:01:28 · 5389 阅读 · 3 评论 -
进入保护模式(三)——《x86汇编语言:从实模式到保护模式》读书笔记17
(十)保护模式下的栈 76 ;以下用简单的示例来帮助阐述32位保护模式下的堆栈操作 77 mov cx,00000000000_11_000B ;加载堆栈段选择子78 mov ss,cx79 mov esp,0x7c00第77~79行用来初始保护模式下的栈。栈段描述符是GDT中第3个(从原创 2016-01-28 20:52:50 · 1736 阅读 · 0 评论 -
16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16
一、Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式。 (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 (3)虚拟8086模式:这种方式可以使用户在保护模式下运行8086程序(比如cmd打开的console窗口,就是工作在虚拟8086模式) 有几点需要特别说明: (1)保护模式可分为16原创 2016-01-28 19:44:19 · 7720 阅读 · 4 评论 -
全局描述符表(GDT)——《x86汇编语言:从实模式到保护模式》读书笔记09
在进入保护模式之前,我们先要学习一些基础知识。今天我们看一下全局描述符表(Global Descriptor Table, 简称GDT)。 同实模式一样,在保护模式下,对内存的访问仍然使用段地址加偏移地址。但是,在保护模式下,在每个段能够访问之前,必须先登记。这就好比像C语言中,“对变量的使用必须先定义”一样。 每个段在能够使用之前,都要为这个段建立一个描述符。每个描述符占8个字节,这些描述符原创 2016-01-09 12:11:12 · 5371 阅读 · 1 评论 -
32位x86处理器编程导入——《x86汇编语言:从实模式到保护模式》读书笔记08
在说正题之前,我们先看2个概念。 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际“可见”的指令集,包含了程序员编写一个能正确运行的二进制机器语言程序的所有信息,涉及到指令、 I/O 设备等。例如 Intel 的 IA-32、Intel 64、ARM 的 ARMv7、ARMv8 等等。 2.微架构 微原创 2016-01-09 00:35:36 · 2671 阅读 · 0 评论 -
关于80286——《x86汇编语言:从实模式到保护模式》读书笔记15
一、80286的工作模式 80286首次提出了实模式和保护模式的概念。 实模式:和8086的工作方式相同; 保护模式:提供了存储器管理机制和保护机制,支持多任务。 二、80286的寄存器 (一)通用寄存器 80286的通用寄存器和8086一样,有AX,BX,CX,DX,BP,SP,SI,DI; (二)IP 80286的指令指针寄存器也和8086一样,没有什么特别的。 (三)原创 2016-01-24 20:57:45 · 2499 阅读 · 0 评论 -
进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14
首先来段题外话:之前我发现我贴出的代码都没有行号,给讲解带来不便。所以从现在起,我要给代码加上行号。我写博客用的这个插入代码的插件,确实不支持自动插入行号。我真的没有找到什么好方法,无奈之下,只能按照网友的说法,在VIM中给每行代码加上行号,然后再贴出来。 在VIM中每一行都添加上行号的方法是: :%s/^/\=line(".")/ 对,只要执行这个命令就可以了。 我们接着上篇博文原创 2016-01-16 20:45:01 · 2542 阅读 · 0 评论