《宏汇编语言MASM 6实用大全》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:东阳生等编著
  • 出 版 社:北京:科学出版社
  • 出版年份:1993
  • ISBN:7030040473
  • 页数:657 页
图书介绍:

目录 3

第一部分 MS-DOS系统下的程序设计 3

第一章 MS-DOS操作系统概述 3

1.1 MS-DOS系统的基本组成 4

1.1.1 MS-DOS系统 5

1.1.2 PC机的物理组成成分 5

1.2 Intel 80x86系列微处理器 7

1.2.1 8086中表示数据的方法 8

1.2.2 各种形式的数 9

1.2.3 8086寄存器 12

1.2.4 8086中的内存寻址方式 15

1.2.5 8086堆栈 17

1.2.6 8086中的输入/输出 18

1.3 DOS 19

1.3.1 加电MS-DOS PC机 19

1.3.2 在DOS下执行程序 21

1.3.3 访问ROMBIOS和DOS功能 24

1.3.4 通过int指令调用DOS和BIOS功能 24

1.4 摘要 25

第二章 MASM程序设计 27

2.1 建立编写MASM程序所需要的工具 27

2.1.1 源文件、目标文件和可执行文件 27

2.1.2 准备源文件 27

2.1.3 汇编和连接 28

2.1.4 使用MASM 29

2.1.5 环境变量、批处理文件与MAKE文件 30

2.1.6 连接目标文件 33

2.2.1 .COM程序和.EXE程序 35

2.2 第一个汇编语言程序 35

2.2.2 汇编语言程序样板 36

2.3 汇编过程 40

2.3.1 MASM段 42

2.3.2 符号表、向前引用和两趟汇编 43

2.3.3 连接程序的作用 43

2.4 MASM简介 44

2.4.1 处理器指令格式 44

2.4.2 操作数指定方式 45

2.5.1 指令编码 54

2.5 8086指令集 54

2.5.2 指令类型 56

2.5.3 数据移动 57

2.5.4 算术操作、逻辑操作和移位操作 58

2.5.5 标志处理 59

2.5.6 过程、循环和跳转 59

2.5.7 处理器控制和保护方式操作 59

2.6 MASM伪指令及算符 60

2.6.1 段说明 60

2.6.2 数据定义和存储分配 62

2.6.3 宏、过程和包含文件 63

2.6.4 代码生成、错误处理和列表 65

2.6.5 MASM算符 66

2.7 示例:打印环境块内容 66

2.7.1 找出算法 66

2.7.2 程序及其输出 67

2.7.3 程序结构 71

2.8 摘要 72

3.1.1 查看文件和内存的内容 74

3.1 使用DEBUG 74

第三章 用CodeView和DEBUG进行调试 74

3.1.2 利用DEBUG测试代码 76

3.1.3 利用DEBUG进行调试 79

3.1.4 DEBUG命令摘要 80

3.2 使用CodeView 82

3.2.1 使用CodeView的基础知识 82

3.2.2 CodeView中对话窗口命令 85

3.2.3 CodeView中的菜单 86

3.2.4 在CodeView中请求帮助 90

3.2.5 在CodeView中进行调试 91

3.2.6 对话窗口命令 94

3.3 小结 94

第二部分 处理器指令 97

第四章 数据传送指令 97

4.1 向/从内存传送数据 97

4.1.1 MOV指令的不同形式 98

4.1.2 巧妙的传送 98

4.3.1 其他类型的数据传送:XCHG和XLAT 99

4.3 装入立即数进DS、SS或ES寄存器 99

4.2 将数据从一个内存位置传送至另一个内存位置 99

4.4 将地址装入寄存器LDS和LES 101

4.4.1 装入有效地址:LEA 102

4.4.2 在80386/486中传送数据 103

4.5 堆栈管理 103

4.5.1 压入和弹出:PUSH和POP 104

4.5.2 压入标志值:PUSHF和POPF 105

4.5.3 通过堆栈传递参数 105

4.6.2 拷贝块 108

4.6.1 重复前缀:REP 108

4.6 传送大块数据:MOVS、STOS和LODS 108

4.6.3 初始化一块内存区域:STOS 109

4.6.4 字符串功能 109

4.7 I/O端口数据传送:IN和OUT 110

4.8 小结 110

第五章 算术、逻辑和移位操作 138

5.1 算术运算指令 138

