汇编的定位
通俗理解:汇编语言是高级语言与机器语言之间的语言,所有的高级语言在运行在终端设备上之前,都要先编译成汇编语言,汇编语言再编译成机器语言,最终运行在终端设备上。
汇编语言是一种低级语言,也成为符号语言,在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
汇编的特点
1.汇编是直接面向处理器的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一种处理器都有自己可以识别的一整套指令,称为指令集。
2.汇编语言的操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂。
3.汇编语言指令是机器指令的一种符号表示,而不同类型的CPU 有不同的机器指令系统,也就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。
汇编语言的种类
8086汇编(8086处理器是16bit的CPU)
Win32汇编
Win64汇编
ARM汇编(嵌入式、Mac、iOS)
注:我们iPhone里面用到的是ARM汇编,但是不同的设备也有差异.因CPU的架构不同.
开始学习,建议从8086开始学习,Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖,非常经典。
必要常识
APP/程序的执行过程
CPU总线
总线:一根根导线的集合,每个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互。
总线的分类
地址总线、数据总线、控制总线
地址总线
决定了CPU的寻址能力,8086的寻址能力是20,寻址能力是 2 ^ 20 = 1024 * 1024 = 1024 * 1KB = 1M。
数据总线
决定了CPU单次数据传输量,也就是传输速度,8086的数据总线宽度是16,所以单次最大传输2个字节的数据。(1根线1bit,8bit = 1字节,8根线一个字节,16根线2个字节)。
8088的数据总线宽度是8,8086的数据总线宽度是16,分别向内存中写入89D8H如下
控制总线
它的宽度决定了CPU对其他器件的控制能力、能有多少种控制。
注意:这里是16进制,后方的H是单词Hexadecimal的意思
寄存器
对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制
不同的CPU,寄存器的个数、结构是不相同的(8086是16位结构的CPU,8086有14个寄存器,都是16位)
通常,CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算