频道栏目
读书频道 > 系统 > 其他综合 > 深入理解8051单片机系统
0.6.2 CPU的内部工作
2015-12-02 15:26:30     我来说两句
收藏   我要投稿

本文所属图书 > 深入理解8051单片机系统

本书详细介绍了8051单片机的各种功能。主要内容包括8051微控制器、8051汇编语言编程、跳转指令、循环指令、调用指令、I O端口编程、8051寻址方式、算术逻辑指令与程序、8051 C语音编程、8051硬件接线、8051定时  立即去当当网订购

图0-32给出了CPU执行指令的步骤。


 

图0-32 指令执行步骤为了演示前面讲的概念,下面一步一步地讲解CPU加入三个数的过程。假设一个虚构的CPU有寄存器A、B、C、D,有一根8位数据总线和一根16位的地址总线,因此,CPU能访问的内存地址为0000~FFFFH(总共是10000H个位置)。

CPU要完成的动作是将十六进制数21放进寄存器A中,然后再将42H与12H加入寄存器A中。假设将值送入寄存器A中的CPU代码是10110000(B0H),而加入一个值到寄存器A中的代码是00000100(04H)。下面是完成这一操作的步骤和代码。




将值12H添加到寄存器A中04H12H如果完成上面动作的程序放在存储器中的起始位置1400H处,下面就是每个存储器位置的内容:存储器地址存储器地址中的内容




1.CPU的程序计数器中的值范围为0000~FFFFH。但程序计数器必须将值设成1400H,这表示第一条要执行指令代码的地址。当程序计数器加载第一条指令地址后,CPU就可以开始执行程序了。

2.CPU将1400H放到地址总线上并送出。当CPU激活READ信号时,这表示CPU想要得到在地址为1400H中的数据,于是存储器电路就找到相应的位置。这就使得存储器中地址为1400H的内容B0被放到数据总线上并带入CPU。

3.在指令解码器字典的帮助下,CPU解码指令B0。当找到该指令的定义后,CPU就必须将下个存储器位置中的字节放到CPU的寄存器A中。因此,CPU命令控制电路可准确地完成这一系列动作。当CPU得到存储器位置为1401中的21H时,就必须确保除了寄存器A外,所有寄存器都已经关闭。这样一来,传输到CPU中的值21H就能直接送入寄存器A中。在完成一条指令之后,程序计数器就指向下一条要执行的指令地址,在本题中就是1402H。然后,地址1402被送到地址总线上而得到下一条指令。

4.CPU从存储器位置为1402H处得到代码04H。解码之后,CPU就必须将下一个地址(1403)中的字节加入寄存器A中。在CPU将值(这里是42H)放入寄存器A中之后,它会将寄存器A中的内容放入ALU中进行加法操作,然后将ALU输出的加法结果再放入寄存器A中,同时程序计数器变成1404,也就是下一条指令的地址。

5.地址1404H放到地址总线上,然后将代码送入CPU,接着再解码执行。这个代码也是将值加入寄存器A中。程序计数器更新到1406H。

6.地址1406处的内容被送入执行。HALT指令告诉CPU停止程序计数器并请求下一条指令。如果没有HALT,CPU将持续更新程序计数器并获得指令。

现在假设地址1403H处包含的是04,而不是42H,那CPU是怎样区分加载的数据04和代码04的呢?记住,CPU使用的代码04意味着“将下一个值送入寄存器A中”,所以CPU就不会解码下一个值,而是简单地将接下来的存储器位置送入寄存器A中,而不用理会其中的值。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:0.6.1 CPU内部结构
下一篇:0.6.3 哈佛和冯·诺依曼结构
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站