《80X86汇编语言程序设计教程》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:杨季文等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:1998
  • ISBN:7302029016
  • 页数:595 页
图书介绍:内容提要本书分为三部分。第一部分是基础部分,以8086/8088为背景,以DOS和PC兼容机为软硬件平台,以MASM和TASM为汇编器,介绍汇编语言的有关概念,讲解汇编语言程序设计技术。第二部分是提高部分,以80386为背景,以新一代微处理器Pentium为目标,细致和通俗地介绍了保护方式下的有关概念,系统和详细地讲解了保护方式下的编程技术,真实和生动地展示了保护方式下的编程细节。第三部分是上机实验指导。本书的第一部分适合初学者,可作为学习汇编语言程序设计的教材。本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术的参考书。

第一部分 基础部分 1

第1章 绪论 1

1.1 汇编语言概述 1

1.1.1 汇编语言 1

1.1.2 汇编语言的特点 2

1.1.3 恰当地使用汇编语言 3

1.2 数据的表示和类型 4

1.2.1 数值数据的表示 4

1.2.2 非数值数据的表示 6

1.2.3 基本数据类型 7

1.3 Intel系列CPU简介 8

1.3.1 8位微处理器 8

1.3.2 16位微处理器 9

1.3.3 32位微处理器 11

1.3.4 Pentium和Pentium Pro 13

1.4 习题 14

2.1.1 8086/8088CPU寄存器组 15

2.1 8086/8088寄存器组 15

第2章 8086/8088寻址方式和指令系统 15

2.1.2 标志寄存器 17

2.2 存储器分段和地址的形成 19

2.2.1 存储单元的地址和内容 19

2.2.2 存储器的分段 20

2.2.3 物理地址的形成 20

2.2.4 段寄存器的引用 21

2.3 8086/8088的寻址方式 22

2.3.3 直接寻址方式 23

2.3.1 立即寻址方式 23

2.3.2 寄存器寻址方式 23

2.3.4 寄存器间接寻址方式 24

2.3.5 寄存器相对寻址方式 25

2.3.6 基址加变址寻址方式 26

2.3.7 相对基址加变址寻址方式 27

2.4 8086/8088指令系统 28

2.4.1 指令集说明 28

2.4.2 数据传送指令 29

2.4.3 堆栈操作指令 32

2.4.4 标志操作指令 34

2.4.5 加减运算指令 36

2.4.6 乘除运算指令 41

2.4.7 逻辑运算和移位指令 44

2.4.8 转移指令 51

2.5 习题 58

3.1.1 语句的种类和格式 63

3.1 汇编语言的语句 63

第3章 汇编语言及其程序设计初步 63

3.1.2 数值表达式 64

3.1.3 地址表达式 67

3.2 变量和标号 67

3.2.1 数据定义语句 67

3.2.2 变量和标号 70

3.3 常用伪指令语句和源程序组织 73

3.3.1 符号定义语句 74

3.3.2 段定义语句 75

3.3.3 汇编语言源程序的组织 79

3.4 顺序程序设计 81

3.4.1 顺序程序举例 81

3.4.2 简单查表法代码转换 83

3.4.3 查表法求函数值 85

3.5 分支程序设计 86

3.5.1 分支程序举例 86

3.5.2 利用地址表实现多向分支 91

3.6.1 循环程序举例 94

3.6 循环程序设计 94

3.6.2 多重循环程序举例 103

3.7 习题 106

第4章 子程序设计和DOS功能调用 110

4.1 子程序设计 110

4.1.1 过程调用和返回指令 110

4.1.2 过程定义语句 115

4.1.3 子程序举例 116

4.1.4 子程序说明信息 118

4.1.5 寄存器的保护与恢复 119

4.2 主程序与子程序间的参数传递 121

4.2.1 利用寄存器传递参数 121

4.2.2 利用约定存储单元传递参数 123

4.2.3 利用堆栈传递参数 125

4.2.4 利用CALL后续区传递参数 127

4.3 DOS功能调用及应用 129

4.3.1 DOS功能调用概述 129

4.3.2 基本I/O功能调用 130

4.3.3 应用举例 132

4.4 磁盘文件管理及应用 141

4.4.1 DOS磁盘文件管理功能调用 141

4.4.2 应用举例 143

4.5 子程序的递归和重入 150

