一、汇编语言基础知识(6学时)
1.1 计算机系统概述 (1)
1.1.1 计算机硬件
1.1.2 计算机软件
1.1.3 计算机的程序设计语言
1.2 计算机数据表示 (2)
1.2.1 数制
二进制
十六进制
二进制、十六进制之间的转换
二进制、十六进制转换为十进制
十进制转换成二进制、十六进制
1.2.2 编码 (3)
BCD码
ASCII码
汉字编码
1.2.3 有符号数的表示法
原码
反码
补码
1.2.4 二进制运算
算术运算
逻辑运算
1.3 Intel 80x86系列微处理器 (4)
Intel x86系列CPU的发展过程
8086基本情况
80286
80386
80486
Pentium
PentiumMMX
Pentium II
Celeron(赛扬)
Pentium III
1.4 IBM系列微型计算机系统 (5)
PC 机硬件
PC机存储器
DOS下的汇编语言软件
DOS下的汇编语言文件
将一个Hello World程序用EDIT录入,编译,连接并执行。 (6)
用DEBUG列出8086寄存器,试用其他DEBUG命令。
二、8086指令系统(17学时)
2.1 8086寄存器组 (1)
2.1.1 8086的通用寄存器
数据寄存器
指针寄存器SP, BP
变址寄存器SI, DI
2.1.2 标志寄存器
例题:加法运算对标志的影响
例题:减法运算对标志的影响
2.1.3 存储器组织与段寄存器 (2)
存储器
存储器的分段
2.2 8086的寻址方式 (3)
2.2.1 8086的机器代码格式
2.2.2 立即数寻址
2.2.3 寄存器寻址
2.2.4 存储器寻址
直接寻址
寄存器间接寻址
寄存器相对寻址
基址变址寻址
相对基址变址寻址
2.2.5 指令操作数的符号说明 (4)
通用符号
指令功能的符号描述
8086 CPU指令的分类
2.3 数据传送类指令
2.3.1 通用数据传送指令
MOV
例题:容易出错的指令
XCHG (5)
XLAT
2.3.2 堆栈操作指令
PUSH / POP
2.3.3 标志传送指令
LAHF / SAHF
PUSHF / POPF
2.3.4 地址传送指令
LEA
LDS , LES
2.3.5 输入/输出指令
IN, OUT
例题:通过I/O指令控制PC机扬声器发声
2.4 算术运算类指令 (6)
汇编语言中的数
8086指令可以进行的运算
2.4.1 二进制加 / 减指令
指令格式
ADD, ADC, SUB, SBB, CMP
操作数
数据类型
加减指令影响标志
2.4.2 单目标运算指令
INC, DEC, NEG
例题:单目标指令的运算结果及对标志位的影响
2.4.3 乘指令 (7)
MUL - 无符号乘
IMUL - 有符号乘
2.4.4 除指令
DIV - 无符号除
IDIV - 有符号除
2.4.5 符号扩展指令
CBW, CWD
例题:乘除指令练习 (8)
2.4.6 十进制调整指令
压缩BCD码
DAA, DAS
非压缩BCD码
AAA, AAS, AAM, AAD
用DEBUG程序验证程序非压缩BCD除。 (9)
2.5 位操作类指令 (10)
2.5.1 逻辑运算指令
求反指令NOT
与、或和异或指令
AND, OR, XOR, TEST
2.5.2 位移指令
SHL, SHR, SAL, SAR, ROL, ROR, RCL, RCR
例题:位运算练习 (11)
对标志位的影响
例题:位操作综合练习
2.6 串操作类指令 (12)
MOVS - 串传送指令
STOS - 串读取指令
LODS - 串存储指令
CMPS - 串比较指令
SCAS - 串扫描指令
REP, REPZ, REPNZ - 重复前缀指令
2.7 控制转移类指令 (13)
2.7.1 无条件转移指令
JMP
段内与段间转移
直接与间接转移
2.7.2 条件转移指令
Jcc
判断单个标志位
用于无符号数比较
用于有符号数比较
例题:条件转移练习
JCXZ
2.7.3 循环指令 (14)
无条件循环指令
LOOP
条件循环指令
LOOPZ, LOOPNZ, JCXZ
例题:循环指令练习
2.7.4 子程序指令 (15)
子程序调用指令
CALL
RET
2.7.5 中断指令 (16)
8086中断类型
8086的中断过程
INT, IRET, INTO
2.7.6 系统功能调用
单个字符输出
字符串输出
单个字符输入
字符串输入
系统功能调用--简单的功能调用举例。 (17)
2.8 处理机控制类指令
2.8.1 标志位操作指令
CLC, STC, CMC
CLD, STD
CLI, STI
2.8.2 CPU控制指令
NOP
段前缀 CS:, ES:, DS:, SS:
LOCK, HLT, ESC, WAIT
综合练习
三、汇编语言程序格式(8学时)
3.1 汇编语言的开发过程 (1)
3.1.1 汇编语言程序的两种格式
语句格式
简化和完整的段定义初步
3.1.2 宏汇编程序MASM的安装
开发环境和开发过程
EDIT, MASM, LINK, DEBUG
MASM 6.0的集成开发平台。
MASM 6.0的安装
3.1.3 汇编程序的命令行开发过程
MASM 6.0的命令行操作方式
3.1.4 汇编程序的集成开发过程 (2)
MASM 6.0的集成开发平台操作方式
3.2 参数、变量和标号 (3)
3.2.1 数值型参数
常数
数值表达式
3.2.2 变量定义伪指令 (4)
变量定义伪指令
DB, DW, DD 等,变量属性
重复前缀
标号的定义和属性
定位伪指令
3.2.3 变量和标号的属性
用于地址的操作符
用于类型的操作符
3.3 程序段的定义和属性 (5)
3.3.1 DOS的程序结构
EXE程序
COM程序
3.3.2 简化段定义的格式
存储模式伪指令
段定义伪指令
程序开始伪指令
程序终止伪指令
汇编结束伪指令
3.3.3 完整段定义的格式 (6)
完整段定义伪指令
指定段寄存器伪指令
段组伪指令
3.4 复杂数据结构 (7)
3.4.1 结构
结构类型的说明
结构变量的定义
结构变量及其字段的引用
段、变量和结构的练习
3.4.2 记录 (8)
记录类型的说明
记录变量的定义
记录变量的引用和记录操作符
四、汇编语言程序设计(11学时)
4.1 顺序程序设计 (1)
例题:顺序程序练习
4.2 分支程序设计
4.2.1 利用转移指令实现分支
单分支程序
双分支程序
例题:分支程序练习 (2)
4.2.2 利用条件控制伪指令实现分支
用条件伪指令实现分支.IF, .ELSE, .ENDIF (3)
IF伪指令的表达式
例题:条件伪指令练习
4.3 循环程序设计 (4)
4.3.1 利用循环指令和转移指令实现循环
循环指令: LOOP、LOOPE/LOOPZ、LOOPNE/LOOPNZ
例题:冒泡法排序程序
转移指令: JCXZ、Jxx
4.3.2 利用循环伪指令实现循环 (5)
WHILE循环
UNTIL循环
循环伪指令: .WHILE, .REPEAT, .UNTIL, .BREAK, .CONTINUE
4.4 子程序设计 (6)
4.4.1 过程定义伪指令
过程定义伪指令
调用和返回指令: CALL, RET
例题:用过程冒泡法排序程序
4.4.2 过程的参数传递 (7)
通过寄存器传送参数
通过存储器传送参数
通过堆栈传送参数
4.4.3 子程序的嵌套、递归与重入 (8)
嵌套
利用循环嵌套构成的程序
递归 (9)
例题:递归程序例
4.5 宏结构程序设计 (10)
4.5.1 宏汇编
宏的定义和调用
宏的参数
与宏有关的伪指令
宏与子程序
4.5.2 重复汇编
按参数值重复伪指令
按参数个数重复伪指令
4.5.3 条件汇编
IFxx [ELSE] ENDIF
4.6 模块化程序设计 (11)
模块化程序开发的要点
多个模块的程序例
五、32位指令及其编程(6学时)
5.1 32位指令运行环境 (1)
5.1.1 32位寄存器组
通用寄存器和指针寄存器
段寄存器
标志寄存器
5.1.2 寻址方式
16位寻址方式
32位寻址方式
5.2 32位扩展指令 (2)
符号说明
5.2.1 数据传送类指令
32位传送指令 MOV
32位交换指令XCHG
32位入栈指令PUSH、出栈指令POP
32位地址传送指令LEA和LDS, LES, LFS, LGS, LSS (3)
例题:32位传送指令练习
32位传送指令练习
5.2.2 算术运算类指令 (4)
32位加减指令
32位乘除指令
新增加符号扩展指令
5.2.3 位操作类指令
32位逻辑指令
32位位移指令
5.2.4 串操作类指令 (5)
基本串操作指令扩展
例题:32位串操作指令
例题:32位指令综合练习 (6)