0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

指令如何执行

CHANBAEK 来源:数壳智学 作者: 赤灵 2023-10-30 15:58 次阅读

5.1.指令的本质

虽然把“总线”比喻成“高速公路”,但是两者之间还是有很大的不同,在现实的高速公路上,汽车向着同一个方向前进,每个汽车有不同的目的地,在不同的路口下高速。但是在电路中,电子的传输速度是光速,信号会同时出现在所有的路口,也就是说不可能要求“总线”中的信号去哪个路口,不去哪个路口。

所以我们控制信号的手段是当数据信号在总线中的时候,可以通过控制哪些元件从“总线”中读取信号或者控制哪些元件往总线中写入数据的方式来达到控制整个电路运行的目的。

那么具体到电路中,应该如何实现控制信号进出总线呢?从第四章我们知道,存储器(寄存器、内存)有两个读、写两个控制开关。让我们好像找到了的“命门”,只要控制好这些读、写开关,当某个寄存器设置为读,数据从寄存器传导到总线,当某个寄存器设置为写,实现把数据从总线读入寄存器,如此就能控制好整个电路,让它做我们想做的事情。

为了更加清楚的说明整个控制过程,我们再看看从内存中读取数据相加的控制过程,具体计算步骤实现如下(表 5-1):

表 5-1 相加电路的实现步骤

步骤序号步骤描述设置
1读被加数内存(M)的R=1;暂存寄存器(TR1)的W=1;其余开关=0
2读加数和相加一起内存(M)的R=1;暂存寄存器(TR1)的R=1;暂存寄存器(TR2)的W=1;其余开关=0
3保存结果内存(M)的W=1;暂存寄存器(TR2)的R=1;其余开关=0

表中的每一行就是一个指令,指令是计算机程序发给计算机处理器的命令。每一个指令,我们通过完成几个寄存器的读写设置,完成一个具有一定功能的动作组合。

5.2.指令寄存器

为了保存当前需要运行的指令,设置指令寄存器组,由指令操作码和地址寄存器两个8位寄存器组成。指令操作码寄存器存放的指令的编号,通过指令译码器选择执行的动作;地址寄存器指的是该指令执行过程中需要的内存地址。

图 5-1 指令格式

表 5-2 电路支持的指令列表

操作码说明
0000 0000读取被加数
0000 0001读取加数,并相加
0000 0010将相加的结果存储内存
0000 0100在常量寄存器中存入一个常量
0000 0101把常量寄存器的数存到内存中

5.3.指令译码器

为了使得控制更加简单,可以把每一个步骤(指令)设置一个开关,一键完成一个步骤。

进一步,可以在错误!未找到引用源。基础上添加译码器,实现指令控制的电路。指令译码器的实现还是通过逻辑真值表来辅助设计。

每个指令的操作码对应多个寄存器的设置操作。比如从内存中读取是指,并且把值放入加法的加数暂存器TR1中的指令,指令操作码是 0000,需要将内存的R端口和加数暂存起TR1的W端口设置为1;执行加法的指令,指令操作码是0001,需要同时设置M寄存器的R=1,暂存器TR1的R=1,暂存器TR2的W=1。根据(表 5-1),重新建立操作码和寄存器设置的真值表如下表:

表 5-3 指令操作码和设置动作的真值表

指令操作码A3A2A1A0指令描述内存M加数暂存器TR1和暂存器TR2
WRWRW
0 0 0 0读被加数11
0 0 0 1读加数,相加1
0 0 1 0存结果1

逻辑表达式:

图片

逻辑电路:

图片

图 5-2指令译码器电路图

5.4.内存相加电路实现

图片

图 5-3 基于内存的加法功能电路

图片

图 5-4 简单内存示意图

完成本章的内存相加功能,假设如图 5-4 a、b、c的内存地址,读取a、b的值,把相加的结果保存到c,完整指令步骤如下:

5.5.小节

本章提出一个如何将内存中的两个数字相加的功能的问题,绘制以内存和加法器为主体的功能电路,同时,为了电路图的布局更加的合理,引入“数据总线”、“地址总线”、“控制总线”的概念。

