第15章习题解答(二)——《x86汇编语言:从实模式到保护模式》读书笔记41

我们接着上篇博文说。

2.2 第二题题目

修改本章的源程序,使之能够顺序完成以下工作:
(1)从程序管理器任务切换到任务A,显示一条消息;
(2)再从任务A转换到任务B,显示一条消息;
(3)从B直接返回到程序管理任务。

2.3 分析

(1)很容易,(2)如何实现?我的思路是在任务A的符号表中安装B的任务门。

程序运行的具体流程如下:

  1. 内核的符号表中要增加一个条目,用来接收B任务门描述符的选择子
  2. A任务的符号表中也要有B任务的任务门条目(留待内核重定位);
  3. 内核加载任务B,在内核符号表中安装B的任务门描述符的选择子;
  4. 内核加载任务A,加载的时候,自然会对A的符号表进行重定位,这样就把B任务的任务门选择子写到了A的符号表中;
  5. 从内核切换到任务A;
  6. 任务A通过B的任务门(已经在符号表中)切换到任务B;
  7. 任务B返回到内核。

2.4 对内核代码的修改

在内核符号表中增加一个条目。

安装调用门的时候,一定要除去最后的任务门。

加载任务B,安装B的任务门描述符,并且填写选择子到符号表。

内核加载任务A,通过JMP指令切换过去。

2.4 对用户程序1的修改

在A的符号表中增加一个条目。

以上截图,只截取了比较重要的部分,其他地方的修改,还请读者下载我的完整代码。

2.5 运行结果

代码下载地址:
http://download.csdn.net/detail/u013490896/9578192

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值