上図は最低限の機能を備えたコンピュータと思ってください。これでソフトウェアとは何かを考えてみます。
左側にあるInの状態をRegisterに写してみます。Inは8本のラインでそれぞれがHighかLowになります。
出力をRegisterにするためにはDemultiplexerCの出力がQ0になるようS0-2を000にします。
演算は必要ないのでDeMultiplexerA,BとMultiplexerCの出力をQ7にするためS0-2を111にします。
入力をInにするためにはMultiplexerAのI7がQに出てくるようにS 0-2を111にします。
これで出力先、演算方法、入力元を選択できました。
出力:000
演算:111
入力:111
となります。
出力、演算、入力に対する指示を切り替えているのはDemultiplexerEです。S0-1が
00:演算に対する命令
01:入力に対する命令
10:出力に対する命令
となります。
従って命令の切り替えると命令を合わせると、
出力:10,000
演算:00,111
入力:01,111
となります。
この要領でInとRegisterのAndをOutAに出力してみます。
出力:10,110
演算:00,001
入力:01,111,000
入力はAとBがあるので命令が長くなります。
このように 0と1の列をROMに書き込んでおいて順番に実行していけば様々な演算ができます。どのような列がどのように動作するかは上図の有り様によって決定されます。CPUが変わればそれにあった 0と1の列ではないと動作しないことがよくわかりました。