今度は掛け算を試す。前回と同じくOUTポートをINポートに直結しておく。
youtu.be
// テキストのプログラム例(3) // 4*3=12 (0b1100)を計算する。 // 0100(4*1=4)、1000(4*2=8)、1100(4*3=12)の順に出力される。 _[0] = LD_A(0); // 総数の初期値 _[1] = LD_B(3); // 掛ける数(足し算を何回繰り返すか) _[2] = ADD_A(4); // 掛けられる数を足して、 _[3] = OUT_A; // それを出力して、 _[4] = LD_AB; // 掛ける数(ループ回数)をこの3行でデクリメントして、 _[5] = SUB_A(1); _[6] = LD_BA; _[7] = IN_A; // 現在の総数(今OUTレジスタにある)を読み込んで、 _[8] = JNZ(2); // 掛ける数(足し算を何回繰り返すか)が0でなければまた加算を繰り返す。 _[9] = HALT; _[10]; _[11]; _[12]; _[13]; _[14]; _[15];
↓これと同じ。
#include <iostream> using namespace std; int main(void){ int A = 0; int B = 3; int OUT; while(true){ A += 4; OUT = A; printf("%d, ", OUT); A = B; A--; B = A; A = OUT; if(B==0) break; } return 0; }