1、

32位 保护模式 段选择符 --> 段描述符(段描述符表) --> 段基地址

            + 偏移量

           ==> 线性地址(ZC: 这个地址就是段的开始地址)

1.2、

段限长字段LIMIT(Segment limit field)

  ... ... 。如果 G=0,则段长度Limit范围可从 1字节到1MB字节,单位是字节。如果G=1,则段长度Limit范围可从 4KB到4GB,单位是4KB。

  ZC: 也就是说:

    ZC: (1)、G=0时,Limit=0 --> 1字节; ... ...; Limit=0x0FFFFF --> 1MB。1048576个项正好一一对应。

    ZC: 1048576 = 1024*1024 = 0x100000=1M。

    ZC: (2)、G=1时,Limit=0 --> 4KB; ... ...; Limit=0x0FFFFF --> 4GB。1048576个项正好一一对应。

    ZC: 4*1024*1024*1024=4G; (4*1024*1024*1024)/(4*1024)=1024*1024。

段描述符 中 颗粒度标识G(Granularity)[该标志不影响段基地址的颗粒度,基地址的颗粒度总是字节单位]

    为 0   --> 段限长值的 单位是字节。

    不为0 --> 段限长值使用 4KB单位。[此时 当使用段限长来检查偏移值时,并不会去检查偏移值的 12位最低有效位。例如,当 G=1时,段限长为0 表明有效偏移值为 0到4095。]

    ZC: 这里 之前不明白,后来想了一下,大概明白了:当 G=1时,段限长值的单位是4KB,段限长为0的话 段的长度就是4KB,∴ 偏移值的高20位就只能是全0 低12位不检查,∴ 低12位 的范围就是 0到4095(4K-1),于是 整个偏移值的范围也就是 0到4095 。

1.3、

“而全局显示数据段被设置成:基地址为 0xB8000;段限长为 0x0002,所以实际段长度为 8KB,对应到显示内存区域上。”

ZC: 这里的“显示数据段”和“显示内存区域”,应该指的就是 用于显示 字符A 和 字符B 的 数据段 和 内存区域。

ZC: 这里我有理解错误(20151230),我将 段长度(段限长) 和 偏移量范围 搞混了。

2、

帖子:http://bbs.csdn.net/topics/391884878

http://edu.csdn.net/course/detail/1340

3、(下面的这段,字体是宋体,字体大小15px)

0x00c09a00000007ff ==> 0000 0000,1100 0000,1001 1010,0000 0000 | 0000 0000,0000 0000,0000 0111,1111 1111

0x00c09200000007ff ==> 0000 0000,1100 0000,1001 0010,0000 0000 | 0000 0000,0000 0000,0000 0111,1111 1111

0x00c0920b80000002 ==> 0000 0000,1100 0000,1001 0010,0000 1011 | 1000 0000,0000 0000,0000 0000,0000 0010

段限长 分别为:0x7ff / 0x7ff / 0x02

基地址 分别为:0x00 / 0x00 / 0xb8000

3.1、

lss指令 ==> 加载堆栈段      lds、les 可类推

3.2、

章节“4.6.1 异常和中断向量”里面提到 NMI:“NMI中断分配的向量”、“NMI中断源”,NMI 是什么??

  NMI(非屏蔽中断请求) ??

章节“4.6.2.1 中断源”中提到,“当引脚 NMI 接收到信号时,就产生一个非屏蔽中断。它使用固定的中断向量号 2。”

3.3、

章节“4.6.8 IDT描述符”中,“任务门描述符中含有一个任务TSS段的选择符,该任务用于处理异常和/或中断。”

ZC: 图4-27 中任务门里面的“段选择符”应该就是指 TSS段选择符。

3.4、

章节“4.6.9 异常与中断处理”

ZC: 异常与中断处理 都是通过 IDT(中断描述符表) 来完成的。

ZC: (1)、索引值 指向 中断门 或 陷阱门

  ==> 处理器使用与 CALL指令操作 调用门 类似的方法 调用 异常或中断 处理过程

ZC: (2)、索引值 指向  任务门

  ==> 处理器使用与 CALL指令操作 任务门 类似的方法 进行 任务切换,执行异常 或 中断的处理任务

4、源码中

4.1、

pdf.P136,head.s 源码中 第18~23行 说是“在改变了 GDT 之后重新加载所有段寄存器”

ZC: 这里的“所有段寄存器”就只有 ds、es、fs、gs、esp这5个?而且 为何前4个只设置了低16位,高16位保持原有的值??

5、

章节“4.7.3.3”,讲 “指令 LTR 和 STR 分别用于加载和保存任务寄存器的可见部分,即 TSS 段的选择符。”

ZC: 貌似 在视频教程里面 有专门讲 "不可见寄存器" 的部分,不知是否是同一种东西?

