1.プログラムメモリーの [PS]番地の値を IR レジスタ に読み出す。 2.IR に読み出した値に従い、命令を「実行」する 3・[PS] を一つ増す 4.1,2,3を繰り返すレジスタの値を一つ増すには、PS をカウンタ(計数器)として動作させることになります。命令を「実行」するには、IR レジスタの内容チェックし、そのビット構成から必要な処理を行います。[PS]を増しながら繰り返すことで、プログラムの命令を逐次実行することができます。
W = 0 + d0が W に記録されます。さらに、A にデータ d1 を設定して、再び、加算を行うと
W + d1 ( d0 + d1)が W に記録されます。どうように A にデータ d2,d3, .. ,dn を設定しながら加算を行うと、
W = d0 + d1 + d2 + .. + dnがWに記録されます。このように、「Wの値と計算したい値を演算する」のが演算回路の仕組みになります。
LDI 10と書くことにします。データ d0 を指定し加算を行う操作を加算命令と呼び、この操作を
ADI d0と書きます。すると、10 + 25 + 32 を計算するプログラムは次のように書くことができます。
LDI 10 ADI 25 ADI 32LDI や ADI を 命令(Instruction)とよび、このように記号で命令を記述したプログラムを記号(アセンブリ)プログラムと呼びます。LDI や ADI 以外に引き算や論理演算を指定できるようにすれば、演算の範囲が広がります。ここでは、乗算を MLI 、減算を SUBI と表記します。
LDM aとかきます。また、Wレジスタの値をb番地に記録する命令を
STM bとかきます。この二つの命令を組み合わせると C言語の b = a が実行できます。W に a 番地の値を加える(減算する)命令と掛け算(割り算)をする命令を
ADM a ,SBM a(減算) MLM a ,DVM a (除算)とかきます。
LDI 5 //W = 5 ADM 6 //W = W + [6] MLM 7 //W = W * [7] STM 8 //[8] = W
LDI 5 ADM 6 STM 9 //[9]<-5+[6] LDM 7 ADI 12 MLM 9 //中間結果に掛け算 STM 8
LDI 4 ADI 6 MLI 3 STM 81.30 2. 22 3. 27 4. 13
[20]= 23 * [12] + 8 [20]= (23 +[8])* (12 + [8]) [26] = [23] * [24]*[24] + [25]*[24]+[25]■コンピュータが命令を逐次実行する仕組みを自分の言葉で説明しなさい。