掛け算

今度は掛け算を試す。前回と同じく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;
}

f:id:ti-nspire:20201121104318p:plain