单片机底层是怎么运行的-原理》

汇编语言是举例机器语言最近的编程语言,各种控制芯片的底层执行原理就是一堆机器代码在控制着一堆逻辑器件。

今天是中秋节。 至此,上个月吃蛋糕的任务就已经完成了。 当然,我还是要跟大家说一声中秋快乐!

今天我就趁着假期给大家科普一下知识福利。 下面的内容可能很难理解,我会尽力让它比你在学校课堂上学到的内容简单。 如果你按照我的介绍一步步了解了,那么恭喜你,你很伟大,很幸运。 以后你会对计算机有新的认识,以后学习其他编程语言或者接触其他更复杂的芯片也会容易很多。 看完之后我们就来尝试一下吧!

我之前写的单片机教程系列文章,基本上都是面向应用的,很少谈到它的执行机制。 最多介绍一下相关寄存器的使用方法。 主要目的是让大家通过实验现象了解单片机能做什么以及如何控制它。 我还故意在前几个模拟实验程序中留下了一些陷阱。 结果只有极少数人知道并给我发私信。 大多数人可能没有尝试过。 也许我写的例子太简单了,不值得一读。 嗯,哈哈,总之,学习技能还是需要多动手实践。

大家都在研究单片机,肯定接触过《微机原理》。 不知道大家是否觉得学起来很难,但可能很多人还是很关心的。 不幸的是,微控制器实际上是微型计算机芯片的简化版本。 它们的基本机制是相似的。 学过《微机原理》的朋友相信学微机是没有问题的。 你还记得《微型计算机原理》讲的内容吗? 如果你不记得了,我现在就带你回忆一下。 简单来说,它允许我们用汇编语言进行编程。 说到装配,很多人都不敢看。 是的,我今天要讲的就是装配。 如果你现在选择不读它,你可能会后悔。 你真的需要向我学习汇编。

汇编可以说是编程语言的鼻祖。 说白了,不懂一些汇编知识的程序员并不是真正意义上的程序员。 汇编语言是代表机器语言的最新编程语言。 各种控制芯片的底层执行原理是一堆机器代码控制一堆逻辑器件。 它们如何工作? 接下来我就以51单片机为例,尝试理清它们的关系,让大家享受到编程的乐趣。

我们先从微型计算机的原理开始

为什么要从《微型计算机原理》开始呢? 因为它是一本纯粹讲解计算机底层系统的基础书。 原始计算机设计的许多答案都可以在这里找到。 所以建议如果你对计算机系统不熟悉的话,应该多看几遍,看一看一些东西。 很快就会完成。 当你愿意静下心来读书时,你就会主动去寻找某些书本上没有的答案。 我想这才是真正有意义的大学学习过程。 事实上,我们的大学教材有很多是不完整的,尤其是基础知识。 文末的注释或参考文献中可能会有一些提示。 有些知识点你在课本上找不到答案。 相反,你必须去图书馆或官方手册或网站来获取解释。

我并不是说编写教科书的人有问题或者他们做错了什么。 相反,可以作为大学教材的经典书籍的编者绝对是国内这一领域的知名专家。 他们安排图书出版的初衷也是希望学生能够自主学习,学到更多东西,拓展知识面。 毕竟教材的厚度有限,而知识日新月异,涉及的话题几乎是无限的。 大学应该是一个独立学习的地方。 那些老教授都是在基础条件较差的环境中成长起来的,冲破了层层障碍。 他们在编写教科书时必须有良好的意图。

只是当他们的教材传到学生手中时,有的必须依靠老师抓重点才能通过。 如果这种情况持续很长时间,总会有一些原本学得马马虎虎的学生,成为了学校的老师。 我不明白,学生们似乎也不想明白。 最后我只好看书来寻找所教内容的答案。 当然,并不是所有的老师都是这样。 在教学过程中,许多青年教师随着资历的提高,不断提高自己的教学技能。 前面的少数人并不能代表整体。 幸运的是,我在大学遇到的老师都很好。 我只能为此责备自己。 我不够努力,没能得到真正的信息。 今天正好又是教师节。 祝天下老师节日快乐!

Linux之父Linus在大学时设计了第一个版本的Linux系统。 我只能说他真是天才。 与当时的环境相比,他几乎是自己设计了一整套系统。 这个系统太需要脑力了! 我上学的时候也看过他的源码。 尽管总共只有一万行代码,但其中有很多代码很难理解。 对我来说,读完一页后忘记另一页是很常见的。 最终我还是没有明白它的真正含义。 没过多久我就明白了。 我都快忘记了。 现在如果有人让我看他的源代码,我会直接告诉他,算了,我确实没那么材料,我应该做好我的工作。 有兴趣的朋友可以看一下他的代码,但不建议初学者阅读。 你至少要精通C语言,有基本的汇编基础才能看懂,否则对你的学习不利!

《微型计算机原理》课程主要利用Intel的80×86芯片来介绍计算机的底层原理。 一般情况下,计算机、电子相关专业的学生会完成计算机基础知识和C语言(或其他高级语言)的学习。 ,你将从微观层面学习计算机系统。 《微型计算机原理》将介绍计算机的数值系统和编码、CPU的由来以及内部功能结构,然后介绍80×86芯片。 这些内容结合他们已经学过的知识,对于大多数人来说应该很容易理解。

单片机底层是怎么运行的-原理》

