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

  • 购买积分:12 如何计算积分?
  • 作  者:王向慧,马海波编著
  • 出 版 社:水利水电出版社
  • 出版年份:2009
  • ISBN:9787508465630
  • 页数:316 页
图书介绍:本书以Intel 80x86微处理器为硬件平台,介绍了汇编语言程序设计的方法。

第1部分 预备知识 1

第1章 汇编语言与二进制 1

学习目标 1

1.1 认识汇编语言 1

1.1.1 指令与程序 1

1.1.2 机器语言、汇编语言和高级语言 2

1.1.3 为什么学习和使用汇编语言 3

1.2 汇编语言中的计数制 5

1.2.1 进位计数制 5

1.2.2 十进制数与二进制数之间的相互转换 5

1.2.3 十进制数与十六进制数之间的相互转换 6

1.2.4 二进制数与十六进制数之间的相互转换 7

1.3 计算机中数和字符的表示 8

1.3.1 无符号数与有符号数 8

1.3.2 有符号数的补码表示 8

1.3.3 ASCII码和BCD码 10

1.4 基本的二进制运算规则 12

1.4.1 算术运算 12

1.4.2 逻辑运算 13

1.4.3 补码的加减法运算 13

思考与习题 14

第2部分 实模式编程 16

第2章 8086计算机组织 16

学习目标 16

2.1 微型计算机硬件系统 16

2.2 Intel 80x86系列微处器简介 18

2.3 8086微处理器的功能结构 21

2.4 实模式下的内存组织 22

2.4.1 内存的线性编址和数据存储 22

2.4.2 内存的分段管理 23

2.4.3 逻辑地址到物理地址的转换 24

2.4.4 多个逻辑段的数据管理 25

2.5 8086寄存器组 26

2.5.1 通用寄存器 27

2.5.2 段寄存器 28

2.5.3 指令指针寄存器 29

2.5.4 标志寄存器 29

思考与习题 31

第3章 简短的程序设计 33

学习目标 33

3.1 汇编指令基本格式 33

3.2 开始设计汇编语言程序 35

3.2.1 几个常用的汇编指令 35

3.2.2 设计第一个汇编语言程序 40

3.2.3 使用DEBUG进行汇编语言程序设计 41

3.3 JMP、JE、JNE指令与分支 49

3.4 LOOP指令与循环 53

3.5 与数据有关的四类寻址方式 56

3.5.1 固定寻址方式 56

3.5.2 立即寻址方式 57

3.5.3 寄存器寻址方式 58

3.5.4 存储器寻址方式 58

3.6 一条指令的执行过程 63

3.7 上机实践 64

思考与习题 65

第4章 汇编语言源程序的结构及设计过程 69

学习目标 69

4.1 汇编语言的语句类型和语句格式 69

4.1.1 初识完整的汇编语言源程序 70

4.1.2 执行性语句和说明性语句 71

4.1.3 汇编语言源程序的语句格式 71

4.2 汇编语言源程序的结构形式 74

4.2.1 完整的段定义结构 74

4.2.2 程序段前缀结构 75

4.2.3 简化的段定义结构 76

4.3 汇编语言上机过程 77

4.3.1 源程序的编辑 78

4.3.2 对源程序的汇编 79

4.3.3 对目标程序的连接 80

4.3.4 EXE文件的运行与调试 81

4.3.5 COM文件的运行与调试 84

4.3.6 使用MASM 6.11下的ML.EXE汇编和连接 87

4.4 汇编语言源程序中的伪指令 88

4.4.1 符号定义伪指令 88

4.4.2 数据定义伪指令 90

4.4.3 定位伪指令与地址计数器 93

4.4.4 段定义伪指令 95

4.4.5 程序开始和结束伪指令 97

4.4.6 简化段定义伪指令 97

4.4.7 处理器选择伪指令 99

4.5 上机实践 99

思考与习题 102

第5章 程序的基本控制结构及设计方法 105

学习目标 105

5.1 程序设计的一般步骤及基本控制结构 105

5.1.1 程序设计的一般步骤 105

5.1.2 算法的表示 105

5.1.3 顺序、分支、循环结构 106

5.2 顺序结构程序设计及常用指令 107

5.2.1 数据传送类指令 107

5.2.2 算术运算类指令 110

5.2.3 逻辑运算类指令 114

5.2.4 移位类指令 116

5.2.5 标志位操作指令 118

5.2.6 顺序结构程序设计示例 118

5.2.7 上机实践 120

5.3 分支结构程序设计及常用指令 120

5.3.1 分支程序的基本结构形式 121

5.3.2 与转移地址有关的寻址方式及无条件转移指令JMP 121

5.3.3 条件转移类指令 123

5.3.4 分支结构程序设计示例 126

5.3.5 上机实践 131

5.4 循环结构程序设计及常用指令 132

5.4.1 循环程序的组成 133

5.4.2 循环程序的结构形式 133

5.4.3 循环控制类指令 134

5.4.4 数据串操作类指令及其重复前缀 136

5.4.5 循环控制的方法及循环结构程序设计示例 140

5.4.6 上机实践 144

思考与习题 146

第6章 子程序设计 149

学习目标 149

6.1 子程序的引出 149

6.1.1 调用程序与子程序 149

6.1.2 堆栈在子程序设计中的作用 149

6.1.3 过程定义伪指令 152

6.1.4 CALL和RET指令 153

6.2 子程序的结构 155

