我们下边就来看用这样
另外一张图来描述一下某一条指令它的在计算机内部
它是有怎么样的一个过程
刚才我们是从宏观的角度我们说一个程序有多条指令来组成
每一条指令都是取出来然后分析执行分析执行这样过程
那么某一条指令它该怎么做那,比如现在这样一条指令
它经过翻译之后变成了二进制的代码
当然我们在这里假设用十六进制数来表示的话
B1H放在内存这个地方
假设这就是我们现在的程序里头的第一条指令
那么计算机该怎么做那,这些程序被放进内存之后
首先存放这个B1H的这个单元的地址会自动的
由系统设定到pc就是指令指针里边
假设这个地址就是1000FH
然后那开始以后这个指令指针或者说程序计数器pc
就会把这个地址下移暂存到那里要送给地址寄存器
送给地址寄存器寄存器是一个存放数据的含义
所以送到里边的目的是什么那,实际上要它把它自己腾出来
腾出来干什么它自己立刻做一个加一的工作
比如这里1000F再加一等于多少是1001FH对吧
加一加一的目的是什么加一的目的是
准备这一条指令叫B1H的这条指令被取走以后
下边就接着到了1001H,就是下一个单元里去取下一条指令
主要就是为了这个目的
好了这个程序计数器pc把这个地址送到了地址寄存器以后那
地址寄存器就负责把指令把这个地址指向内存的这个单元
就是存放这条指令的这个单元
指向它以后就相当于有人告诉了你
在1号教室上课好已经告诉了你
现在就往那边走,能不能进到这个门里头那
能不能走进教室那,那不一定,因为教室门还必须得开着
所以下边我们地址指向的这个单元
单元里头的这个B1H能不能被拿出来那还需要有人说话
谁来说话那,计算机要发出也就是cpu里头还有控制器的吗
控制器要发出各种控制信号其中
最主要的也是大家马上就能想的来的一种
就是要去发出一个读命令,读存储器的命令
我们在前面的课程中
我们已经介绍过对存储器的操作就只有两种
读就是从那里头拿出来,写就是把东西放进去,就这两种
那么现在我们这个地址指向这个单元的目的
是要把这个B1H这个东西拿出来
所以我们现在要发出一个读存储器的命令
好这个命令一旦发出去当然还有其他
各种辅助相关的控制命令我们这里就不说了
假设把这些命令都发出来了
好下面这一步就是这个单元的内容B1H就被拿出来
拿出来以后送给谁那
因为我们如果这个前提是我们B1H是指令的话
我们就拿回去送给指令译码了,就是让它去分析了
看看这条指令是做加法的还是做减法的
这就是一条指令的执行过程
那么这条一旦送走我们现在回来看
这个时候pc这个程序计数器里的值就已经被加过1了
被加了1了以后后那
那么意思是说接着它要把它的内容再往
地址寄存器送的时候就不会再送的是1000F了
而是送的1001H了,因为它已经加一了,对吧
所以1001H指向的是哪个那
是现在内存单元底下的那个单元
所以下次要取的就是第二条指令
所以这个就是一次一次的我们指令就按照
这样的顺序一步一步的被取出来
所以我们下边把程序计数器我们做一个再做一个说明
程序计数器pc就是用来产生和
存放下一条要读取的那条指令的地址
在程序开始的时候,pc里边放的是第一条指令的地址
那么每执行一次或者每取走一条指令
pc的内容会自动的进行修改,我们现在假设它是加一的
这个1大家不一定是数学上的1,它有可能加是2有可能加3
这个是跟指令占的长度有关,这个是我们后面课程的内容了
我们现在就假设它是加1的,好了加了1以后那
等于相当于它又指向于第二个单元
那么好cpu下一次再去取指令的时候
就取的是第二个单元的内容了
所以每取走一条指令计算pc里的内容会自动的加1操作
如此这般的下去程序就会从第一条指令一步一步一步执行下去
这样子按部就班的这样顺序执行下去
最后的一个效果我们这个程序是个什么样的结构那
就是顺序结构
大家可以在这里我可以在这里给大家
留一个简单的思考问题
这个思考题可能你今天不一定能够马上解决
但是大家请大家在学习后续课程
或者说我们这门课后续内容的时候
请大家一定要带着这个问题去学习
就是说我们现在按照这样一条指令一条指令的执行下去
构成的一个结构程序是一个顺序执行的顺序的结构
这种结构是我们整个程序里面非常经典的三种结构之一
那么其实有时候我们并不是所有的程序
都是一定这样顺序执行下去
我们在这里做一个简单的例子
比如我们要求做一个1+1+2+3+4这样子的工作
每一次实际上都是在做加法
就是说每一次它的操作性质实际上都是一样的
只不过它每一次加的数字不一样而已
那么这样子的话
我们就没有必要在程序编写的程序里头每一次都是1+1写一条
然后1+2再写一条,1+3再写一条这样一直写下去
那么这个程序就显得非常的啰嗦
我们实际上可以让它不断的重复某一重复这条加法指令
一直让它重复下去,直到你相加的数加完为止
这样重复的执行相同功能的程序
我们叫做循环结构,那么为什么能够实现这样的循环结构
我们把这个问题留在这里
啊请大家后续课程学习的时候一定带着这个问题去学习它
而且我相信大家最后是能够找到这样的答案的
所以我们在这里说程序计数器pc是程序的指挥棒
所以我们把它叫指令指针
它指向哪里cpu取指令就取到哪里
所以cpu完全没有从这个角度来讲
它完全没有智能就是你说了哪里,我就指到哪里
所以指挥棒指到哪里那它就到哪里它是非常听话的
这个这个指令指针这个指针的含义我相信通过这样的描述
大家已经有一点点概念了
我们怎么样因为这个概念我们后续马上要学会
后面学习这个c语言的时候
就会提到那么指针的含义
在这里大家是不是想到了指针什么含义那
pc里边是什么东西实际上是地址对吧
我们刚才看了pc里的内容实际上
就是存放这条指令在内存单元中的地址
那么我们又说这个pc是指针所以指针什么意思
指针就是某内存某个单元的地址,非常非常简单
这个概念大家马上后面就会用到一定现在
就要想起来就要想明白它