4.5.1 递归子程序 150

4.5.2 可重入子程序 151

4.6 习题 152

5.1.1 I/O端口地址和I/O指令 155

5.1 输入和输出的基本概念 155

第5章 输入输出与中断 155

5.1.2 数据传送方式 156

5.1.3 存取RT/CMOS RAM 157

5.2 查询方式传送数据 160

5.2.1 查询传送方式 160

5.2.2 读实时钟 161

5.2.3 查询方式打印输出 162

5.3.1 中断和中断传送方式 164

5.3 中断 164

5.3.2 中断向量表 165

5.3.3 中断响应过程 168

5.3.4 外部中断 168

5.3.5 内部中断 170

5.3.6 中断优先级和中断嵌套 172

5.3.7 中断处理程序的设计 173

5.4 基本输入输出系统BIOS 174

5.4.1 基本输入输出系统BIOS概述 174

5.4.2 键盘输入 175

5.4.3 显示输出 178

5.4.4 打印输出 188

5.5 软中断处理程序举例 191

5.5.1 打印I/O程序 191

5.5.2 时钟显示程序 194

5.6 习题 197

6.1 字符串处理 200

6.1.1 字符串操作指令 200

第6章 简单应用程序的设计 200

6.1.2 重复前缀 205

6.1.3 字符串操作举例 208

6.2 十进制数算术运算调整指令及应用 215

6.2.1 给合BCD码的算术运算调整指令 215

6.2.2 未组合BCD码的算术运算调整指令 216

6.2.3 应用举例 218

6.3 DOS程序段前缀和特殊情况处理程序 224

6.3.1 DOS程序段前缀PSP 224

6.3.2 对Ctrl+C键和Ctrl+Break键的处理 228

6.4 TSR程序设计举例 234

6.4.1 驻留的时钟显示程序 234

6.4.2 热键激活的TSR程序 236

6.5 习题 238

第7章 高级汇编语言技术 241

7.1 结构和记录 241

7.1.1 结构 241

7.1.2 记录 246

7.2 宏 249

7.2.1 宏指令的定义和使用 250

7.2.2 宏指令的用途 251

7.2.3 宏指令中参数的使用 253

7.2.4 特殊的宏运算符 254

7.2.5 宏与子程序的区别 256

7.2.6 与宏有关的伪指令 256

7.2.7 宏定义的嵌套 258

7.3 重复汇编 260

7.3.1 伪指令REPT 260

7.3.2 伪指令IRP 261

7.3.3 伪指令IRPC 262

7.4 条件汇编 262

7.4.1 条件汇编伪指令 263

7.4.2 条件汇编与宏结合 265

7.5 源程序的结合 268

7.5.1 源程序的结合 268

7.5.2 宏库的使用 271

7.6 习题 273

第8章 模块化程序设计技术 275

8.1 段的完整定义 275

8.1.1 完整的段定义 275

8.1.2 关于堆栈段的说明 280

8.1.3 段组的说明和使用 281

8.2 段的简化定义 285

8.2.1 存储模型说明伪指令 285

8.2.2 简化的段定义伪指令 285

8.2.3 存储模型说明伪指令的隐含动作 288

8.3.1 伪指令PUBLIC和伪指令EXTRN 289

8.3 模块间的通信 289

8.3.2 模块间的转移 291

8.3.3 模块间的信息传递 293

8.4 子程序库 298

8.4.1 子程序库 298

8.4.2 建立子程序库 298

8.4.3 使用举例 301

8.5.1 汇编格式的编译结果 303

8.5 编写供Turbo C调用的函数 303

8.5.2 汇编模块应该遵守的约定 306

8.5.3 参数传递和寄存器保护 307

8.5.4 举例 309

8.6 习题 313

第二部分 提高部分 314

第9章 90386程序设计基础 314

9.1 80386寄存器 314

9.1.2 段寄存器 315

9.1.1 通用寄存器 315

9.1.3 指令指针和标志寄存器 316

9.2 80386存储器寻址 316

9.2.1 存储器寻址基本概念 317

9.2.2 灵活的存储器寻址方式 318

9.2.3 支持各种数据结构 320

9.3 80386指令集 320

9.3.1 数据传送指令 321

9.3.2 算术运算指令 326

9.3.3 逻辑运算和移位指令 327

9.3.4 控制转移指令 330

