目 录
第0章 引言
0.1你为什么需要这本书
0.2本书的结构
第一章 汇编语言简介
1.1总提示
1.2机器语言
1.3汇编语言
1.4汇编程序员
1.5处理器和协处理器
1.6各种Intel86处理器的编程
1.7对术语的再次说明
1.8 什么情况下用汇编语言
1.9操作系统
1.10开发一道汇编语言程序
1.11 你需要哪些软件
1.12 还要了解什么内容
第二章 数字系统
2.1位和字节
2.2字符是怎样存储的
2.3二进制系统
2.4十六进制系统
2.5重要的二进制和十六进制数
2.6内存空间大小的表示
2.7十六进制和二进制间的转换
2.8十六进制到十进制的转换
2.9十进制到十六进制的转换
2.10从二进制到十进制的转换
2.11从十进制到二进制的转换
2.12 十六进制加法
2.13十六进制减法
第三章 内存的组织
3.1存储器地址
3.2字的存储
3.3位的存储
3.4边界地址
3.5存储器和辅助存储器
3.6寄存器
3.7通用寄存器
3.8堆栈
3.9堆栈的使用
第四章 寻址技术
4.1基本的PC机寻址方案
4.2段和段寄存器
4.3段寄存器的使用
4.4段寄存器的内容
4.5堆栈的实现
4.6直接寻址
4.7间接寻址
4.8变址技术
4.9变址寄存器
4.10基址寄存器BX
4.11基址寄存器BP
4.12寻址的一般规则
4.13代码段中的寻址
第五章 汇编语言程序的各个部分
5.1程序员眼中的程序
5.2从汇编程序角度看程序
5.3从连接程序角度看程序
5.4汇编过程
5.5注释语句
5.6指令和伪指令
5.7汇编语言的语句格式
5.8名的使用
5.9命名的原则
5.10指定数字的原则
第六章 理解一道汇编语言程序
6.1一个原型程序
6.2怎样使用好注释
6.3程序结束标志
6.4程序清单的建立
6.5指令集的指定
6.6段的建立
6.7堆栈内存空间的分配
6.8堆栈段、数据段和代码段中的寻址
6.9附加段中的寻址
6.10主程序的建立
6.11完成工作的语句
6.12过程的调用
6.13被调用的过程的一个原型
6.14被调用的过程的结构
6.15寄存器内容的保存和恢复
6.16有过程调用的一个原型程序
6.17用伪指令协助开发程序
第七章 程序的处理
7.1程序的处理和运行
7.2汇编程序使用的文件
7.3在TurboAssembler下进行程序的汇编
7.4在Microsoft公司或IBM公司的汇编程序下汇编程序
7.5连接文件使用的文件
7.6TurboAssembler程序的连接
7.7Microsoft或IBM汇编语言程序的连接
7.86.0版以后Microsoft汇编语言程序的汇编和连接
7.9程序的执行
7.10汇编程序处理过程小结
7.11程序处理中批处理文件的使用
7.11程序清单的显示
7.13程序清单的打印
7.14程序清单阅读总述
7.15程序清单中堆栈段的阅读
7.16程序清单中数据段的阅读
7.17程序清单中代码段的阅读
7.18程序清单最后一页的阅读
7.19交叉引用记录文件的创建
7.20 交叉引用记录文件的阅读
7.21映像文件的阅读
第八章 数据的定义
8.1常量和变量
8.2数据类型
8.3定义数据的伪指令
8.4定义重复的值
8.5数据的访问
8.6用DB伪指令定义字符
8.7用DB伪指令定义常数
8.8用DW伪指令定义字符
8.9用DW伪指令定义常数
8.10用DW伪指令定义偏移量
8.11用DD伪指令定义字符
8.12用DD伪指令定义常数
8.13用DD伪指令定义地址
8.14伪指令DQ的使用
8.15伪指令DT的使用
8.16无名字项的地址
8.17属性
8.18 属性操作符:TYPE,LENGTH,SIZE,SEG和OFFSET
8.19算术操作符:十,-,*,/和MOD
8.20 PTR(指针)操作符
8.21标号伪指令LABEL
8.22 等值伪指令EQU
8.23 使用等值的规则
8.24 位置计数器:符号$和伪指令ORG
8.25 使用等值的例子
第九章 通用指令
9.1源操作数和目的操作数
9.2信息复制指令:MOV
9.3MOV指令的使用限制
9.4交换指令:XCHG
9.5装入偏移地址指令:LEA
9.6装入地址指针指令:LDS和LES
9.7进栈、退栈指令:PUSH和POP
9.8寄存器进栈、退栈指令:PUSHA和POPA
9.9标志寄存器进栈、退栈指令:PUSHF和POPF
9.10两个已废弃的指令:SAHF和LAHF
9.11空操作指令:NOP
第十章 流程控制
10.1代码段中的标号
10.2标号名字的使用准则
10.3标志寄存器
104状态标志位
10.5修改状态标志位的指令:STC,CLC和CMC
10.6控制标志位
10.7修改控制标志位的指令:STD,CLD,STI和CLI
10.8条件跳转指令
10.9测试标志位和寄存器的条件跳转
10.10数据比较指令:CMP
10.11 用于比较之后的条件跳转指令
10.12 全部条件跳转指令参考表
10.13 无条件跳转指令:JMP
10.14跳转指令中使用地址的规则
10.15使用跳转指令的规则
10.16循环指令:LOOP
10.17使用比较的循环:L00PE和LOOPNE
第十一章 流程控制的实现
11.1顺序结构、分支结构和循环结构
11.2用有组织的方法编写流程控制
11.3CASE结构
11.4CASE-ELSE结构
11.5IF-THEN-ELSE结构
11.6较差的设计例子
11.7IF-THEN结构
11.8REPEAT-UNTIL结构
11.9使用LOOP改变的REPEAT-UNTIL结构
11.10使用LOOPE和LOOPNE改变的REPEAT-UNTIL结构
11.11WHILE-REPEAT结构
第十二章 过程
12.1用过程设计程序
12.2定义过程指令:PROC和ENDP
12.3过程的格式
12.4调用过程指令:CALL
12.5返回地址
12.6使用CALL指令的规则
12.7从过程返回的指令:RET
12.8进入点和返回
12.9用寄存器传递参数
12.10用栈传递输入参数
12.11用BP寄存器访问栈中的参数
12.12用栈返回输出参数
12.13从栈中弹出参数
12.14用进位标志位标识错误
12.15跳转表
12.16分成几个部分的程序的连接
12.17怎样编写含有独立部分的程序
第十三章 算术运算
13.1定点数和浮点数
13.2无符号数和有符号数
13.3二进制补码系统
13.4有符号数的二进制补码表示
13.5二进制补码数字的译码
13.6怎样选择无符号数和有符号数
13.7无符号数和有符号数条件转移的使用
13.8加法和减法:ADD与SUB
13.9加上和减去一个字和字节:CBN
13.10 非常大的数的加减:ADC 与SBB
13.11一个数字的加1和减1:INC和DEC
13.12改变有符号数的符号:NEG
13.13乘法运算:MUL和IMUL
13.14运用IMUL来乘以一个立即数
13.15一个字乘以一个字节
13.16DIV和IDIV
13.17两个字节(或字)相除:CWD
第十四章 十进制算术运算
14.1十进制数
14.2什么时候使用十进制数
14.3十进制数算术运算指令如何工作
14.4十进制加法:AAA和DAA
14.5多字节的无压缩十进制数累加
14.6多字节的压缩十进制数累加
14.7十进制减法运算:AAS和DAS
14.8多字节的无压缩十进制数的相减
14.9多字节的压缩十进制数的相减
14.10 十进制乘法:AAM
14.11十进制除法:AAD
第十五章 串处理
15.1如何定义串
15.2五个基本串指令
15.3串指令使用的操作数
15.4如何使用SI和DI寄存器
15.5为串指令准备SI和DI
15.6用单独的数据段和附加段设置SI和D1
15.7串指令的重复:REP,REPE和REPNE
15.8串操作方向的指定:CLD和STD
15.9复制一个串:MOVSB和MOVSW
15.10 两个串的比较:CMPSB和CMPSW
15.11为一个特定值扫描串:SCASB和SCASW
15.12用指定值填充串:STOSB和STOSW
15.13 用一个指定模式填充串:MOVSB和MOVSW
15.14 专用的串操作的创建:LODSB,LODSW,STOSB和STOSW
15.15 由表格进行转换:XLAT
15.16串指令的替换名称:MOVS,CMPS,SCAS,LODS和STOS
第十六章 处理位
16.1四种基本位操作
16.2位屏蔽
16.3关闭特定位:AND
16.4打开特定位:OR
16.5特定位补码:XOR
16.6对整个字节字取补码:NOT
16.7特定位的测试:TEST
16.8一个字节或字中位的位置的改变
16.9基本移动指令:SHL和SHR
16.10 SHL和SHR的用途
16.11 通过移位对有符号数进行相乘和相除运算:SAL和SAR
16.12 旋转指令:ROL,ROR,RCL,RCR
16.13平移和旋转指令小结
第十七章 中断:DOS如何提供服务
17.1中断
17.2如何进行中断服务
17.3中断描述表
17.4程序员如何使用中断:INT
17.5BIOS
17.6磁盘操作系统DOS
17.7DOS功能调用
17.8按类型分类的DOS功能调用摘要
17.9按功能调用数字排列的DOS功能调用摘要
17.10 使用DOS功能调用准则
17.11使用DOS功能调用的例子
17.12 出错处理
17.13 使用中断的例子
17.14 终止程序
17.15 中断处理程序的设计:IRET
17.16中断描述表的修改
17.17驻留内存软件的创建
17.18 算术溢出:INTO
17.19禁止中断:CLI和STI
第十八章 输入/输出
18.1输入/输出
18.2I/O的层次
18.3基本概念
18.4标准句柄
18.5打开文件
18.6关闭文件
18.7从文件或者外设中读入
18.8向文件或者外设进行写操作
18.9移动文件指针
18.10文件属性的检查和修改
18.11生成一个新的文件
18.12为输出打开文件
18.13 从键盘复制到打印机的一个例子
18.14 磁盘文件复制的实例
18.15 文件的删除
18.16 文件的改名和移动
18.17 子目录的生成或删除
18.18 当前目录的获得
18.19 当前目录的改变
18.20 缺省驱动号的获得
18.21 缺省驱动的改变
18.22 显示器和键盘的控制:ANSI.SYS
18.23 ANSI.SYS命令摘要
18.24 向ANSI.SYS输送命令
18.25 光标的移动
18.26 显示屏的清除
18.27 显示特性的设置
18.28 在键盘上重新定义键名
18.29 低层次的输入/输出:IN,OUT,INSB,INSW,OUTSB和OUTSW
18.30 一个低层次的I/O实例:产生嘟嘟声的子程序
附录A COM文件
附录B ASCⅡ参考表
附录C 词汇表