在X86架构下,每一条指令,就是一条二进制机器码,可以被CPU执行。
由于机器码的记忆复杂性,因此将汇编作为机器码的助记符,同机器码一一对应。
因此,我们学习指令,也就是在学习汇编的相关语法原理。
当我们对汇编基础有一定了解后,再继续研究指令机器码组成,会更容易。
我们的思路是:先学习古老的8086汇编基本语法,然后学习CPU的寻址方式以及指令机器码组成,最后尝试分别将16位、32位、64位架构下的汇编转换为机器码。
我们可以在16/32/64位开发环境下,验证汇编与机器码之间的对应关系,并且也给出了大量例子,目的在于通过汇编转机器码的学习过程,循序渐进,掌握X86架构指令编码的基本原理。
我们分为3个部分:8086汇编基础、CPU寻址与指令格式、汇编转机器码。
1 8086汇编基础
1.1 《DOSBox和MASM搭建16位8086汇编开发环境》
1.2 《8086CPU指令执行的基本过程》
1.3 《内存访问与栈》
1.4 《[BX]和Loop指令》
1.5 《将数据、代码、栈放入不同的段》
2 CPU寻址与指令格式
2.1 《CPU寄存器与寻址方式》
2.2 《X86指令基本格式》
3 汇编转机器码
3.1 《VS搭建32位和64位汇编开发环境》
3.2 《指令手册术语缩写》
3.3 《8086(16位)汇编指令与机器码转换原理》
3.4 《X86(32位)汇编指令与机器码转换原理》
3.5 《X64指令基本格式》
3.6 《X64(64位)汇编指令与机器码转换原理》
更新完毕!!!
参考文档:
- 2013-汇编语言(第3版)-王爽.pdf
- Intel汇编指令集(共七卷).pdf(只需看Volume 2: Instruction Reference Set)
- AMD64 Architecture Programmer’s Manual Volume 3 General-Purpose and System Instructions.pdf
链接: https://pan.baidu.com/s/1xibvCVFO7Xf08QRwl8SLtg
提取码: rf29