X汇编语言从实模式到保护模式pdf下载pdf下载

X汇编语言从实模式到保护模式百度网盘pdf下载

作者:
简介:本篇主要提供X汇编语言从实模式到保护模式pdf下载
出版社:悟元图书专营店
出版时间:2013-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息

  • 商品名:正版 X86汇编语言从实模式到保护模式97871□1187995李忠
  • ISBN:9787121187995
  • 定价:56
  • 出版社:电子工业出版社
  • 作者:李忠,王□□,余洁

参考信息(以实物为准)

  • 出版时间:2013-01-01
  • 印刷时间:
  • 版次:1
  • 印次:1
  • 包装:平装
  • 开本:16开
  • 用纸:
  • 页数:
  • 字数:

编辑推荐

本书全面、系统、深入地介绍x86处理器在实模式,特别是保护模式下的工作原理 ,解开了计算机从16位到3□位工作模式的秘密;还以大量的实例,多侧面地展示了操作系统在整个计算机系统中的地位和作用。

内容简介

  李忠编著的《x86汇编语言:从实模式到保护模式》采用开源的NASM汇编语言编译器和VirtualBox虚拟机软件,以个人计算机广泛采用的Intel处理器为基础,详细讲解了Intel处理器的指令系统和工作模式,以大量的代码演示了16/3□/64位软件的开发方法,介绍了处理器的16位实模式和3□位保护模式,以及基本的指令系统。
  《x86汇编语言:从实模式到保护模式》是一本有趣的书,它没有把篇幅花在计算一些枯燥的数学题上。相反,它教你如何直接控制硬件,在不借助于BIOS、DOS、Windows、Linux或者任何其他软件支持的情况下来显示字符、读取硬盘数据、控制其他硬件等。本书可作为大专院校相关专业学生和计算机编程爱好者的教程。

目录

□□部分 预备知识

□□章 十六进制计数法

1.1 二进制计数法回顾

1.1.1 关于二进制计数法

1.1.□ 二进制到十进制的转换

1.1.3 十进制到二进制的转换

1.□ 十六进制计数法

1.□.1 十六进制计数法的原理

1.□.□ 十六进制到十进制的转换

1.□.3 十进制到十六进制的转换

1.3 为什么需要十六进制

本章习题

第□章 处理器、内存和指令

□.1 □早的处理器

□.□ 寄存器和算术逻辑部件

□.3 内存储器

□.4 指令和指令集

□.5 古老的Intel 处理器

□.5.1 的通用寄存器

□.5.□ 程序的重定位难题

□.5.3 内存分段机制

□.5.4 的内存分段机制

本章习题

第3章 汇编语言和汇编软件

3.1 汇编语言简介

3.□ NASM编译器

3.□.1 从网上下载NASM安装程序

3.□.□ 安装NASM编译器

3.□.3 下载配书源码和工具

3.□.4 用Nasmide体验代码的书写和编译过程

3.□.5 用HexView观察编译后的机器代码

本章习题

第4章 虚拟机的安装和使用

4.1 计算机的启动过程

4.1.1 如何将编译好的程序提交给处理器

4.1.□ 计算机的加电和复位

4.1.3 基本输入输出系统

4.1.4 硬盘及其工作原理

4.1.5 一切从主引导扇区开始

4.□ 创建和使用虚拟机

4.□.1 别害怕,虚拟机是软件

4.□.□ 下载Oracle VM VirtualBox

4.□.3 安装Oracle VM VirtualBox

4.□.4 创建一台虚拟PC

4.□.5 虚拟硬盘简介

4.□.6 练习使用FixVhdWr工具向虚拟硬盘写数据

第□部分 位处理器下的实模式

第5章 编写主引导扇区代码

5.1 欢迎来到主引导扇区

5.□ 注释

5.3 在屏幕上显示文字

5.3.1 显卡和显存

5.3.□ 初始化段寄存器

5.3.3 显存的访问和ASCII代码

5.3.4 显示字符

5.4 显示标号的汇编地址

5.4.1 标号

5.4.□ 如何显示十进制数字

5.4.3 在程序中声明并初始化数据

5.4.4 分解数的各个数位

5.4.5 显示分解出来的各个数位

5.5 使程序进入无限循环状态

5.6 完成并编译主引导扇区代码

5.6.1 主引导扇区有效标志

5.6.□ 代码的保存和编译

5.7 加载和运行主引导扇区代码

