计算机iOS精品文章ios专题

1.汇编语言的前世今生

2018-04-05  本文已影响264人  听木子说心语

我们在学习逆向开发之前,我们要了解一个基本的逆向原理.

接下来,我们从汇编讲起,
说到汇编语言的产生,首先要讲一下机器语言

1.机器语言

1.1什么是机器语言?
1.2机器语言由来

早期的程序设计均使用机器语言。程序员们将用0,1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再讲程序通过纸带机或卡片机输入计算机,进行运算。

1.3第一个入门程序

身为程序员,每种语言的入门程序,都是welcome to masm。这个是大家都很熟悉第一个程序。
在显示器上输出“welecom to masm”,机器语言怎么写呢?

第一个程序.png

你看到这里有啥想法?
自我感觉挺崩溃的。
上面只是一个非常简单的入门小程序,
写如此小的程序尚且如此,
一个复杂的程序更复杂了。
如果程序中0或1写错了。
估计检查也是挺麻烦的。
只看上面的一段代码,很难识别出来错误的代码。

此时就诞生了另一种语言,方便我们读写。这就汇编语言。

2.汇编语言

2.1什么是汇编语言?
2.2汇编指令案例

机器指令1000100111011000表示吧寄存器BX的内容送到AX中。
那我们怎么写汇编指令呢?
我们只需要借助mov指令就可以编写:
mov ax,bx
我们把bx的内容送到ax中,是不是挺简单的。
我们不用在写10这样的机器指令。

2.3.语言的发展
语言发展.png
2.4汇编语言特点
2.5汇编语言用途
2.6汇编种类

我们iPhone里面用到的是ARM汇编,但是不同的设备也有差异,因为CPU的架构不同

ARM架构
2.7汇编组成
2.8学习汇编
2.9开始编写我们的一个程序

3.汇编语言其他内容

3.1总线
CPU芯片.png
3.2地址、数据、控制总线
总线.png

地址总线:宽度决定了CPU的寻址能力;8086的地址总线宽度是20,所以寻址能力是1M(2的20次方)。

数据总线:它的宽度决定了CPU的单次数据传送量,也就是数据传送速度;8086的数据总线宽度是16,所以单次最大传递2个字节的数据。

8088.png 8086.png

8088的数据总线宽度是8,8086的数据总线是16。
所以8088分两次传送89D8,8086只需要一次传送。

3.3我们思考几个问题
3.4存储器
存储器.png
3.5内存
8086内存地址空间分配.png

4.总结

以上内容是对汇编的产生以及汇编中的知识层进行的介绍。
知识层继续介绍与分析,我们下一节继续进行。
通过这一篇文章,个人感觉汇编也是一种挺有魅力的语言。
很像和它做朋友,所以你必须要深入的了解一下它。

上一篇 下一篇

猜你喜欢

热点阅读