详细的阐述指令的本质控制电路完成特定功能,解构指令译码器的内部解构,并提出增加指令寄存器,最后给出了较为完整的内存数据相加的逻辑电路。

但是本章对于指令寄存器的指令的加载和按顺序执行指令的过程没有阐述,下一章将重点解决这个问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5328

    浏览量

    120113
  • 内存
    +关注

    关注

    8

    文章

    3008

    浏览量

    73918
  • 指令
    +关注

    关注

    1

    文章

    607

    浏览量

    35665
  • 译码器
    +关注

    关注

    4

    文章

    310

    浏览量

    50291
收藏 人收藏

    评论

    相关推荐

    转:单片机指令执行过程

    单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取
    发表于 08-17 12:47

    请问BX,BLX指令执行的时候会发生CPU寄存器入栈吗?

    BX,BLX指令执行的时候会发生CPU寄存器入栈吗
    发表于 09-24 23:00

    一条指令执行需要多少个时钟周期

    在keil中编程时,写了一行代码,然后就想知道,执行这句C代码需要多长时间。时钟周期在这就不解释了,频率的倒数。指令周期,个人理解就是cpu执行一条汇编指令所需要的时间。我们知道cm3
    发表于 08-04 06:42

    到底一条指令执行需要多少个时钟周期呢

    到底一条指令执行需要多少个时钟周期呢?怎样去计算一个指令所需的时钟周期呢?
    发表于 10-28 09:25

    MOVX指令执行过程

    MOVX指令执行过程MOVX指令是51单片机访问片外外设的唯一指令,与外部RAM或I/O空间进行数据的读写或者ADC和DAC等都需要使用这条指令
    发表于 12-07 09:38

    c语言指令执行过程是怎样的

    [STM32]STM32F407系列教程之三,c语言知识点巩固 指令执行过程
    发表于 12-09 06:31

    ARM与X862.ARM中指令执行

    文章目录零.预备知识1.ARM与X862.ARM中指令执行3.ARM的九种寻址方式立即数寻址寄存器寻址寄存器间接寻址寄存器偏移寻址寄存器基址变址寻址批量寄存器寻址相对寻址堆栈寻址块拷贝寻址一.移位
    发表于 12-14 06:32

    请问哪里能查到ARM A53各个指令执行所需要的cycle数

    请问哪里能查到ARM A53各个指令执行所需要的cycle数 ?谢谢
    发表于 10-09 15:38

    请问C8051F MCU的指令执行速度为多少?

    C8051F MCU的指令执行速度为多少?
    发表于 09-28 07:41

    求助,平常MCU的指令执行速度为多少?

    平常MCU的指令执行速度为多少?
    发表于 11-01 08:23

    浅谈51单片机指令执行的过程

    单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取
    发表于 04-16 11:20 6271次阅读
    浅谈51单片机<b class='flag-5'>指令</b><b class='flag-5'>执行</b>的过程

    浅析单片机指令执行过程

    单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。
    的头像 发表于 08-07 14:47 5545次阅读

    RAMP的指令执行模式与脉冲输出指令

    斜坡信号指令RAMP的编程手册截图如下图23-1所示,有4个操作数,仅适用于16位,无脉冲执行型。
    的头像 发表于 01-17 09:54 1w次阅读
    RAMP的<b class='flag-5'>指令</b><b class='flag-5'>执行</b>模式与脉冲输出<b class='flag-5'>指令</b>

    单片机MOVX指令执行时序深入分析

    MOVX指令执行过程MOVX指令是51单片机访问片外外设的唯一指令,与外部RAM或I/O空间进行数据的读写或者ADC和DAC等都需要使用这条指令
    发表于 11-24 15:36 11次下载
    单片机MOVX<b class='flag-5'>指令</b><b class='flag-5'>执行</b>时序深入分析

    [STM32]STM32F407系列教程之三,c语言知识点巩固 指令执行过程

    [STM32]STM32F407系列教程之三,c语言知识点巩固 指令执行过程
    发表于 11-26 13:21 13次下载
    [STM32]STM32F407系列教程之三,c语言知识点巩固 <b class='flag-5'>指令</b><b class='flag-5'>执行</b>过程