汇编入门一

汇编语言与其它语言的关系

汇编入门一_第1张图片
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通过芯片上的管脚与总线相连,读取内存中的指令,从而控制外部器件.
首先通过地址总线找到要访问的内存,然后由控制总线决定读/写,最后由数据总线传输数据.


汇编入门一_第2张图片
image.png

8086的寻址方式

  • CPU访问内存单元时,要给出内存单元的地址,所有的内存单元都有唯一的地址,叫做物理地址
  • 这里有个问题,8086有20根地址总线,有1M的寻址能力,而CPU是16位的,单次能处理的地址为16位,这样表面上看寻址能力只有64K(2^16),那么后面的地址就找不到了吗?实际上,8086采用一种在内部用2个16位地址合成的方法来生成1个20位的物理地址,比如CPU要访问21F60H单元,


    汇编入门一_第3张图片
    image

    汇编入门一_第4张图片
    image
  • 可以用 物理地址 = 段地址 * 16(基础地址) + 偏移地址 这个公式来表示最终要访问的地址,例如CPU要访问21F60H时, 可以用 21F6H * 16 + 0H来表示.
  • 基础地址一般是16的倍数,例如21F60H的基础地址可以是21F6H * 16,也可以是21F5H * 16等等
  • 由于偏移地址是16位的,所以其寻址能力最大是64KB.

你可能感兴趣的:(汇编入门一)