6、

7、

0.00-050613_ZC_Chapter4_20151230的更多相关文章

  1. cxGRID中的字段怎么能以0.00的格式显示

    CXGRID中的字段如何能以0.00的格式显示在CXGRID中如何让字段能以0.00的格式显示,我的字段是FLOAT类型,满意的马上给分! ------解决方案-------------------- ...

  2. decimalFormat("#","##0.00") java

    importjava.text.DecimalFormat; publicclassTestNumberFormat{ publicstaticvoidmain(String[]args){ doub ...

  3. 基于python做的抓图程序1.0.00版本

    #coding=gbkimport urllibimport urllib2import reimport osimport time# import readline def getHtml(url ...

  4. SQL获取前一天0:00:00至23:59:59数据

    一.前言 因为我公司要做财务结算前一天0:00:00至23:59:59的数据,利用到动态拼接SQL语句 我们需要明白声明DateTime 和 Date 获取的时间格式是不一样的,所以通过此计算有利于得 ...

  5. ToString(“N2”)和ToString(“0.00”)之间的区别

    看来N会包含数千个分隔符,而0.00则不会. N2将以500.00的方式工作,但是当您有5000.00时,N2将显示为 5,000.00 代替 5000.00 If you do this inste ...

  6. 求一元二次方程的根【double型的0输出%.2lf为-0.00】

    #include <bits/stdc++.h> using namespace std; #define LL long long #define eps 1e-6 int main() ...

  7. decimal.ToString("#0.00")与decimal.ToString("#.##")的区别

    decimal decTemp = 2.1m; Console.WriteLine(decTemp.ToString("#0.00")); //输出2.10 Console.Wri ...

  8. php如何判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行

    if ( (int) $number == 0) echo 'empty'; if ( floatval($number) == 0 ) echo 'empty' 首先,PHP 认为 0.0 是空,同 ...

  9. vue中的金额格式0.00 和 后台返回时间格式带T调整正常格式

    <template> <div class="consumption"> <p>{{payTime|Time}}</p> <p ...

  10. 一元三次方程 double输出 -0.00

    求一个 a*x*x*x+b*x*x+c*x+d 的解 题目很简单,但是我输出了-0.00,然后就一直卡着,这个问题以后要注意. 让0.00 编程-0.00的方法有很多. 第一种就是直接特判 if(fa ...

随机推荐

  1. NPOI操作Excel常用函数

    最近因项目接触了NPOI,感觉还是蛮不错的,网络上的教程普遍版本较老,本篇记录所常用操作,采用NPOI 2.0版本. 推荐: NPOI官方网站 NPOI 1.2.4/1.2.5 官方教程 新建Exce ...

  2. 距离,margin padding ,width height 用法 ,记录

    margin:0 auto 表示什么意思 margin后面如果只有两个参数的话,第一个表示top和bottom,第二个表示left和right 因为0 auto,表示上下边界为0,左右则根据宽度自适应 ...

  3. E QUERY [main] SyntaxError: identifier starts immediately after numeric literal mongodb mapReduce 异常分析 集合命名规范

    异常信息 repl_test:PRIMARY> db.0917order_totals_b.find()2018-09-28T15:13:03.992+0800 E QUERY [main] S ...

  4. sparse matrix

    w https://en.wikipedia.org/wiki/Sparse_matrix 稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB - Bin的专栏 - 博客园ht ...

  5. 任务05—学习 MARKDOWN 语言

    我的简历地址: https://github.com/jinxiaohang/MyResume/blob/master/ForJavaJob.md 本任务主要目的掌握markdown. 1.首先是工具 ...

  6. setlocale()函数测试当前语言的两个程序

    http://www.cnblogs.com/cnyao/archive/2010/05/06/1729220.html setlocale()函数是用来配置地域信息的,原本以为这个也是windows ...

  7. postman 编码加密汇总

    1.MD5加密 /*加密方式:将 请求头的user-agent内容+请求方式+当前时间+(Base64)请求body中的stacode参数 拼接后得到的字符串进行MD5加密*/ //1.获取reque ...

  8. Excel 查找某一列中包含指定字符的单元格

    网上查找相关内容,个人感觉是另一种形式的过滤喽.有的说用FIND,有的用高级筛选.我查找时如下: 1.新拉一列,标注公式“=ISNUMBER(FIND("宣",B2))”,然后拉至 ...

  9. 【渗透神器系列】Fiddler (收藏)

    发表于 2017-04-27   |   分类于 安全工具   |     |   阅读次数 593 人世起起落落 左手边上演的华灯初上 右手边是繁华落幕的星点余光 本篇作为渗透神器系列第二篇,将介绍 ...

  10. Python之 Django 初级

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...