汇编语言的产生
汇编语言的主体就是汇编指令,可以说汇编指令是机器指令便于记忆的书写格式。
编译器:将汇编指令转换成机器指令的翻译程序。
我们在不断向上学习的过程中,不应该忘掉基础的底层知识,汇编语言就是了解底层核心的重要内容之一。
向上学习是应用,向下学习是本质,这就是精髓。
进制
- N进制:逢N进一。
- 进制的计算:本质也就是查数进行运算。通过构建加法表、乘法表来快速运算。
事实上,减法、乘法和除法本质上都是由加法实现的。
- 进制的应用:
可以自己定义进制的符号,以此来加密解密。
- 为什么要用十六进制?
为了我们方便理解二进制。二进制与十六进制的转换很方便,最好不要混入十进制。
1 | 二进制 |
- 为什么要学习理解二进制?
为了理解寄存器、内存、位。底层的每一个位都是有含义的。这是汇编入门理解的基础。
1 | 十进制 二进制 |
数据宽度
C等强类型语言之所以要定义数据的类型,是因为计算机底层需要给数据定义宽度。
1 | 位 0 1 |
在计算机中,每一个数据都需要给他定义类型,也就是定义宽度,在内存中的宽度。
有符号数无符号数
现在我们给二进制的解码增加一些规则。
无符号规则
数字原来是多少,就是多少。
有符号规则
最高位设定为符号位:1为负数,0为正数
原码反码补码
有符号数的编码规则
原码:最高位是符号位,其余位是数值位,原码又称为带符号的绝对值。
反码:
- 正数:它的反码与它的原码相同
- 负数:符号位一定是1,其余位对原码取反
补码:
在计算机中,所有数都是用补码表示
用到mod的概念,正数关于模的补数就是本身,负数加上关于模的补数就是模
正数:它的补码与它的原码相同
负数:符号位一定是1,反码+1
位运算
1.与运算(and &)
两个都是1才是1.
2.或运算(or |)
有一个是1就是1.
3.异或运算(xor ^)
两个不同就是1.
4.非运算(not ~)
取反.
5.移位运算
6.位运算的加减乘除(这是精华)
计算机只认识 0 1
基本数学是建立在 加减乘除。(加法)
4+5?
1 | 计算机是怎么操作的! |
4-5?
1 | 计算机是怎么操作的! |
乘:x*y, 就是 y 个 x 相加,还是加法
除:x/y, 本质就是减法,就是X 能减去多少个Y。
计算机只会做加法!
机器语言就是位运算。都是电路来实现的。这就是计算机的最底层的本质。
通过机器语言来实现加法计算器。设计电路。