目 录
第1章 汇编语言介绍.
1.1机器语言与汇编语言
1.1.1机器语言
1.1.2机器指令
1.1.3汇编语言
1.1.4汇编语言指令
1.1.5机器语言与汇编语言
1.2处理器与协处理器
1.3何时要使用汇编语言
1.4操作系统(OperatingSystem)
1.5你需要的软件
1.6计算机的数制
1.6.1位(Bit)和字节(Byte)
1.6.2BinaryNumber
1.6.3Hex8decima1Number
1.6.4有符号数与无符号数
1.6.4.1无符号数
1.6.4.2有符号数
1.6.4.3内存大小的计算
1.6.4.4BCD码
1.7字符存储格式
1.7.1ASCII
1.7.2EBCDIC
第2章 硬件与软件概念
2.1与汇编语言关系密切的计算机硬件
2.2CPU寄存器
2.2.1通用寄存器(General-Purpose
Register)段寄存器(Segment
Register)和其它寄存器
2.2.2段寄存器
2.2.3数据寄存器(又称通用
寄存器)
2.2.4特殊寄存器
2.2.5标志寄存器(EFL)
2.3系统软件与内存
2.4段寻址
2.5预处理符号
2.6条件伪指令
2.6.1条件编译伪指令
2.6.2条件错误伪指令
第3章 汇编语言程序
3.1编译流程
3.2执行程序
3.3程序结构
3.3.1组织段
3.3.2物理内存段(PhysicalMemory
Segment)
3.3.3逻辑段(LogicalSegment)
3.4使用简化段伪指令
3.5定义内存模式
3.5.1Small、Medium、Compact
Large和Huge模式
3.5.2Tiny模式
3.5.3flat模式
3.6设置StackDistance
3.7指定处理器(Processor)和协处
理器(Coprocessor)
3.8建立stack
3.9建立数据(Data)段
3.9.1Ne8rDataSegment
3.9.2FarDataSegment
3.10建立Code段
3.10.1NearCodeSegment
3.10.2FarCodeSegment
3.11使用.STARTUP和.EXIT去
开始和结束CODE
3.12MOV指令
3.12.1操作数的形式限制
3.12.2直接寻址
3.12.3PTR运算符
3.12.4Offset运算符
3.12.5SEG运算符
3.12.6XCHG指令
3.13PUSH与POP指令
第4章 地址与指针
4.1段的地址
4.1.1初始化缺省的段寄存器
4.1.2指定和编译程序相关的段值
4.1.3指定处理器相关的段值
4.2近程与远程地址
4.2.1NearCode
4.2.2FarC0de
4.2.3NearData
4.2.4FarDat8
4.3运算符(Operator)
4.4操作数(Operand)
4.4.1Register操作数
4.4.2Immediate操作数
4.4.30FF3ET运算符
4.4.4SEG运算符
4.4.5DirectMemory操作数
4.4.61ndirectMemory操作数
4.4.6.116位和32位寄存器间接
操作数
4.4.6.216位寄存器间接操作数
4.4.6.332位寄存器间接操作数
4.5程序堆栈
4.5.1储存在堆栈的操作数
4.5.2储存标志值至堆栈
4.5.3存储在堆栈的寄存器值
(80186~486Only)
4.6使用指针与地址存取数据
4.6.1使用TYPEDEF定义指针
变量
4.6.2使用ASSUME定义寄存器
型式
4.6.3基本指针和地址运算
4.6.3.1初始化指针变量
4.6.3.2载入地址至寄存器
4.6.3.3独立模式技巧
第5章 说明与使用数据类型
5.1定义与使用简单数据类型
5.1.1说明整型变量
5.1.2配置整型变量的内存空间
5.1.3数据初值
5.1.4使用简单变量
5.2定义和使用复杂数据类型
5.2.1字符串和数组
5.2.2结构与联合(structureand
union)
5.2.3记录(Record)
5.3寻址未命名的项目
5.4属性
5.5运算符
5.6LABEL伪指令
5.7EQU伪指令
5.8地址计数器:$和ORG伪指令
5.9变量命名规则
5.10指定数字规则
第6章 基本字符输出、输入
6.1中断
6.2软硬件中断
6.3INT指令
6.4中断向量表(InterruptVector
Table)
6.5BIOS
6.6D0S
6.7DOSFunctionCall
6.7.101H:由键盘输入—字符且显示在
屏幕上
6.7.202H:输出字符至屏幕
6.7.305H:打印机输出
6.7.406H:控制台直接输出、输入
6.7.507H:控制台直接输入且没有
回送
6.7.608H:控制台直接输入且没有
回送
6.7.709H:字符串输出
6.7.80AH:字符串输入
6.7.90BH:键盘缓冲区状态
6.7.100CH:清除键盘缓冲区,并
等待输入
6.8扩展码(ExtendedC0de)
6.9ASCII控制字符
6.10宏(Macro)
6.10.1宏过程(MacroProcedure)
6.10.2建立宏过程
6.10.3传参数给宏
6.10.4指定需要或缺省的参数
6.11 显示方式(BIOSINT10H)
6.11.1显示方式
6.11.2显示页
6.11.3文本方式的字符显示
6.11.4文本方式的字符对映方式
6.11.5文本方式的字符属性
6.12INCLUDE指令
第7章 算术运算指令
7.1加法运算指令
7.1.1ADD、ADC和INC指令
7.1.2ADD和ADC对标志的影响
7.1.3INC对标志的影响
7.2减法运算指令
7.2.1SUB、SBB和DEC指令
7.2.2NEG指令
7.3乘法运算指令
7.4除法运算指令
7.5CBW、CWD、CDQ和CWDE
指令
7.6十进制数字
7.6.1非压缩式BCD数字
7.6.2压缩式BCD数字
7.7逻辑指令
7.7.1AND指令
7.7.20R指令
7.7.3XOR指令
7.7.4NOT指令
7.7.5TEST指令
7.8移位和循环移位指令
7.8.13HL指令
7.8.2SHR指令
7.8.3SAL、SAR指令
7.8.4R0L指令
7.8.5ROR指令
7.8.6RCL指令
7.8.7RCR指令
第8章 子程序
8.1子程序介绍
8.2定义子程序
8.2.1PROC与ENDP伪指令
8.2.2RET指令
8.2.3CALL指令
8.3Include伪指令
8.4建立宏程序库
8.5EXTERN和PUBLIC伪指令
8.5.1EXTERN伪指令
8.52PUBLIC伪指令
8.5.3参数传递
8.6LIBRARY
8.6.1独立子程序的描述及程序
列表
8.6.2区段说明
8.7建立程序库
第9章 程序流程
9.1转移
9.2在代码段中的标记
9.3标志寄存器
9.3.1状态标志
9.3.2修改状态标志指令:STC、
CLC和CMC
9.3.3控制标志
9.3.4修改控制标志指令:STD、
CLD、STI和CLI
9.4条件转移指令
9.4.1CMP指令
9.4.2以位指定为根据的转移
9.4.3以零为根据的转移
9.4.4转移扩展(jump-extending)
9.5无条件转移指令:JMP
9.6循环(LOOP)
9.7IF伪指令
9.8循环伪指令
9.8.1WHILE循环
9.8.2REPEAT循环
9.8.3BREAK和.CONTINUE伪
指令
9.9编写循环条件
9.9.1运算式运算符
9.9.2有符号与无符号操作数
9.9.3条件运算式的计算方式
9.10字符串处理
9.10.1字符串指令全观
9.10.2使用字符串指令
第10章 磁盘操作与文件处理
10.1数据磁盘对映
10.1.1逻辑扇区
10.1.2磁盘格式
10.2磁盘逻辑结构
10.2.1根目录区
10.2.2文件区
10.2.3文件分配表(FAT)
10.3驱动器的管理
10.3.10DH:磁盘重置
10.3.20EH:驱动器选择
10.3.319H:取得当前所使用的驱动
器代码
10.3.41BH:取得预设的驱动器
信息
10.3.51CH:取得指定驱动器信启
10.3.636H:取得磁盘剩余空间
10.4凹S目录管理
10.4.139H:建立子目录
10.4.23AH:删除子目录
10.4.33BH:改变当前的工作目录
10.4.441H:删除文件
10.4.543H:获取或设置文件属性
10.4.647H:获取当前的工作目录
路径
10.4.74EH:寻找第一个符合条件的
文件
10.4.84FH:寻找另一个符合条件
的文件
10.4.91AH:设置磁盘传送地址
(DTA)
10.4.10PSP:(代码段前置区;Pr0gram
SegmentPrefix)
10.5文件
10.5.13CH:建立文件及传回文件
代号
10.5.23DH:打开文件
10.5.33EH:关闭文件
10.5.43FH:读取数据
10.5.540H:写入数据
10.5.642H:移动文件读写指针
附录A 安装
附录B LST、REF、MAP文件
附录C 完整段
附录D 中断
附录E MASM6.11保留字