5.1.1 加法 139

5.1.2 减法 140

5.2 除法 141

5.1.3 乘法和除法 141

5.3 交换并相加 142

5.4 测试和比较指令 142

5.4.1 比较两个值 143

5.4.2 测试位 144

5.4.3 字符串测试和比较 144

5.4.4 80386/486中的测试和比较指令 146

5.5 逻辑指令 148

5.6 移位和循环移位 148

5.6.1 通过移位实现加倍和减半 149

5.6.2 循环移位 150

5.6.3 80386/486双精度移位和位扫描 150

5.7 带符号扩展的转换 151

5.8 针对BCD运算进行调整 152

5.8.1 BCD运算 152

5.9 在乘除法之后进行调整 153

5.10 小结 154

第六章 过程、循环和跳转 204

6.1.1 跳转 205

6.1 无条件控制转移 205

6.1.2 过程调用 206

6.1.3 从过程中返回 208

6.1.4 堆栈框架和过程 211

6.1.5 中断 211

6.2 条件控制转移 213

6.2.1 条件跳转 214

6.2.2 带符号和无符号比较 215

6.2.3 循环 216

6.4 小结 217

6.3 溢出和边界检测 217

第七章 处理器控制和保护模式操作 239

7.1 处理器控制 239

7.1.1 标志值处理 239

7.1.2 处理器同步 242

7.1.3 同协处理器协同工作 242

7.1.4 HLT和NOP指令 243

7.2 保护模式操作 243

7.2.1 保护模式下的内存 243

7.2.2 80286,80386和80486的多任务及其保护 244

7.2.3 DOS扩展程序 245

7.3 小结 246

第三部分 MASM指令及运算符 269

第八章 段说明 269

8.1 逻辑段和物理段 269

8.2 完整的段说明 271

8.2.1 SEGMENT指令 272

8.2.2 段分组 275

8.3 简化的段说明 276

8.3.1 MASM中的内存模式 277

8.3.2 另外的代码和数据段 278

8.3.3 预定义符号 279

8.3.4 段排列 280

8.4 指定程序入口点 281

8.5 小结 281

第九章 数据定义和存储分配 292

9.1 等价 292

9.2 处理文本串 294

9.1.1 缺省的基数值 294

9.3 存储分配 296

9.3.1 为变量申请字节 296

9.3.2 位置计数器和ORG指令 301

9.3.3 结构、联合和记录 303

9.3.4 使用STRUC组织用户数据 303

9.3.5 为结构分配空间 304

9.3.6 在汇编过程中初始化结构域 304

9.3.8 MASM中嵌套的结构 305

9.3.7 在汇编过程中初始化某些域 305

9.3.9 访问结构中的域 306

9.3.10 访问嵌套结构中的域 306

9.3.11 指令UNION 307

9.3.12 同时使用UNION和STRUC 307

9.3.13 使用记录组织位域 308

9.4 小结 311

第十章 模块化程序的宏、过程和工具 331

10.1 宏 332

10.1.2 为缺少的宏参数提供缺省值 334

10.1.1 必需的、缺省的及可变的参数 334

10.1.3 指定可变数目的参数 335

10.1.4 局部标号 335

10.1.5 重复指令 336

10.2 使用FOR处理:VARARG参数 338

10.2.1 其他的宏指令 339

10.2.2 宏函数 341

10.2.3 MASM提供的宏函数 342

10.3 条件汇编指令 343

10.3.2 宏.IF,.ELSEIF,.ELSE和.ENDIF 345

10.3.1 高级语言结构 345

10.3.3 宏.WHILE和.ENDW 347

10.3.4 宏.REPEAT、.UNTIL和.UNTILCXZ 348

10.3.5 宏.BREAK和.CONTINUE 350

10.3.6 由.IF、.ELSEIF、.WHILE和.UNTIL使用的表达式 351

10.3.7 高级指令中的带符号和不带符号比较 353

10.4 包含文件 354

10.5 过程 354

10.5.1 编写过程的步骤 355

10.5.2 为高级语言编写的汇编过程 357

10.5.3 在过程中定义局部变量 365

10.5.4 过程原型以及使用PROTO和INVOKE进行调用 366

10.6 标号和变量的范围 368

10.6.1 公用变量 368

10.6.2 EXTRNDEF指令 369

10.6.3 在目标文件中嵌入库名 369

