• x86汇编语言:从实模式到保护模式
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

x86汇编语言:从实模式到保护模式

42.9 7.7折 56 全新

仅1件

河北保定
认证卖家担保交易快速发货售后保障

作者李忠、王晓波、余洁 著

出版社电子工业出版社

出版时间2013-01

版次1

装帧平装

货号9787121187995

上书时间2024-11-26

尚贤文化济南分店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
图书标准信息
  • 作者 李忠、王晓波、余洁 著
  • 出版社 电子工业出版社
  • 出版时间 2013-01
  • 版次 1
  • ISBN 9787121187995
  • 定价 56.00元
  • 装帧 平装
  • 开本 16开
  • 纸张 其他
  • 页数 360页
  • 字数 620千字
  • 正文语种 简体中文
【内容简介】
  李忠编著的《x86汇编语言:从实模式到保护模式》采用开源的NASM汇编语言编译器和VirtualBox虚拟机软件,以个人计算机广泛采用的Intel处理器为基础,详细讲解了Intel处理器的指令系统和工作模式,以大量的代码演示了16/32/64位软件的开发方法,介绍了处理器的16位实模式和32位保护模式,以及基本的指令系统。
  《x86汇编语言:从实模式到保护模式》是一本有趣的书,它没有把篇幅花在计算一些枯燥的数学题上。相反,它教你如何直接控制硬件,在不借助于BIOS、DOS、Windows、Linux或者任何其他软件支持的情况下来显示字符、读取硬盘数据、控制其他硬件等。本书可作为大专院校相关专业学生和计算机编程爱好者的教程。
【目录】
第1部分预备知识

第1章十六进制计数法

1.1二进制计数法回顾

1.1.1关于二进制计数法

1.1.2二进制到十进制的转换

1.1.3十进制到二进制的转换

1.2十六进制计数法

1.2.1十六进制计数法的原理

1.2.2十六进制到十进制的转换

1.2.3十进制到十六进制的转换

1.3为什么需要十六进制

本章习题

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

2.1最早的处理器

2.2寄存器和算术逻辑部件

2.3内存储器

2.4指令和指令集

2.5古老的Intel处理器

2.5.1的通用寄存器

2.5.2程序的重定位难题

2.5.3内存分段机制

2.5.4的内存分段机制

本章习题

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

3.1汇编语言简介

3.2NASM编译器

3.2.1从网上下载NASM安装程序

3.2.2安装NASM编译器

3.2.3下载配书源码和工具

3.2.4用Nasmide体验代码的书写和编译过程

3.2.5用HexView观察编译后的机器代码

本章习题

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

4.1计算机的启动过程

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

4.1.2计算机的加电和复位

4.1.3基本输入输出系统

4.1.4硬盘及其工作原理

4.1.5一切从主引导扇区开始

4.2创建和使用虚拟机

4.2.1别害怕,虚拟机是软件

4.2.2下载OracleVMVirtualBox

4.2.3安装OracleVMVirtualBox

4.2.4创建一台虚拟PC

4.2.5虚拟硬盘简介

4.2.6练习使用FixVhdWr工具向虚拟硬盘写数据

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

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

5.1欢迎来到主引导扇区

5.2注释

5.3在屏幕上显示文字

5.3.1显卡和显存

5.3.2初始化段寄存器

5.3.3显存的访问和ASCII代码

5.3.4显示字符

5.4显示标号的汇编地址

5.4.1标号

5.4.2如何显示十进制数字

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

5.4.4分解数的各个数位

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

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

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

5.6.1主引导扇区有效标志

5.6.2代码的保存和编译

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

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

5.7.2启动虚拟机观察运行结果

5.7.3程序的调试

本章习题

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

6.1代码清单6-1

6.2跳过非指令的数据区

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

6.4段地址的初始化

6.5段之间的批量数据传送

6.6使用循环分解数位

6.7计算机中的负数

6.7.1无符号数和有符号数

6.7.2处理器视角中的数据类型

6.8数位的显示

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

6.9.1奇偶标志位PF

6.9.2进位标志CF

6.9.3溢出标志OF

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

6.9.5条件转移指令

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

6.11观察运行结果

本章习题

第7章比高斯更快的计算

7.1从1加到100的故事

7.2代码清单7-1

7.3显示字符串

7.4计算1到100的累加和

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

7.5.1堆栈和堆栈段的初始化

7.5.2分解各个数位并压栈

7.5.3出栈并显示各个数位

7.5.4进一步认识堆栈

7.6程序的编译和运行