9.3.5 串操作指令 334

9.3.6 高级语言支持指令 337

9.3.7 条件字节设置指令 340

9.3.8 位操作指令 342

9.3.9 处理器控制指令 345

9.4.1 说明 346

9.4 实方式下的程序设计 346

9.4.2 实例 348

9.5 习题 358

第10章 保护方式下的80386及其编程 361

10.1 保护方式简述 361

10.1.1 存储管理机制 361

10.1.2 保护机制 363

10.2 分段管理机制 364

10.2.1 段定义和虚拟地址到线性地址转换 364

10.2.2 存储段描述符 366

10.2.3 全局和局部描述符表 369

10.2.4 段选择子 370

10.2.5 段描述符高速缓冲寄存器 371

10.3 80386控制寄存器和系统地址寄存器 372

10.3.1 控制寄存器 372

10.3.2 系统地址寄存器 374

10.4 实方式与保护方式切换实例 375

10.4.1 演示实方式和保护方式切换的实例(实例一) 376

10.4.2 演示32位代码段和16位代码段切换的实例(实例二) 382

10.5.1 系统段描述符 389

10.5 任务状态段和控制门 389

10.5.2 门描述符 390

10.5.3 任务状态段 392

10.6 控制转移 395

10.6.1 任务内无特权级变换的转移 395

10.6.2 演示任务内无特权级变换转移的实例(实例三) 397

10.6.3 任务内不同特权级的变换 408

10.6.4 演示任务内特权级变换的实例(实例四) 410

10.6.5 任务切换 420

10.6.6 演示任务切换的实例(实例五) 422

10.7 80386的中断和异常 431

10.7.1 80386的中断和异常 431

10.7.2 异常类型 433

10.7.3 中断和异常的转移方法 437

10.7.4 演示中断处理的实例(实例六) 442

10.7.5 演示异常处理的实例(实例七) 450

10.7.6 各种转移途径小结 465

10.8 操作系统类指令 466

10.8.1 实方式和任何特权级下可执行的指令 467

10.8.2 实方式及特权级0下可执行的指令 468

10.8.3 只能在保护方式下执行的指令 470

10.8.4 显示关键寄存器内容的实例(实例八) 473

10.8.5 特权指令 477

10.9 输入/输出保护 477

10.9.1 输入/输出保护 477

10.9.3 演示输入/输出保护的实例(实例九) 481

10.9.2 重要标志保护 481

10.10 分页管理机制 492

10.10.1 存储器分页管理机制 492

10.10.2 线性地址到物理地址的转换 493

10.10.3 页级保护和虚拟存储器支持 496

10.10.4 页异常 498

10.10.5 演示分页机制的实例(实例十) 499

10.11 虚拟8086方式 506

10.11.1 V86方式 506

10.11.2 进入和离开V86方式 506

10.11.3 演示进入和离开V86方式的实例(实例十一) 510

10.11.4 V86方式下的敏感指令 522

10.12 习题 523

第11章 80486及Pentium程序设计基础 525

11.1 80486程序设计基础 525

11.1.1 寄存器 525

11.1.2 指令系统 527

11.1.3 片上超高速缓存 530

11.2.1 调试寄存器 535

11.2 80486对调试的支持 535

11.2.2 演示调试故障/陷阱的实例 538

11.3 Pentium程序设计基础 543

11.3.1 寄存器 543

11.3.2 指令系统 545

11.3.3 处理器的识别 548

11.3.4 片上超高速缓存 553

11.4 基于Pentium的程序优化技术 557

11.4.1 流水线优化技术 557

11.4.2 分支优化技术 564

11.4.3 超高速缓存优化技术 567

11.5 习题 569

第三部分 上机实验指导 572

第12章 实验指导 572

12.1 实验的一般步骤 572

12.2 汇编器和连接器的使用 574

12.2.1 MASM的使用 574

12.2.2 LINK的使用 575

12.2.3 TASM的使用 577

12.3 调试器DEBUG的使用 578

12.2.4 TLINK的使用 578

12.3.1 启动和退出DEBUG 579

12.3.2 命令一览 580

12.3.3 利用DEBUG调试程序 582

12.4 Turbo Debugger的使用 587

12.4.1 启动和退出TD 587

12.4.2 利用TD调试汇编程序 588

参考文献 592

附录Pentium指令与标志参考表 593