<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>鼠侠网 - 《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</title>
    <link>http://www.lizhongc.com/forum-48-1.html</link>
    <description>Latest 20 threads of 《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</description>
    <copyright>Copyright(C) 鼠侠网</copyright>
    <generator>Discuz! Board by Comsenz Inc.</generator>
    <lastBuildDate>Fri, 22 May 2026 17:43:31 +0000</lastBuildDate>
    <ttl>60</ttl>
    <image>
      <url>http://www.lizhongc.com/static/image/common/logo_88_31.gif</url>
      <title>鼠侠网</title>
      <link>http://www.lizhongc.com/</link>
    </image>
    <item>
      <title>第20章习题</title>
      <link>http://www.lizhongc.com/thread-785-1-1.html</link>
      <description><![CDATA[第20章习题

1，在本章的多任务系统中只用了一个TSS，任务切换时，用新任务的0特权级栈指针替换这个TSS的ESP0域，而不是使用一个固定值。请用一个具体的情景说明，如果不这样做会有什么问题。
答：如果使用一个固定值（固定的内核栈），那么，请想象一下：从任务A进入内 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 11:17:24 +0000</pubDate>
    </item>
    <item>
      <title>检测点20-2</title>
      <link>http://www.lizhongc.com/thread-784-1-1.html</link>
      <description><![CDATA[检测点20.2

1，在这里，标号.return代表的汇编地址实际上也是一个线性地址。为什么？
答案：内核是从线性地址0x80040000加载的，标号.return所代表的汇编地址也是从0x80040000开始计算的。因此，它的汇编地址和线性地址相同。

 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 10:18:15 +0000</pubDate>
    </item>
    <item>
      <title>检测点20-1</title>
      <link>http://www.lizhongc.com/thread-783-1-1.html</link>
      <description><![CDATA[检测点20.1

1，在这里，标号start所代表的汇编地址实际上也是一个线性地址。为什么？
答：用户程序不分段，或者说只分一个段，而标号start所代表的汇编地址就是它相对于整个程序开头的偏移量。在平坦内存模型下，整个4GB线性地址空间就是一个完整的段，段的基地址为0， ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 10:11:24 +0000</pubDate>
    </item>
    <item>
      <title>第19章习题</title>
      <link>http://www.lizhongc.com/thread-782-1-1.html</link>
      <description><![CDATA[第19章习题

1．代码清单18-2（c18_app0.asm）的第69行是通过调用门进入系统核心显示字符串的指令：
69     call far [fsrintString]
请以该指令的执行过程为例，说明为什么必须将系统核心映射到每个任务的4GB地址空间内才行？
答案：每个任务都有自己独立的局部空间， ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 09:55:21 +0000</pubDate>
    </item>
    <item>
      <title>检测点19-2</title>
      <link>http://www.lizhongc.com/thread-781-1-1.html</link>
      <description><![CDATA[检测点19.2

在分页模式下，某程序运行时，段部件发出一个线性地址0x0C005032访问内存数据。如果该线性地址对应的物理页是0x0000A000，页表的物理地址是0x00003000，那么，操作系统在此程序开始运行前，是如何安排与该线性地址相关的页目录项和页表项的？
答案：此题目 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 09:43:40 +0000</pubDate>
    </item>
    <item>
      <title>检测点19-1</title>
      <link>http://www.lizhongc.com/thread-780-1-1.html</link>
      <description><![CDATA[检测点19.1

1，如果系统中同时存在两个任务，那么，它们有可能使用相同的线性地址来访问内存吗？比如说，在执行任务A时，段部件发出的线性地址是0x60FF7008；在执行任务B时，段部件发出的地址也是0x60FF7008。 
答：这是有可能的，毕竟每个任务可以有自己独立的4GB虚 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 09:23:31 +0000</pubDate>
    </item>
    <item>
      <title>第18章习题</title>
      <link>http://www.lizhongc.com/thread-779-1-1.html</link>
      <description><![CDATA[第18章习题

用Bochs调试本章的程序，探索在中断处理过程内设置断点的技巧。

答案略。]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 09:11:44 +0000</pubDate>
    </item>
    <item>
      <title>第17章习题</title>
      <link>http://www.lizhongc.com/thread-778-1-1.html</link>
      <description><![CDATA[第17章习题

在本章的系统中添加第三个任务，观察任务的切换和屏幕的输出。

答案略。]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 09:11:27 +0000</pubDate>
    </item>
    <item>
      <title>第16章习题</title>
      <link>http://www.lizhongc.com/thread-777-1-1.html</link>
      <description><![CDATA[第16章习题

1．修改代码清单16-1和15-3，使用户程序能够正常返回到内核，并在显示消息后停机。
答案：将jmp far [fs:TerminateProgram]改为call far [fs:TerminateProgram]。

2．修改代码清单16-1和15-3，使得通过调用门请求读取硬盘扇区的服务时，通过栈传递参数。而 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 06:07:23 +0000</pubDate>
    </item>
    <item>
      <title>检测点16-2</title>
      <link>http://www.lizhongc.com/thread-776-1-1.html</link>
      <description><![CDATA[检测点16.2

1．通过调用门转移控制时，CPL、RPL和目标代码段描述符的DPL必须在数值上符合_CPL≥目标代码段描述符的DPL_的条件；CPL、RPL和调用门描述符的DPL必须在数值上符合_CPL≤调用门描述符的DPL且RPL≤调用门描述符的DPL_的条件。即，只能通过调用门将控制转移到 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 06:04:24 +0000</pubDate>
    </item>
    <item>
      <title>检测点16-1</title>
      <link>http://www.lizhongc.com/thread-775-1-1.html</link>
      <description><![CDATA[检测点16.1

1．选择填空：x86处理器提供了4个特权级别0、1、2和3。较小的数字拥有较（B）的特权级别，其中3特权级是最（A）的低权级别。可选择答案：A.低  B.高

2．将控制转移到另一个代码段时，如果目标段不是依从的，并且转移时不通过门，则CPL、RPL和DPL之间的关系 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Tue, 17 Mar 2026 06:04:01 +0000</pubDate>
    </item>
    <item>
      <title>第15章习题</title>
      <link>http://www.lizhongc.com/thread-774-1-1.html</link>
      <description><![CDATA[第15章习题

在本章中，用户程序自己指定了栈空间。现在，修改内核程序和用户程序，用户程序不指定栈空间，由内核程序为用户程序动态分配4KB的栈空间。
答案：
首先，在源文件c15_core.asm中，删除467～470行，改为如下指令
接下来，修改源文件c15_app.asm，程序头部中 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Mon, 16 Mar 2026 08:51:34 +0000</pubDate>
    </item>
    <item>
      <title>第14章习题</title>
      <link>http://www.lizhongc.com/thread-773-1-1.html</link>
      <description><![CDATA[第14章习题

1．修改本章代码清单，使之可以检测1MB以上的内存空间（从地址0x00100000开始，不考虑高速缓存的影响）。要求：对内存的读写按双字的长度进行，并在检测的同时显示已检测的内存数量。建议对每个双字单元用两个花码0x55AA55AA和0xAA55AA55进行检测。
答案：
 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Mon, 16 Mar 2026 08:50:45 +0000</pubDate>
    </item>
    <item>
      <title>检测点14-2</title>
      <link>http://www.lizhongc.com/thread-772-1-1.html</link>
      <description><![CDATA[检测点14.2

当前栈段描述符的B位是1，基地址为0x00700000，界限值为0xFFFFE。那么，在32位模式下，该栈段的有效地址范围是0x00700000～（0x007FFFFE）。当ESP的内容为0xFFFFF002时，还能压入一个双字吗？为什么？
说明：如果粒度G是1，则实际使用的段界限的最小值是FFF ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Mon, 16 Mar 2026 08:50:03 +0000</pubDate>
    </item>
    <item>
      <title>检测点14-1</title>
      <link>http://www.lizhongc.com/thread-771-1-1.html</link>
      <description><![CDATA[检测点14.1

1．若某段描述符中的段界限是0xFFFFC，当粒度为字节和4KB时，实际使用的段界限是多少？
答：粒度为字节时，实际使用的段界限就是0xFFFFC；粒度为4KB时，实际使用的段界限是0xFFFFC*0x1000+0xFFF=0xFFFFCFFF。

2．若GDT的界限为0x87，寄存器AX的内容为0x008 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Mon, 16 Mar 2026 08:49:31 +0000</pubDate>
    </item>
    <item>
      <title>第13章习题</title>
      <link>http://www.lizhongc.com/thread-770-1-1.html</link>
      <description><![CDATA[第13章习题

1．在编译阶段，如果指定的是bits 16，那么，
mov bx, 16
的机器码为BB 10 00。相反，
mov ebx, 16
的机器码为66 BB 10 00 00 00。
试问，如果指定了bits 32，这两条指令编译后的机器码又分别是什么？
答：
32位操作尺寸下，16位操作要加前缀66，32位操作不 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Mon, 16 Mar 2026 08:49:09 +0000</pubDate>
    </item>
    <item>
      <title>检测点13-1</title>
      <link>http://www.lizhongc.com/thread-769-1-1.html</link>
      <description><![CDATA[检测点13-1

1．如果将代码段描述符中的基地址部分设置为0，则这条jmp指令该如何编写?
答：基地址为0则必须修改段内偏移量。即，
jmp 0000000000010_0_00B:flush+0x7c00

2．参照上一章的方法，在Bochs中观察段寄存器在各个阶段的状态，包括计算机加电后、设置CR0寄存器 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Mon, 16 Mar 2026 08:48:30 +0000</pubDate>
    </item>
    <item>
      <title>第12章习题</title>
      <link>http://www.lizhongc.com/thread-768-1-1.html</link>
      <description><![CDATA[第12章习题

如果一个数据段描述符的G位是1，E位是0，段的基地址为0，段界限为1，该段一共有多少个字节？段的线性地址范围是什么？
答：E位是0表明是向上扩展的数据段。对于向上扩展且粒度为4KB的段，可以把描述符中的界限值看成是从0开始的最大序号。题目中界限值为1， ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Sun, 15 Mar 2026 03:52:35 +0000</pubDate>
    </item>
    <item>
      <title>检测点12-1</title>
      <link>http://www.lizhongc.com/thread-767-1-1.html</link>
      <description><![CDATA[检测点12.1

1．某描述符是64位的0x004F9AFFFFFFFFFF，请问，段基地址是多少？段界限是多少？G、D、L、AVL、P、DPL、S和TYPE各是什么？
答：如图所示，段基地址为0x00FFFFFF；段界限为0xFFFFF；G=0；D=1；L=0；AVL=0；P=1；DPL=00；S=1；TYPE=1010。


2．32位保护模式 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Sun, 15 Mar 2026 03:28:33 +0000</pubDate>
    </item>
    <item>
      <title>第10章习题</title>
      <link>http://www.lizhongc.com/thread-766-1-1.html</link>
      <description><![CDATA[第10章习题

1．修改代码10-1，对8259芯片编程，屏蔽除RTC外的其他所有中断，观察字符“@”的变化速度。
答案：
删除第157~159行，改为如下内容：
; 主片：只允许 IRQ2
mov al, 0xfb
out 0x21, al

; 从片：只允许 IRQ0
mov al, 0xfe
out 0xa1, al

重新编译并写入虚拟 ...]]></description>
      <category>《x86汇编语言：从实模式到保护模式》第2版检测点和习题解答</category>
      <author>站长</author>
      <pubDate>Sun, 15 Mar 2026 01:35:29 +0000</pubDate>
    </item>
  </channel>
</rss>