5.7.1 把编译后的指令写入主引导扇区

5.7.□ 启动虚拟机观察运行结果

5.7.3 程序的调试

本章习题

第6章 相同的功能,不同的代码

6.1 代码清单6-1

6.□ 跳过非指令的数据区

6.3 在数据声明中使用字面值

6.4 段地址的初始化

6.5 段之间的批量数据传送

6.6 使用循环分解数位

6.7 计算机中的负数

6.7.1 无符号数和有符号数

6.7.□ 处理器视角中的数据类型

6.8 数位的显示

6.9 其他标志位和条件转移指令

6.9.1 奇偶标志位PF

6.9.□ 进位标志CF

6.9.3 溢出标志OF

6.9.4 现有指令对标志位的影响

6.9.5 条件转移指令

6.10 NASM编译器的$和$$标记

6.11 观察运行结果

本章习题

第7章 比高斯更快的计算

7.1 从1加到100的故事

7.□ 代码清单7-1

7.3 显示字符串

7.4 计算1到100的累加和

7.5 累加和各个数位的分解与显示

7.5.1 堆栈和堆栈段的初始化

7.5.□ 分解各个数位并压栈

7.5.3 出栈并显示各个数位

7.5.4 进一步认识堆栈

7.6 程序的编译和运行

7.7 处理器的寻址方式

7.7.1 寄存器寻址

7.7.□ 立即寻址

7.7.3 内存寻址

本章习题

第8章 硬盘和显卡的访问与控制

8.1 本章代码清单

8.1.1 本章意图

8.1.□ 代码清单8-1

8.□ 用户程序的结构

8.□.1 分段、段的汇编地址和段内汇编地址

8.□.□ 用户程序头部

8.3 加载程序(器)的工作流程

8.3.1 初始化和决定加载位置

8.3.□ 准备加载用户程序

8.3.3 外围设备及其接口

8.3.4 I/O端口和端口访问

8.3.5 通过硬盘控制器端口读扇区数据

8.3.6 过程调用

8.3.7 加载用户程序

8.3.8 用户程序重定位

8.3.9 将控制权交给用户程序

8.3.10 处理器的无条件转移指令

8.4 用户程序的工作流程

8.4.1 初始化段寄存器和堆栈切换

8.4.□ 调用字符串显示例程

8.4.3 过程的嵌套

8.4.4 屏幕光标控制

8.4.5 取当前光标位置

8.4.6 处理回车和换行字符

8.4.7 显示可打印字符

8.4.8 滚动屏幕内容

8.4.9 重置光标

8.4.10 切换到另一个代码段中执行

8.4.11 访问另一个数据段

8.5 编译和运行程序并观察结果

本章习题

第9章 中断和动态时钟显示

9.1 外部硬件中断

9.1.1 非屏蔽中断

9.1.□ 可屏蔽中断

9.1.3 实模式下的中断向量表

9.1.4 实时时钟、CMOS RAM和BCD编码

9.1.5 代码清单9-1

9.1.6 初始化8□59、RTC和中断向量表

9.1.7 使处理器进入低功耗状态

9.1.8 实时时钟中断的处理过程

9.1.9 代码清单9-1的编译和运行

9.□ 内部中断

9.3 软中断

9.3.1 常用的BIOS中断

9.3.□ 代码清单9-□

9.3.3 从键盘读字符并显示

9.3.4 代码清单9-□的编译和运行

本章习题

第3部分 位保护模式

□□0章 位Intel微处理器编程架构

10.1 IA-3□架构的基本执行环境

10.1.1 寄存器的扩展

10.1.□ 基本的工作模式

10.1.3 线性地址

10.□ 现代处理器的结构和特点

10.□.1 流水线

10.□.□ 高速缓存

10.□.3 乱序执行

10.□.4 寄存器重命名

10.□.5 分支目标预测

10.3 位模式的指令系统

10.3.1 位处理器的寻址方式

10.3.□ 操作数大小的指令前缀

10.3.3 一般指令的扩展

本章习题

□□1章 进入保护模式

11.1 代码清单11-1

11.□ 全局描述符表

11.3 存储器的段描述符

11.4 安装存储器的段描述符并加载GDTR

11.5 关于第□1条地址线A□0的问题

11.6 保护模式下的内存访问

11.7 清空流水线并串行化处理器

11.8 保护模式下的堆栈

11.8.1 关于堆栈段描述符中的界限值

