计算机基础课第 26 期分享

转载请联系授权(微信ID:qianpangzi0206)

01

从硬件到软件

之前我们把重点放在硬件 - 组成计算机的物理组件,比如电,电路,寄存器,RAM,ALU,CPU。但在硬件层面编程非常麻烦,所以程序员想要一种更通用的方法编程,一种"更软的"媒介,没错,我们要讲软件!

前面我们一步步讲了一个简单程序,第一条指令在内存地址 0:0010 1110,之前说过,前 4 位是操作码,简称 OPCODE。对于这个假设 CPU,0010 代表 LOAD_A 指令,把值从内存复制到寄存器 A,后 4 位是内存地址,1110 是十进制的 14。所以这 8 位表达的意思是 "读内存地址 14,放入寄存器 A"

只是用了两种不同语言,可以想成是英语摩尔斯码的区别,"Hello" 和 ".... . .-.. .-.. —",都是"你好"的意思,只是编码方式不同。英语和摩尔斯码的复杂度也不同,英文有 26 个字母以及各种发音,摩尔斯码只有"点"和"线",但它们可以传达相同的信息,计算机语言也类似。

计算机能处理二进制,二进制是处理器的"母语",事实上,它们只能理解二进制,这叫"机器语言"或"机器码"。

02

伪代码

在计算机早期阶段,必须用机器码写程序,具体来讲,会先在纸上用英语写一个"高层次版"。

举例:"从内存取下一个销售额,然后加到天、周、年的总和,然后算税"等等...这种对程序的高层次描述,叫 "伪代码"

在纸上写好后,用"操作码表"把伪代码转成二进制机器码,翻译完成后,程序可以喂入计算机并运行。

你可能猜到了,很快人们就厌烦了,所以在 1940~1950 年代,程序员开发出一种新语言, 更可读更高层次,每个操作码分配一个简单名字,叫"助记符"。"助记符"后面紧跟数据,形成完整指令。与其用 1 和 0 写代码,程序员可以写"LOAD_A 14"。我们在前面用过这个助记符,因为容易理解得多!

03

汇编器

当然,CPU 不知道 LOAD_A 14 是什么,它不能理解文字,只能理解二进制,所以程序员想了一个技巧,写二进制程序来帮忙,它可以读懂文字指令,自动转成二进制指令,这种程序叫汇编器。汇编器读取用"汇编语言"写的程序,然后转成"机器码","LOAD_A 14" 是一个汇编指令的例子。

随着时间推移,汇编器有越来越多功能,让编程更容易,其中一个功能是自动分析 JUMP 地址,这里有一个前面用过的例子:注意, JUMP NEGATIVE 指令跳到地址 5,JUMP 指令跳到地址 2。问题是,如果在程序开头多加一些代码,所有地址都会变,更新程序会很痛苦。

所以汇编器不用固定跳转地址,而是让你插入可跳转的标签。当程序被传入汇编器,汇编器会自己搞定跳转地址,程序员可以专心编程,不用管底层细节,隐藏不必要细节来做更复杂的工作,我们又提升了一层抽象。

然而,即使汇编器有这些厉害功能,比如自动跳转,汇编只是修饰了一下机器码。一般来说,一条汇编指令对应一条机器指令,所以汇编码和底层硬件的连接很紧密。

汇编器仍然强迫程序员思考  用什么寄存器和内存地址,如果你突然要一个额外的数,可能要改很多代码让我们想一想。

我们将在下一节讲。

相关阅读:

  1. 如何榨干CPU的所有价值

  2. 程序如何"进入"计算机

  3. 最早期编程

程序员成长充电站

长按扫码关注,每天五分钟学习计算机最基础的知识和原理

右下角

给个在看

