前言 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.3 计算机中数和字符的表示 6
1.3.1 数的补码表示 6
1.3.2 补码的加法和减法 8
1.3.3 无符号整数 10
1.3.4 字符表示法 10
1.4.1 “与”运算(AND) 11
1.4 几种基本的逻辑运算 11
1.4.2 “或”运算(OR) 12
1.4.3 “非”运算(NOT) 12
1.4.4 “异或”运算(XOR,exclusive-OR) 12
习题 13
第2章 80x86计算机组织 14
2.1 80x86微处理器 14
2.2 基于微处理器的计算机系统构成 16
2.2.1 硬件 16
2.2.2 软件 17
2.3 中央处理机 18
2.3.1 中央处理机(CPU)的组成 18
2.3.2 80x86寄存器组 19
2.4 存储器 23
2.4.1 存储单元的地址和内容 23
2.4.2 实模式存储器寻址 25
2.4.3 保护模式存储器寻址 29
2.5 外部设备 34
习题 35
第3章 80x86的指令系统和寻址方式 38
3.1 80x86的寻址方式 39
3.1.1 与数据有关的寻址方式 39
3.1.2 与转移地址有关的寻址方式 47
3.2 80x86机器语言指令概况 49
3.2.1 操作码的机器语言表示 50
3.2.2 寻址方式的机器语言表示 50
3.2.3 加法的机器指令举例 52
3.2.4 指令的执行时间 55
3.2.5 32位指令格式简介 57
3.3 80x86的指令系统 58
3.3.1 数据传送指令 58
3.3.2 算术指令 69
3.3.3 逻辑指令 86
3.3.4 串处理指令 92
3.3.5 控制转移指令 100
3.3.6 处理机控制与杂项操作指令 120
习题 123
第4章 汇编语言程序格式 134
4.1 汇编程序功能 134
4.2 伪操作 135
4.2.1 处理器选择伪操作 135
4.2.2 段定义伪操作 135
4.2.3 程序开始和结束伪操作 143
4.2.4 数据定义及存储器分配伪操作 144
4.2.5 表达式赋值伪操作EQU 149
4.2.6 地址计数器与对准伪操作 150
4.3 汇编语言程序格式 152
4.2.7 基数控制伪操作 152
4.3.1 名字项 153
4.3.2 操作项 154
4.3.3 操作数项 154
4.3.4 注释项 159
4.4 汇编语言程序的上机过程 161
4.4.1 建立汇编语言的工作环境 161
4.4.2 建立ASM文件 162
4.4.3 用MASM程序产生OBJ文件 163
4.4.4 用LINK程序产生EXE文件 166
4.4.5 程序的执行 167
4.4.6 COM文件 169
习题 170
第5章 循环与分支程序设计 175
5.1 循环程序设计 175
5.1.1 循环程序的结构形式 175
5.1.2 循环程序设计方法 176
5.1.3 多重循环程序设计 186
5.2 分支程序设计 191
5.2.1 分支程序的结构形式 191
5.2.2 分支程序设计方法 191
5.2.3 跳跃表法 195
5.3 如何在实模式下发挥80386及其后继机型的优势 200
5.3.1 充分利用高档机的32位字长特性 200
5.3.2 通用寄存器可作为指针寄存器 204
5.3.3 与比例因子有关的寻址方式 204
5.3.4 各种机型提供的新指令 207
习题 209
第6章 子程序结构 212
6.1 子程序的设计方法 212
6.1.1 过程定义伪操作 212
6.1.3 保存与恢复寄存器 214
6.1.2 子程序的调用和返回 214
6.1.4 子程序的参数传送 215
6.1.5 增强功能的过程定义伪操作 228
6.2 嵌套与递归子程序 233
6.2.1 子程序的嵌套 233
6.2.2 递归子程序 234
6.3 子程序举例 241
6.4 DOS系统功能调用 255
习题 256
第7章 高级汇编语言技术 261
7.1 宏汇编 261
7.1.1 宏定义、宏调用和宏展开 261
7.1.2 宏定义中的参数 263
7.1.3 LOCAL伪操作 268
7.1.4 在宏定义内使用宏 269
7.1.5 列表伪操作 271
7.1.6 宏库的建立与调用 274
7.1.7 PURGE伪操作 276
7.2 重复汇编 277
7.2.1 重复伪操作 277
7.2.2 不定重复伪操作 279
7.3 条件汇编 281
7.3.1 条件伪操作IF的使用举例 282
7.3.2 条件伪操作IF1的使用举例 284
7.3.3 条件伪操作IFNDEF的使用举例 285
7.3.4 条件伪操作IFB的使用举例 290
7.3.5 条件伪操作IFEDN的使用举例 291
7.4 高级语言结构 293
7.4.1 .IF/.ELSEIF/.ELSE/.ENDIF 293
7.4.2 .WHILE/.ENDW 295
7.4.3 .REPEAT/.UNTIL和.REPEAT/.UNTILCXZ 296
7.4.4 .BREAK和.CONTINUE 298
7.4.5 高级语言结构中使用的表达式 300
习题 301
第8章 输入输出程序设计 305
8.1 I/O设备的数据传送方式 305
8.1.1 CPU与外设 305
8.1.2 直接存储器存取方式 305
8.2 程序直接控制I/O方式 306
8.2.1 I/O端口 306
8.2.2 I/O指令 307
8.2.3 I/O程序举例 308
8.3 中断传送方式 312
8.3.1 8086的中断分类 313
8.3.2 中断向量表 315
8.3.3 中断过程 319
8.3.4 中断优先级的中断嵌套 320
8.3.5 中断处理程序 322
8.3.6 中断程序举例 323
8.4 80386输入输出 335
8.4.1 80386 I/O操作 335
8.4.2 I/O允许位图 336
8.5 80386的中断处理 336
8.5.1 80386的中断和异常 337
8.5.2 实地址下的中断处理 339
8.5.3 保护方式下的中断处理 340
8.5.4 虚拟8086方式下的中断处理 342
习题 343
第9章 BIOS和DOS中断 345
9.1 键盘I/O 347
9.1.1 字符码与扫描码 347
9.1.2 BIOS键盘中断 348
9.1.3 DOS键盘功能调用 349
9.2 显示器I/O 354
9.2.1 字符属性 354
9.2.2 BIOS显示中断 357
9.2.3 DOS显示功能调用 365
9.3 打印机I/O 366
9.3.1 DOS打印功能 367
9.3.2 打印的控制字符 368
9.3.3 BIOS打印功能 372
9.4 串行通信口I/O 375
9.4.1 串行通信接口 375
9.4.2 串行口功能调用 378
9.4.3 串行通信口中断 383
习题 392
10.1.1 显示分辨率 394
10.1 显示方式 394
第10章 彩色图形程序设计 394
10.1.2 BIOS设置显示方式 395
10.1.3 确定显示适配器 397
10.2 视频显示存储器 398
10.2.1 图形存储器映象 398
10.2.2 数据到颜色的转换 401
10.2.3 直接视频显示 402
10.3 EGA/VGA图形程序设计 405
10.3.1 读写像素 406
10.3.2 图形方式下的文本显示 411
10.3.3 彩色绘图程序 414
10.4 计算机动画 418
10.4.1 动画显示技术 419
10.4.2 交互式动画 422
10.4.3 游戏程序实例 424
习题 445
第11章 发声系统的程序设计 447
11.1 可编程内部定时器8253/54 447
11.1.1 编程结构 447
11.1.2 操作模式 447
11.1.3 控制字 450
11.1.4 IBM PC 8253/54定时器的使用 451
11.2 通用发声程序 452
11.2.1 扬声器驱动方式 452
11.2.2 通用发声程序GENSOUND 453
11.2.3 80x86 PC的时间延迟 456
11.3 乐曲程序 457
11.3.1 音调与频率和时间的关系 457
11.3.2 演奏乐曲的程序 458
11.3.3 键盘控制发声程序 460
11.4 报警程序 467
习题 472
第12章 磁盘文件存取技术 474
12.1 磁盘的记录方式 474
12.1.1 磁盘记录信息的地址 474
12.1.2 磁盘系统区和数据区 476
12.1.3 磁盘目录及文件分配表 476
12.2 文件代号式磁盘存取 478
12.2.1 路径名和ASCIZ串 479
12.2.2 文件代号和错误返回代码 479
12.2.3 文件属性 480
12.2.4 写磁盘文件 481
12.2.5 读磁盘文件 486
12.2.6 移动读写指针 491
12.3 字符设备的文件代号式I/O 497
12.4 利用文件控制块的磁盘存取方式 500
12.4.1 文件控制块 501
12.4.2 建立磁盘文件 503
12.4.3 顺序读磁盘文件 509
12.4.4 随机存取磁盘文件 513
12.4.5 绝对磁盘I/O 516
12.5 BIOS磁盘存取功能 517
12.5.1 BIOS磁盘操作 517
12.5.2 状态字节 519
12.5.3 BIOS磁盘操作举例 519
习题 522
第13章 模块化程序设计 524
13.1 汇编程序概述 524
13.1.1 汇编程序的主要工具 524
13.1.2 汇编过程 526
13.1.3 几个问题 527
13.2.1 连接程序的主要功能 529
13.2 连接程序及连接对程序设计的要求 529
13.2.2 连接对程序设计的要求 530
13.3 汇编语言程序与高级语言程序的连接 547
13.3.1 直接插入法 547
13.3.2 C语言程序调用汇编语言过程法 548
13.4 模块化程序设计概述 552
13.4.1 模块化程序设计 553
13.4.2 结构化程序设计 555
13.4.3 程序设计举例 556
习题 564
参考文献 569
附录1 80x86指令系统一览表 570
附录2 伪操作与操作符表 588
附录3 中断向量地址一览表 603
附录4 DOS系统功能调用(INT 21H) 605
附录5 BIOS功能调用 611