11.8.□ 检验3□位下的堆栈操作

11.9 程序的编译和运行

本章习题

□□□章 存储器的保护

1□.1 代码清单1□-1

1□.□ 进入3□位保护模式

1□.□.1 话说mov ds,ax和mov ds,eax

1□.□.□ 创建GDT并安装段描述符

1□.3 修改段寄存器时的保护

1□.4 地址变换时的保护

1□.4.1 代码段执行时的保护

1□.4.□ 堆栈操作时的保护

1□.4.3 数据访问时的保护

1□.5 使用别名访问代码段对字符排序

1□.6 程序的编译和运行

本章习题

□□3章 程序的动态加载和执行

13.1 本章代码清单

13.□ 内核的结构、功能和加载

13.□.1 内核的结构

13.□.□ 内核的加载

13.□.3 安装内核的段描述符

13.3 在内核中执行

13.4 用户程序的加载和重定位

13.4.1 用户程序的结构

13.4.□ 计算用户程序占用的扇区数

13.4.3 简单的动态内存分配

13.4.4 段的重定位和描述符的创建

13.4.5 重定位用户程序内的符号地址

13.5 执行用户程序

13.6 代码的编译、运行和调试

本章习题

□□4章 任务和特权级保护

14.1 任务的隔离和特权级保护

14.1.1 任务、任务的LDT和TSS

14.1.□ 全局空间和局部空间

14.1.3 特权级保护概述

14.□ 代码清单14-1

14.3 内核程序的初始化

14.3.1 调用门

14.3.□ 调用门的安装和测试

14.4 加载用户程序并创建任务

14.4.1 任务控制块和TCB链

14.4.□ 使用堆栈传递过程参数

14.4.3 加载用户程序

14.4.4 创建局部描述符表

14.4.5 重定位U-SALT表

14.4.6 创建0、1和□特权级的堆栈

14.4.7 安装LDT描述符到GDT中

14.4.8 任务状态段TSS的格式

14.4.9 创建任务状态段TSS

14.4.10 安装TSS描述符到GDT中

14.4.11 带参数的过程返回指令

14.5 用户程序的执行

14.5.1 通过调用门转移控制的完整过程

14.5.□ 进入3特权级的用户程序的执行

14.5.3 检查调用者的请求特权级RPL

本章习题

□□5章 任 务 切 换

15.1 本章代码清单

15.□ 任务切换前的设置

15.3 任务切换的方法

15.4 用call/jmp/iret指令发起任务切换的实例

15.5 处理器在实施任务切换时的操作

15.6 程序的编译和运行

本章习题

□□6章 分页机制和动态页面分配

16.1 分页机制概述

16.1.1 简单的分页模型

16.1.□ 页目录、页表和页

16.1.3 地址变换的具体过程

16.□ 本章代码清单

16.3 使内核在分页机制下工作

16.3.1 创建内核的页目录和页表

16.3.□ 任务全局空间和局部空间的页面映射

16.4 创建内核任务

16.4.1 内核的虚拟内存分配

16.4.□ 页面位映射串和空闲页的查找

16.4.3 创建页表并登记分配的页

16.4.4 创建内核任务的TSS

16.5 用户任务的创建和切换

16.5.1 多段模型和段页式内存管理

16.5.□ 平坦模型和用户程序的结构

16.5.3 用户任务的虚拟地址空间分配

16.5.4 用户程序的加载

16.5.5 段描述符的创建(平坦模型)

16.5.6 重定位U-SALT并□□页目录表

16.5.7 切换到用户任务执行

16.6 程序的编译和执行

本章习题

□□7章 中断和异常的处理

17.1 中断和异常

17.1.1 中断和异常概述

17.1.□ 中断描述符表、中断门和陷阱门

17.1.3 中断和异常处理程序的保护

17.1.4 中断任务

17.1.5 错误代码

17.□ 本章代码清单

17.3 内核的加载和初始化

17.3.1 彻底终结多段模型

17.3.□ 创建中断描述符表

17.3.3 用定时中断实施任务切换

17.3.4 A芯片的初始化

17.3.5 平坦模型下的字符串显示例程

17.4 内核任务的创建

17.4.1 创建内核任务的TCB

17.4.□ 宏汇编技术

17.5 用户任务的创建

17.5.1 准备加载用户程序

17.5.□ 转换后援缓冲器的刷新

17.5.3 用户任务的创建和初始化

17.6 程序的编译和执行

本章习题