汇编指令对应的机器码_二进制如何变成汇编语言相关推荐

  1. 汇编指令对应的机器码_汇编语言输出“welcome to you!”

    基础知识 汇编语言指令组成 汇编指令:机器码的助记符,有对应的机器码. 伪指令:没有对应的机器码,编译器执行,机器不执行. 其他符号:如+-*/有编译器识别,无对应机器码. CPU与外部器件交互需要 ...

  2. ARM 汇编指令对应的机器码和条件码

    一.ARM 汇编指令对应的机器码 二.条件码

  3. 内存地址、机器码与汇编指令的三角恋关系

    虽然机器码和内存地址领证在一起了,但是俩个人都和汇编指令有着说不清的关系,机器码的前任是汇编指令,而汇编指令又与内存地址暗地相通,这究竟是道德的沦丧还是人性的扭曲,今天就让我来领大家细细分解这三者的前 ...

  4. 01 ARM体系结构与汇编指令

    注:本文章是由笔者学习朱有鹏arm的学习笔记,特此感谢朱老师. 关于汇编: 1.汇编的实质是机器指令(机器码)的 助记符,是一款CPU的本质特征. 2.不同CPU的机器指令集设计不同,因此 汇编程序不 ...

  5. 机器码 与 汇编指令的关系

    ============================================================ 是转载,但是我转载的人,也没贴出原出处,没办法. 既然有人总结了,我们就学学. ...

  6. 汇编指令和机器码在线转换工具

    汇编指令和机器码在线转换工具 https://armconverter.com/ https://shell-storm.org/online/Online-Assembler-and-Disasse ...

  7. 转载——8086汇编指令与机器码的相互转换

    汇编指令与机器码的相互转换  贴子发表于:2008-10-28 12:48:03 机器语言我们只要重点理解一下几个概念: 1. 机器语言指令有操作码(OP)和地址码两部分组成 |___________ ...

  8. 汇编指令和机器码的对应表

    一.状态寄存器 PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示: 15 14 13 12 11 10 98 7 6 5 4 3 ...

  9. java 汇编_大话+图说:Java 汇编指令——只为让你懂

    原标题:大话+图说:Java 汇编指令--只为让你懂 前言 随着Android开发技术不断被推到新的高度,对于Android程序员来讲越来越需要具备一些对深入的基础性的技术的理解,比如说Java汇编指 ...

最新文章

  1. C/C++流程图生成器 C转流程图【worldsing笔记】
  2. 获得北大新材料学院夏令营offer的艰险历程(附面试答辩PPT)
  3. Clojure开发OpenCV的简介
  4. 「SVN」ubuntu svn自动忽略了.a.so等文件
  5. 深度学习篇-Keras(初级)
  6. Python -- abc module
  7. 如何改变Myeclipse编辑区背景色(转)
  8. AMD OpenCL大学课程(12) 性能优化案例NBody
  9. 计算机图形学算法详解,计算机图形学裁剪算法详解
  10. mysql+update+@value_记一次MySQL更新语句update的踩坑
  11. 常用验证码功能实现大全
  12. solidworks中皮带同步轮配合如何做?几张图教会你
  13. 背包问题-递归思想(C语言)
  14. Oracle密码过期问题,设置永不过期
  15. 惠普笔记本被政府盖章存隐藏键盘记录器,怎么回事?
  16. Pytorch基础操作 —— 8. 张量转置操作
  17. 如何用电脑录制一个教学视频
  18. php编写当前日期距高考天数,距离2021年高考天数 2021高考倒计时
  19. 记录一下js获取上周、下周日期
  20. Unity 粒子系统贴图去除黑色区域

热门文章

  1. element ui富文本编辑器的使用(quill-editor)
  2. 虚拟机创建macOS和windows注意事项
  3. 慎用 ConstraintLayout
  4. 2022-4-8 Leetcode 185.部门工资前三高的所有员工
  5. ssd测试软件4k 64线程是什么意思,4K随机/缓存等性能测试_固态硬盘评测-中关村在线...
  6. 2018.10.24-dtij-2636-262144(game)
  7. Java项目:美容院预约管理系统(java+SpringBoot+JSP+jQuery+maven+mysql)
  8. 到银联的调试过程,总结,记录
  9. matlab编选择程序if,matlab程序if语句用法
  10. XP系统还原计算机用户名,怎么还原WinXP电脑系统?