10.7 小结 369

11.1 汇编特定处理器指令 394

第十一章 代码生成、条件汇编、错误处理和列表 394

11.2 判断处理器类型 395

11.3 在汇编过程中处理错误 396

11.4 列表和注释 397

11.4.1 注释 397

11.4.2 列表 398

11.5 符号表 400

11.6 列出宏扩展和条件块 401

11.6.1 交叉引用 402

11.7 MASM操作符 403

11.7.1 算术操作符 404

11.7.2 关系、逻辑和移位操作符 405

11.7.3 类型说明符 406

11.8 小结 407

第四部分 技巧 433

第十二章 为高级语言编写汇编模块 433

12.1 与Microsoft高级语言进行交互 433

12.1.1 混合语言程序设计速览 433

12.1.4 参数传递约定 436

12.1.3 NEAR或FAR调用 436

12.1.2 命名汇编语言过程 436

12.1.5 返回结果 439

12.1.6 返回前的清除工作 439

12.2 一些实用的技术 439

12.2.1 求助于编译器 439

12.2.2 MASM 5.0中的简化方法 442

12.3 一个实例 444

12.3.1 判断鼠标驱动程序的存在 444

12.3.2 鼠标接口例程 447

12.3.3 汇编语言中的面向对象程序设计 450

12.4 小结 454

第十三章 使用系统资源 455

13.1 检验系统的能力 455

13.1.1 从何处查找信息 456

13.2 8255 PPI或等价物 460

13.3 RT/CMOS RAM 461

13.4 DOS版本号 463

13.5 BIOS数据区 465

13.6.1 如何使用配置信息 466

13.6 获取BIOS配置标志 466

13.7 使用DOS服务 467

13.7.1 访问MS-DOS文件系统 467

13.7.2 文件I/O例程 467

13.7.3 检验文件I/O例程 473

13.8 使用BIOS服务 476

13.8.1 实现设备I/O 476

13.8.2 决定系统配置 477

14.1.1 通讯参数 478

第十四章 使用和控制硬件 478

1 4.1 串行口的中断驱动控制 478

14.1.2 串行口内部结构 479

14.1.3 串行适配器的中断 479

14.1.4 8259A可编程中断控制器 482

14.2 使用汇编语言对串行口编程 483

14.2.1 使用BIOS设置通讯参数 484

14.2.2 取得串行端口地址 484

14.2.3 设置中断驱动的串行I/O 485

14.2.4 处理来自串行端口的中断 486

14.2.5 关闭中断之前的清除工作 488

14.3 一个例子程序 489

14.4 小结 490

第十五章 文本和图形用户接口 498

15.1 PC的显示和适配器 498

15.1.1 IBM PC的适配器和监视器 498

15.1.2 IBM PS/2使用的显示适配器 498

15.2 对显示适配器编程 499

15.2.2  BIOS视频例程 500

15.2.1 内存映象的I/O 500

15.2.3 选择视频模式 501

15.3 文本模式窗口 505

15.3.1 文本属性 505

15.3.2 CGA和雪花现象 505

15.3.3 为文本模式编程判断视频信息 506

15.3.4 低级文本输出例程 507

15.3.5 绘制文本模式的窗口 512

15.3.6 一个例子测试程序 519

15.4 图形程序设计 521

15.4.1 图形内存组织和寻址 522

15.4.2 画点 524

15.4.3 画线 526

15.5 小结 537

第十六章 80386/486程序设计 538

16.1 80386和80486 CPU——快速浏览 538

16.2 首先判断处理器是否为80386/486 540

16.3 32位算术运算 545

16.4 移动32位数据串 548

16.5 初始化表格 549

16.6 寻址4千兆的内存 550

16.7 双字对齐 551

16.8 位扫描 551

16.9 位测试 552

16.10 索引和基寄存器的灵活性 553

16.11 80386/486的其他功能 554

16.12 小结 556

第十七章 优化要点 557

17.1 快速文件处理 559

17.2 小结 560

第五部分 附录 563

附录A ML和LINK命令行选项 563

附录B DEBUG和CodeView的命令及选项 566

附录C MS-DOS数据和控制结构 571

附录D BIOS和DOS中断及其功能 574

附录E EMS功能和错误码 633

附录F MS-DOS错误返回 641

附录G MASM版本 644

附录H 不可打印的ASCII字符定义 656