汇编语言入门教程:汇编语言程序设计指南(精讲版)

汇编语言入门教程封面图标汇编语言是一种最低级、最古老、不具有移植性的编程语言,它能够直接访问计算机硬件,所以执行效率极高,占用资源极少,一般用于嵌入式设备、驱动程序、实时应用、核心算法等。

汇编语言的缺点是开发周期特别长,实现一个简单的功能都非常麻烦,已经很少用来编写应用程序了。

这套汇编语言入门教程基于 Windows 32/64 位系统,讲解与 Intel 和 AMD 处理器相兼容的汇编语言程序设计,让大家认识机器的思维。

读者应该至少能够熟练使用一种高级程序设计语言,比如 JavaCPythonC++ 等,直接学习汇编语言将非常吃力。

优质学习资源推荐:汇编语言入门教程简明版(阮一峰博客)
第1章 汇编语言基本概念简介
1.汇编语言是什么
2.汇编语言的应用
3.虚拟机是什么
4.汇编语言的数据表示
5.二进制整数
6.二进制加法运算
7.字节(byte)
8.十六进制整数
9.补码及进制转换
10.二进制减法运算
11.字符在计算机中是如何表示的
12.汇编语言布尔表达式
第2章 x86处理器架构
1.CPU处理器架构
2.32位x86处理器架构
3.x86-64处理器架构
4.x86计算机组件
5.I/O输入输出系统
第3章 汇编语言基础
1.第一个汇编语言程序
2.汇编语言常量
3.汇编语言保留字
4.汇编语言标识符
5.汇编语言伪指令
6.汇编语言指令
7.汇编语言整数加减法示例
8.汇编器
9.数据类型以及数据定义
10.等号伪指令
11.计算数组和字符串长度
12.EQU伪指令
13.TEXTEQU伪指令
14.汇编语言64位编程
第4章 数据操作相关运算符和指令
1.操作数类型
2.MOV指令
3.MOVZX和MOVSX指令
4.LAHF和SAHF指令
5.XCHG指令
6.直接偏移量操作数
7.汇编语言数据传送示例
8.加法和减法详解
9.OFFSET运算符
10.ALIGN伪指令
11.PTR运算符
12.TYPE运算符
13.LENGTHOF运算符
14.LABEL伪指令
15.间接寻址
16.JMP和LOOP指令
17.64位MOV指令
18.64位加法和减法
第5章 汇编语言过程
1.汇编语言堆栈简介
2.汇编语言运行时堆栈
3.PUSH和POP指令
4.PROC和ENDP伪指令
5.CALL和RET指令
6.过程调用嵌套
7.示例:整数数组求和
8.USES运算符
9.链接库简介
10.Irvine32链接库
11.Irvine32链接库过程详细说明
12.Irvine64链接库
第6章 汇编语言条件判断
1.布尔和比较指令简介
2.AND指令
3.OR指令
4.位向量(位映射)
5.XOR指令
6.NOT(反码)指令
7.TEST指令
8.CMP(比较)指令
9.置位和清除单个CPU标志位
10.64位模式下的布尔指令
11.条件跳转简介
12.条件跳转指令汇总
13.条件跳转应用及示例
14.LOOPZ和LOOPE指令
15.LOOPNZ和LOOPNE指令
16.使用汇编语言实现IF语句
17.使用汇编语言实现逻辑表达式
18.使用汇编语言实现WHILE循环
19.表驱动选择
20.有限状态机
21.条件控制流伪指令
22..IF、.ELSE、.ELSEIF、.ENDIF伪指令
23.用.REPEAT和.WHILE实现循环
第7章 汇编语言整数运算
1.移位和循环移位指令简介
2.SHL(左移)指令
3.SHR(右移)指令
4.SAL和SAR指令
5.ROL(循环左移)指令
6.ROR(循环右移)指令
7.RCL和RCR指令
8.SHLD和SHRD指令
9.移位和循环移位的应用
10.MUL指令
11.IMUL指令
12.GetMseconds:测量程序执行时间
13.DIV指令
14.IDICV指令
15.使用汇编语言实现算术表达式
16.ADC指令
17.SBB指令
18.ASCII和非压缩十进制运算
19.AAA指令
20.AAS指令
21.AAM和AAD指令
22.压缩十进制运算简介
23.DAA指令
24.DAS指令
第8章 汇编语言高级过程
1.堆栈帧简介
2.寄存器参数的缺点
3.访问堆栈参数
4.常用32位编程调用规范
5.局部变量应用
6.引用参数简介
7.LEA指令
8.ENTER和LEAVE指令
9.LOCAL伪指令
10.Microsoft x64调用规范简介
11.递归及应用详解
12.INVOKE伪指令
13.ADDR运算符
14.PROC伪指令
15.PROTO伪指令
16.过程参数简介
17.WriteStackFrame过程
18.多模块程序简述
19.EXTERN伪指令
20.跨模块使用变量和标号
21.用Extern伪指令新建模块
22.用INVOKE和PROTO新建模块
23.使用USES运算符注意事项
24.向堆栈传递8位和16位参数
25.32位模式下传递64位参数
26.非双字局部变量
27.Java虚拟机工作原理
第9章 汇编语言字符串和数组
1.字符串基本指令简介
2.MOVSB、MOVSW和MOVSD指令
3.CMPSB、CMPSW和CMPSD指令
4.SCASB、SCASW和SCASD指令
5.STOSB、STOSW和STOSD指令
6.LODSB、LODSW和LODSD指令
7.Irvine32字符串过程
8.Irivne64字符串过程
9.二维数组简介
10.冒泡排序简述
11.对半查找简述
12.Java字符串处理
第10章 汇编语言结构和宏
1.STRUCT和ENDS伪指令
2.声明结构变量
3.TYPE和SIZEOF运算符
4.实例:显示系统时间
5.结构嵌套简述
6.联合的声明和使用
7.宏过程简述
8.MACRO和ENDM伪指令
9.宏的调用简述
10.宏的特性
11.Macro宏库详解
12.实例:封装器
13.条件汇编伪指令简述
14.IFB和IFNB伪指令
15.宏默认值设定及布尔表达式简述
16.IF、ELSE和DENDIF伪指令
17.IFIDN和IFIDNI伪指令
18.实例:矩阵行求和
19.&、<>、!、%运算符简述
20.宏函数
21.使用WHILE、REPEAT、FOR 和 FORC伪指令定义重复语句块
第11章 汇编语言MS-Windows编程
1.MS-Windows编程简述
2.Win32控制台函数简述
3.MessageBoxA函数
4.ReadConsole函数
5.GetLastError和FormatMessage函数
6.单字符输入简述
7.GetKeyState函数
8.WriteConsole和WriteConsoleOutputCharacter函数
9.CreateFile函数
10.CloseHandle函数
11.ReadFile函数
12.WriteFile函数
13.SetFilePointer函数
14.Irvine32链接库文件I/O
15.实例:文件I/O过程
16.控制台窗口操作
17.控制台光标设置函数简述
18.SetConsoleTextAttribute和WriteConsoleOutputAttribute函数
19.Win32时间与日期函数
20.64位Windows API使用简述
21.如何编写图形化的Windows应用程序
22.MessageBox函数
23.WinMain过程
24.WinProc过程
25.ErrorHandler过程
26.实例:Windows图形化程序
27.动态内存分配(堆分配)
28.实例:动态内存分配
29.x86存储管理简述
30.线性地址简述
31.页转换
第12章 浮点数处理与指令编码
1.IEEE二进制浮点数表示
2.阶码
3.规格化二进制浮点数
4.十进制小数转换为二进制实数
5.FPU寄存器栈
6.FPU舍入
7.浮点数异常与常用指令集
8.浮点数算术运算指令
9.FCOM指令
10.读写浮点数值
11.FWAIT(WAIT)指令
12.混合模式运算简述
13.异常的屏蔽与未屏蔽简述
14.x86指令编码简述
15.单字节指令与立即操作数简述
16.寄存器模式指令简述
17.处理器操作数大小前缀作用及意义
18.内存模式指令简述
第13章 高级语言接口
1.高级语言调用汇编语言的接口规范
2..MODEL伪指令
3.查看C/C++编译器生成的汇编代码
4.__asm伪指令
5.实例:文件加密
6.C/C++调用汇编语言函数
7.汇编语言调用C/C++函数
8.实例:乘法表
9.汇编语言调用C/C++库函数
10.实例:目录表程序