Part 1. 机器指令
文章插图
上一次 我们已经了解了 二进制和 CPU 的基本原理,知道了程序运行时,CPU 每秒数以亿次、十亿次、百亿次地震荡着时钟,同步执行着微小的 「电子操作」,例如:从内存读取一个字节的数据到 CPU 又或者判断字节中的某一位是 0 还是 1 。
CPU 本身有一组 规定好的 可以执行的 「基本动作」(被称为 机器指令):
- 读取指令;2. 执行指令;3. 写寄存器;
处理器所做的一切都是基于这些微小的操作!幸运的是,我们已经不再需要了解这些操作的详细信息就可以编写和使用各类程序 。诸如 JAVA 这一类的 「高级语言」 的 目的就是 将这些微小的电子操作组织成由人类可读的「程序语言」表示的大型有用单元 。
机器指令演示一条 机器指令 一般由内存中的几个字节组成,它们告诉 CPU 应该执行一个什么样的「机器操作」(是取数据还是写寄存器等..) 。处理器依次查看 CPU 中的机器指令,并执行每一条 。内存中的一组机器指令被称为 「机器语言程序」,或称为 「可执行程序」 。
下面我们来使用机器语言来演示一个控制灯泡亮度的机器语言程序 。
先和硬件做好规定假设灯泡由内存中的某一个程序控制,该程序能够完全打开和关闭灯泡,可以使灯泡变亮或变暗,机器指令一个字节长度,并且与机器操作对应如下:
机器指令机器操作00000000停止程序00000001完全打开灯泡00000010完全关闭灯泡00000100灯泡暗淡 10%00001000将灯泡照亮 10%00010000如果灯泡完全点亮,则跳过下一条说明00100000如果灯泡完全熄灭,请跳过下一条说明01000000转到程序的开始(地址 0)
Demo 程序 && 演示根据上方作出的规定,我们写下如下的程序:(为了方便理解,我把对应的机器操作也写在了后面,实际的程序只包含机器指令)
地址机器指令机器操作000000001完全打开灯泡100000010完全关闭灯泡200000001完全打开灯泡300000100灯泡暗淡10%400000100灯泡暗淡10%500000000停止程序
所以这样的一段程序执行效果就如下图:
文章插图
您可以尝试自己利用 01000000(跳转到程序开始) 来改写程序来达到让「灯逐渐变亮又逐渐变暗」的目的 。
小结上面演示的程序 核心思想 是:
- 机器语言程序是内存中一系列机器指令的集合;
- 机器指令由一个或多个字节组成(在此示例中,仅一个字节);
- 处理器一次运行一条机器指令的程序;
- 所有的小机器操作加起来都是有用的;
Part 2. 汇编语言
文章插图
- 图片来源:http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html
00000001 00000010 0000000100000100 00000100 00000000
即使你刚看过你也会对这一段就在 上方的实例代码 没有什么感知,这是因为机器语言是设计给机器的,人类记忆和使用起来就会显得十分麻烦 。如此你就会感知到 上个世纪 的程序员使用 打孔卡片:
文章插图
使用 纸带:
文章插图
甚至是 直接插拔线路 or 按下开关:
文章插图
是一件多么硬核的事情...
文章插图
“
如果你对它们如何工作以及多么硬核感兴趣,可以参考一下下方的链接:
开发语言小传之一:最早的编程语言——机器语言 - https://blog.csdn.net/killer080414/article/details/42219091
推荐阅读
- 作者服务全解:当你在头条号遇到创作问题,应该怎么办?
- 数据压缩算法
- 央企|在央企扣完五险两金到手5000元,该坚持下去,还是另谋出路呢?
- 退休|49岁投了1000份简历没有找到工作,怎样才能工作到65岁?
- 开淘宝店能赚到钱吗 怎么淘宝开店赚钱吗
- 被公司辞退怎么开具离职证明?如何开到离职证明?这里可以弄
- 茶艺到底是什么,茶树菇炒腰花的做法是什么
- 如何在你的汽车上找到GPS定位器
- 社保卡功能越来越多,领养老金也要用,到底怎么用?丢了怎么办?
- 手持蒸汽熨斗,到底是神器还是智商税,用了两年多,说说真实感受