汇编语言与其它语言的关系
image.png汇编语言的特点
-
对于不同型号的计算机,有着不同的结构的汇编语言,汇编指令是机器指令的助记符,同机器指令一一对应。每一种CPU都有自己的机器指令集\汇编指令集,所以汇编语言不具备可移植性
-
可以直接访问、控制各种硬件设备,比如存储器、CPU,所以比高级语言的执行速度快
-
占用内存空间少,高级语言通过编译器转换为汇编语言的时候会生成多余的代码
-
能够不受编译器的限制,对生成的二进制代码进行完全的控制
-
汇编语言比较难,不易于编写、调试、维护
-
不区分大小写,比如mov和MOV是一样的
汇编语言的种类
8086汇编(8086处理器是16bit的CPU)
Win32汇编
Win64汇编
ARM汇编(嵌入式、Mac、iOS)
......
我们iPhone里面用到的是ARM汇编,但是不同的设备也有差异.因CPU的架构不同.
架构 | 设备 |
---|---|
armv6 | iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch |
armv7 | iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini, iPod Touch 3G, iPod Touch4 |
armv7s | iPhone5, iPhone5C, iPad4(iPad with Retina Display) |
arm64 | iPhone6s , iphone6s plus,iPhone6, iPhone6 plus,iPhone5S ,iPad Air, iPad mini2 |
总线
总线分为:地址总线(寻址),数据总线(传输数据),控制总线
- 地址总线决定寻址的能力,例如:8086的地址总线为20根,其寻址能力是2^20,1024 * 1024,既是1M.
- 数据总线决定单次可以传输的最大数据量,例如8086的数据总线有16根,单次最大能传输2个字节(一个字节8位,2个字节16位).
- 控制总线:它的宽度决定了CPU对其他器件的控制能力、能有多少种控制.
CPU通过芯片上的管脚与总线相连,读取内存中的指令,从而控制外部器件.
首先通过地址总线找到要访问的内存,然后由控制总线决定读/写,最后由数据总线传输数据.
image.png
8086的寻址方式
- CPU访问内存单元时,要给出内存单元的地址,所有的内存单元都有唯一的地址,叫做物理地址
-
这里有个问题,8086有20根地址总线,有1M的寻址能力,而CPU是16位的,单次能处理的地址为16位,这样表面上看寻址能力只有64K(2^16),那么后面的地址就找不到了吗?实际上,8086采用一种在内部用2个16位地址合成的方法来生成1个20位的物理地址,比如CPU要访问21F60H单元,
image
image - 可以用 物理地址 = 段地址 * 16(基础地址) + 偏移地址 这个公式来表示最终要访问的地址,例如CPU要访问21F60H时, 可以用 21F6H * 16 + 0H来表示.
- 基础地址一般是16的倍数,例如21F60H的基础地址可以是21F6H * 16,也可以是21F5H * 16等等
- 由于偏移地址是16位的,所以其寻址能力最大是64KB.
网友评论