上面的图片看起来很熟悉。 51单片机也有类似的结构。 然后教材进入了80×86指令系统的介绍。 觉得《微机原理》很难的同学可能从这里开始就迷茫了。 什么是立即寻址和直接寻址? ,寄存器间接寻址,基址变址寻址,等等一大堆麻烦的概念。 此外,还有各种指令、运算符、地址、存储器、寄存器和存储单元。 这些都让人眼花缭乱。 老师还要求你在学期结束时背诵并填空。 这不是要了你的命吗? 正确的? 练习中,我会给你一段代码,然后给你一个像下面这样的示意图,问你是否能理解什么是什么,什么等于什么? 这可能吗? 老师可能会让你头晕。

单片机底层是怎么运行的-原理》

看完上面的例子,你是否感到头晕呢? 如果你头晕了,那么我的目的就达到了,接下来我给你解释一下。

汇编语言与机器语言如何对应?

上面说了这么多汇编语言,越来越让人摸不着头脑了。 为了解决你的疑惑,首先我们来了解一下维基百科对汇编语言的定义。

汇编语言(英语:assemble language)是电子计算机、微处理器、微控制器或其他可编程设备中使用的任何低级语言。 在不同的设备中,汇编语言对应不同的机器语言指令集。 汇编语言是专门针对某种计算机系统结构的,不像许多高级语言那样可以在不同系统平台之间移植。

从定义中我们可以知道,汇编可以存在于任何具有控制功能的芯片中,但是每个控制芯片支持的汇编语言不一定相同! 为什么会这样呢? 芯片制造商在设计芯片并定义其逻辑功能时,还必须定义其操作指令。 所以现在我们会听到有各种架构的芯片。 每个架构实际上都是一组指令系统,比如80×86、MIPS32、8051、AVR、RISC-V等各种指令集,芯片制造商可以向用户提供汇编指令集,但用户也可以定义自己的指令集组装说明。 当然,这些用户都是各大厂商。 我们这些普通用户直接使用厂家提供的就足够了。 比如微机原理、51单片机的汇编指令都是Intel自己给我们定义的。 这就是我们之前提到的汇编语言的局限性,不方便移植。 我们今天不会追究这些问题。

好,我们看下一句标红的,表示每个芯片的汇编语言对应设备上的机器语言指令。 这句话是理解汇编语言和机器语言关系的关键。 简单来说,我们写的每一条有意义的汇编语句都对应着一段机器代码,也对应着一条机器指令。 CPU根据这一系列机器码执行一系列机器操作。 这就是我们写的。 程序执行结果。 最好先记住这句话。 具体的对应关系将在后面的文章中一一介绍。 那么什么是有意义的汇编语句呢? 它们是汇编语言指令,即你不乐意记住的mov、add、inc、jmp等。 然后是一些相应的汇编语句,没有实际意义。 我们所说的汇编伪指令,如db、dw、equ等。这些语句一般用来定义变量,或者用于指令和标识。 它们起到辅助作用,不参与程序的运行。

我们都知道我们的51单片机是8位机,所以它的内部操作码是8bits,也就是说它内部最多可以有2^8=256个操作码。 现在汇编指令和操作码总数已经确定了,剩下的就是一一填写它们之间的对应表了。

那么两者之间有何对应关系呢?

我们可以查看一些芯片的官方手册。 专业厂家会列出这些信息,有些书籍也会有,但一般出现在附录中,内容也不是很详细,所以查看时应以官方手册为准。 我将在这里发布几张图片来说明。

单片机底层是怎么运行的-原理》

这是STC数据手册中的指令集描述。 信息相当多,但我们似乎仍然找不到这些对应关系。 不过,我们可以看到,这里列出了每条汇编指令并结合了各种搜索方法。 那么机器码应该和这些有关。 接下来我们继续寻找数据挖掘:

单片机底层是怎么运行的-原理》

正如您所看到的,代码一词可以在这里找到。 看来我们离目标越来越近了。 我们应该多读英文资料吗?

单片机底层是怎么运行的-原理》

果然还是能找到信息。 现在这张表应该符合他们的关系了! 有些人可能还是不明白这个表怎么读。 例如,nop指令位于第0行第0列,组合起来后,其对应的机器码值为0x00。 同样,ajmp指令位于第0行第1列,组合码为0x01。 你看,它是一个二维数组。 每条指令的各种寻址操作都一一显示。 根据之前手册中的信息,您可以获得完整的对应表。 这样看这款手表有点令人困惑。 我们可以让它变得更简单、更容易理解。

单片机底层是怎么运行的-原理》

看这张表会容易很多。 当然,这里仅举例说明了部分表格内容。 详细的表格内容不多,不太方便截图。 现在这些数据还没有整理到云盘中。 稍后我会找时间一起处理并分析。 把它链接出来。 近期需要这方面资料的朋友可以私信或者留言,我直接把文件发过去。

现在我举个例子来说明一下,以便大家更好的理解。

当你现在看到这张照片时,你有什么感想? 你首先想到的是查看mov指令的规则吗? 解释一下这段代码的含义。 连这个傻子都知道。 今天读完这篇文章,你应该也知道,通过查看右侧ROM中的数据,可以得到左侧的汇编语句。 你明白这个关系吗? 明白我接下来要说的话。

C语言与汇编语言如何对应?

单片机

51单片机最小系统的电路都有哪些部分?

2024-1-23 14:01:56

单片机

中国制造2025,机器人技术等级考试,你准备好了吗?

2024-1-23 14:58:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索