6.2.1 调用程序与子程序在同一代码段内的程序结构 155

6.2.2 调用程序与子程序不在同一代码段内的程序结构 155

6.3 子程序设计方法 156

6.3.1 子程序设计时应注意的几点问题 156

6.3.2 现场的保护与恢复 156

6.3.3 子程序说明文件 157

6.3.4 主程序与子程序之间参数传递的方法 157

6.4 子程序的嵌套与递归 167

6.5 子程序设计示例 169

6.6 上机实践 173

思考与习题 175

第7章 中断及输入/输出程序设计 177

学习目标 177

7.1 简单的输入/输出程序设计 177

7.1.1 接口与端口 177

7.1.2 IN和OUT指令 177

7.1.3 一个发声程序示例 179

7.2 中断 180

7.2.1 中断及中断处理程序 180

7.2.2 中断源与中断分类 181

7.2.3 中断向量表 183

7.2.4 INT和IRET指令 184

7.2.5 中断过程 185

7.2.6 实模式下中断程序设计 187

7.3 BIOS和DOS中断 191

7.3.1 BIOS中断调用及其使用方法 192

7.3.2 DOS功能调用及其使用方法 193

7.4 上机实践 195

思考与习题 196

第8章 高级汇编语言程序设计 198

学习目标 198

8.1 宏汇编 198

8.1.1 宏的定义、调用和展开 198

8.1.2 多次宏调用时标号的处理 200

8.1.3 宏中参数的使用 202

8.1.4 宏库的使用 205

8.1.5 宏与子程序 206

8.2 重复汇编 207

8.2.1 定重复汇编 207

8.2.2 不定重复汇编 208

8.3 条件汇编 209

8.4 上机实践 211

8.5 模块化程序设计 212

8.5.1 模块化分的原则 213

8.5.2 模块间的通信 213

8.5.3 模块化程序设计上机步骤 216

8.5.4 模块化程序设计示例 216

8.6 上机实践 220

思考与习题 220

第3部分 保护模式编程 222

第9章 32位指令及其编程 222

学习目标 222

9.1 32位CPU的内部结构 222

9.1.1 32位CPU内部结构及其功能 222

9.1.2 程序可见的32位寄存器组 223

9.2 80386存储器寻址方式 225

9.2.1 寄存器寻址基本概念 225

9.2.2 存储器寻址方式 226

9.3 32位扩展指令 227

9.3.1 数据传送类指令 228

9.3.2 算术运算类指令 231

9.3.3 逻辑和移位类指令 233

9.3.4 串操作类指令 234

9.3.5 控制转移类指令 235

9.3.6 位操作类指令 236

9.3.7 保护模式类指令 237

9.4 32位指令的程序设计 238

9.4.1 80386编程格式 238

9.4.2 伪指令简化段定义格式 239

9.4.3 简单的32位编程示例 240

思考与习题 243

第10章 保护模式下的存储器管理 246

学习目标 246

10.1 保护模式与实模式的比较 246

10.1.1 实模式寻址特点 246

10.1.2 保护模式寻址特点 247

10.2 虚拟内存管理 247

10.2.1 虚拟地址、线性地址、物理地址的转换过程 248

10.2.2 保护机制 249

10.3 控制寄存器和系统地址寄存器 250

10.3.1 控制寄存器CR0、CR1、CR2、CR3 250

10.3.2 描述符表 251

10.3.3 全局描述符表寄存器GDTR 252

10.3.4 局部描述符表寄存器LDTR 253

10.3.5 中断描述符表寄存器IDTR 253

10.3.6 任务状态段寄存器TR 253

10.4 段式内存管理 254

10.4.1 段的定义及存储段描述符 254

10.4.2 段寄存器与段选择子 256

10.4.3 段描述符高速缓冲寄存器 257

10.5 页式内存管理 258

10.5.1 分页管理机制 258

10.5.2 两级页映射表 258

10.5.3 线性地址到物理地址的转换 260

10.5.4 页转换高速缓存TLB 260

10.5.5 页面映射示例 261

思考与习题 261

第11章 保护模式及其编程 263

学习目标 263

11.1 实模式与保护模式之间的切换 263

11.1.1 两种模式之间的切换 263

11.1.2 头文件 264

11.1.3 从实模式切换到保护模式的编程 268

11.2 控制门 272

11.2.1 系统段描述符 272

11.2.2 门描述符 274

11.3 任务切换 275

11.3.1 任务状态段TSS 275

11.3.2 直接任务切换 277

11.3.3 间接任务切换 278

11.3.4 任务切换的步骤 278

11.3.5 任务内特权级变化的程序转移 279

11.4 中断和异常 281

11.4.1 80386的中断和异常 281

11.4.2 异常类型 282

11.4.3 中断和异常的处理过程 287

11.5 操作系统类指令 291

11.5.1 实模式和任何特权级下可执行的指令 291

11.5.2 实模式及特权级0下可执行的指令 291

11.5.3 只能在保护模式下执行的指令 293

11.6 输入/输出保护 295

11.6.1 输入/输出的保护方法 295

11.6.2 重要标志保护 297

11.7 虚拟8086模式 298

11.7.1 V86模式 298

11.7.2 进入及退出V86模式 299

11.7.3 V86模式下的敏感指令 302

思考与习题 302

附录A BIOS中断调用 304

附录B DOS功能调用(INT 21H) 307

附录C 集成化开发环境PWB 312

参考文献 316