7.7处理器的寻址方式

7.7.1寄存器寻址

7.7.2立即寻址

7.7.3内存寻址

本章习题

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

8.1本章代码清单

8.1.1本章意图

8.1.2代码清单8-1

8.2用户程序的结构

8.2.1分段、段的汇编地址和段内汇编地址

8.2.2用户程序头部

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

8.3.1初始化和决定加载位置

8.3.2准备加载用户程序

8.3.3外围设备及其接口

8.3.4I/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.2调用字符串显示例程

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.2可屏蔽中断

9.1.3实模式下的中断向量表

9.1.4实时时钟、CMOSRAM和BCD编码

9.1.5代码清单9-1

9.1.6初始化8259、RTC和中断向量表

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

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

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

9.2内部中断

9.3软中断

9.3.1常用的BIOS中断

9.3.2代码清单9-2

9.3.3从键盘读字符并显示

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

本章习题

第3部分位保护模式

第10章位Intel微处理器编程架构

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

10.1.1寄存器的扩展

10.1.2基本的工作模式

10.1.3线性地址

10.2现代处理器的结构和特点

10.2.1流水线

10.2.2高速缓存

10.2.3乱序执行

10.2.4寄存器重命名

10.2.5分支目标预测

10.3位模式的指令系统

10.3.1位处理器的寻址方式

10.3.2操作数大小的指令前缀

10.3.3一般指令的扩展

本章习题

第11章进入保护模式

11.1代码清单11-1

11.2全局描述符表

11.3存储器的段描述符

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

11.5关于第21条地址线A20的问题

11.6保护模式下的内存访问

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

11.8保护模式下的堆栈

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

11.8.2检验32位下的堆栈操作

11.9程序的编译和运行

本章习题

第12章存储器的保护

12.1代码清单12-1

12.2进入32位保护模式

12.2.1话说movds,ax和movds,eax

12.2.2创建GDT并安装段描述符

12.3修改段寄存器时的保护

12.4地址变换时的保护

12.4.1代码段执行时的保护

12.4.2堆栈操作时的保护

12.4.3数据访问时的保护

12.5使用别名访问代码段对字符排序

12.6程序的编译和运行

本章习题

第13章程序的动态加载和执行

13.1本章代码清单

13.2内核的结构、功能和加载

13.2.1内核的结构

13.2.2内核的加载

13.2.3安装内核的段描述符

13.3在内核中执行

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

13.4.1用户程序的结构

13.4.2计算用户程序占用的扇区数

13.4.3简单的动态内存分配

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

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

13.5执行用户程序

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

本章习题

第14章任务和特权级保护

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

14.1.1任务、任务的LDT和TSS

14.1.2全局空间和局部空间

14.1.3特权级保护概述

14.2代码清单14-1

14.3内核程序的初始化

14.3.1调用门

14.3.2调用门的安装和测试

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

14.4.1任务控制块和TCB链

14.4.2使用堆栈传递过程参数

14.4.3加载用户程序

14.4.4创建局部描述符表

14.4.5重定位U-SALT表

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

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.2进入3特权级的用户程序的执行

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

本章习题

第15章任务切换

15.1本章代码清单

15.2任务切换前的设置

15.3任务切换的方法

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

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

15.6程序的编译和运行

本章习题

第16章分页机制和动态页面分配

16.1分页机制概述

16.1.1简单的分页模型

16.1.2页目录、页表和页

16.1.3地址变换的具体过程

16.2本章代码清单

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

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

16.3.2任务全局空间和局部空间的页面映射

16.4创建内核任务

16.4.1内核的虚拟内存分配

16.4.2页面位映射串和空闲页的查找

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

16.4.4创建内核任务的TSS

16.5用户任务的创建和切换

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

16.5.2平坦模型和用户程序的结构

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

16.5.4用户程序的加载

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

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

16.5.7切换到用户任务执行

16.6程序的编译和执行

本章习题

第17章中断和异常的处理

17.1中断和异常

17.1.1中断和异常概述

17.1.2中断描述符表、中断门和陷阱门

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

17.1.4中断任务

17.1.5错误代码

17.2本章代码清单

17.3内核的加载和初始化

17.3.1彻底终结多段模型

17.3.2创建中断描述符表

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

17.3.4A芯片的初始化

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

17.4内核任务的创建

17.4.1创建内核任务的TCB

17.4.2宏汇编技术

17.5用户任务的创建

17.5.1准备加载用户程序

17.5.2转换后援缓冲器的刷新

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

17.6程序的编译和执行

本章习题
点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP