举例
ax2+bx+c
操作数:运算中,一个保存在累加器中,另一个来自主存储器
用到的指令:加法指令、乘法指令、取数指令、存数指令、打印指令、停机指令
过程:
假设a、b、c、x都存放在了主存储器中
①取x至运算器的累加器中
②取内存中的数据乘以x,存放在累加器中,得到x2
③乘以a,存放在累加器中,得到ax2
④利用存数指令,将ax2存放在存储器中
⑤利用取数指令,将b放到运算器中
⑥乘以x,存放到运算器中,得到bx
⑦加ax2,放在运算器中,得到ax2+bx
⑧加c在运算器中
将式子变形:(ax+b)x+c
①取x至运算器的累加器中
②乘以a在运算器中
③加b在运算器中
④乘以x在运算器中
⑤加c在运算器中
用指令表示
指令格式:
指令=操作码+地址码
取数指令如下:
ACC代表累加器
[ ]代表寄存器中的内容,内存单元的内容
“000001”(前6位)代表操作码,要做什么操作(加减乘除等)
“0000001000”(后10位)代表地址码,数据在哪个内存单元中
上图指令同样也是二进制形式(未表示出来),同样是 “操作码+地址码” 的形式
那么上面的例子就可以用指令来表示:
第一列:
指令、数据在主存单元的地址。
这正是冯·诺依曼计算机的特点,指令和数据以同等地位存放在存储单元中。
第二列:
0~7行,代表指令,8-11代表数据,12行存放结果。无论是指令、数据还是结果,都是用二进制表示。
过程:
第0行,000001取数指令,地址0000001000(为十进制数8)。也就是在地址8(对应第8行)找到数据x放到ACC中。
第1行,000100乘法指令,要乘的数据在0000001001(十进制数9)。也就是去地址9(对应第9行)找到a做乘法操作,存于ACC中。
以此类推…
不要忘记,指令和数据都要存放在存储器中,那么自然而然就会想到:存储器的结构应该是什么样的?又该怎么访问?每次访问获得多少数据?等等。