计算机底层入门 01 概述&&语言&&进制的思想本质

1.1 概述


汇编语言是你的必经之路。

计算机语言 是 二进制代码。而汇编语言是对其二进制代码的加工,进而把一些二进制代码 加工成了 英文单词 作为它的助记符

  • 什么是进制 ?

进制是进位计数制,是人为定义的带进位的计数方法。比如十进制,是逢十进一,没有十的代表符号(0 1 2 3 4 5 6 7 8 9)。二进制就是逢二进一,也没有二的代表符号(0 1)。

  • 目录大纲
  • 入门部分:
  1. 为什么要学习汇编语言

  2. 进制如何运算

  3. 二进制

  4. 数据宽度

  5. 有符号数和无符号数

  6. 原码反码补码(所有人最头疼的基础部分)

  7. 位运算

  8. 位运算计算(来实现加减乘除)

  9. 汇编(OD反汇编工具)

  10. 寄存器

  11. 内存


  • 进阶部分:
  1. 汇编指令

  2. 内存复制

  3. 堆栈的指令

  4. 汇编如何写函数

  5. 堆栈传参

  6. 堆栈如何平衡

  7. 外挂


1.2 为什么要学习汇编语言

  • 什么是语言 ?
    答:人与人交流的工具,它还有很多种。比如中文,英语等…你想和外国人交流最基本的英语是必须要会的,否则没办法交流。同理,你想和计算机交流,计算机语言你也是必须要会的!所以要去学习计算机的语言(机器语言 二进制代码 0 1

我们目前主流的是电子计算机
状态只分:0 和 1 两种
最早的程序员:他们是用穿孔卡带来写程序的。
加减乘除 的本质 都是 "加法"
而对于计算机而言,你要进行四则运算的某个运算时,必须输入一串二进制代码,也就是 命令。来 告诉计算机。否则它根本不知道你要干什么。。

那么无论是 数据 还是 命令,都是用 二进制代码表示的。二进制虽然看似简单。但过多灵活的排列组合方式,会使二进制代码变得异常复杂和难记。那么能简化吗? ———— 助记符诞生了!

加:ADD、ADC、INC --> 编译器 (加法二进制代码)
减:SUB、SBB、DEC --> 编译器 (减法二进制代码)
乘:MUL、IMUL --> 编译器 (乘法二进制代码)
除:DIB IDIV --> 编译器 (除法二进制代码)

这个编译器,就相当于一个 翻译器(翻译官),为我们 输入的汇编代码进行翻译,变成 二进制代码。翻译后,计算机就能看懂了。

所以内存里面 只改变一个 位,其实就会发生翻天覆地的变化!!!因为计算机语言 是 二进制代码。而一个二进制 代表一位!

现在汇编 一般用于 底层的编写和单片机。因为 已经出现了更加简化的 语言 --> 高级语言(C/C++)

在这里插入图片描述

由于,我们现在 都是 向上学习,而忽略了向下学习。导致C/C++ 的程序员 解决问题可能需要 问 汇编的程序员,而Java 的程序员解决问题可能 要去 问 C/C++ 的程序员。这是很无厘头的…而我们说如果 你想要真正的 学好计算机这门学科,也需要 对 底层有一定的了解!而对底层了解的第一步 就是 学好 进制 和 汇编!


1.3 进制的思想本质

二进制 ? 0 1
学习进制的障碍 ?

学习进制的障碍:就是我们的十进制!

因为人类天生有十只手指,所以我们才会选择 10 进制。所以并不是只有 十进制,也不是 只有 十进制 最方便!对于计算机来说 二进制 就是最方便的 进制(也是 它自己的 最优策略)。 ———— 因为计算机 最基本的组成单位是 电子元器件,而电子元器件 最本质的状态 只有两种 即 电流通过 为 1,电流断开 为 0。

  • 进制

1 进制:一进一,结绳计数(无限的 往下 进位)。
2 进制:二进一,计算机 0 1 满 二 则 进 1
8 进制:八个符号组成(0 1 2 3 4 5 6 7) 缝八进一。
10 进制:十个符号组成(0 1 2 3 4 5 6 7 8 9)逢十进一。
16 进制:十个符号组成(0 1 2 3 4 5 6 7 8 9 A B C D E F)逢十六进一。

进制的本质:其实就是 查数和基本映射表。

  • 一进制

1
1 1
1 1 1

  • 三进制

0 1 2
10 11 12
100 101 102
110 111 200
201 202 210
211 212 220
221 222 1000

  • 八进制

0 1 2 3 4 5 6 7
10 11 12 13 14 15 16 17
20 21 22 23 24 25 26 27
30 …

  • 十六进制

0 1 2 3 4 5 6 7 8 9 A B C D E F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 …

  • 二进制

0 1
10 11
100 101
110 111
1000 1001
1010 1011
1100 1101
1110 1111
==1111 --> F(16)==其实 二进制 数到 第 15个数不也就相当于 十六进制 的 F 吗 ?
所以进制的转换,实际上 来源于 查数!只是我们后期研究出了方便进制转换的技巧和公式而已。

进制如果学好了,其实可以解决 1 + 1 = 3 的问题!

解析:符号不是固定的!!所以我们可以写出自己的 十进制符号。
我的十进制符号:0 1 3 2 4 5 6 7 8 9
那么 1 + 1 = 3 就是正确的了!

这就属于比较 高级的进制加密!进制加密如何破解呢?

答:在数据量非常大的前提下,根据统计学,逐步分析其规律性。然后提取出公式。就知道 这些 符号原本想表达的意思是什么了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值