アセンブラ編 入替えプログラムの作成
入替えプログラムの作成
"コンピュータのしくみを理解するための10章"の3章に、足し算の例が書かれているので、これを参考にすすめたいと思います。
まずは、"program"と"margorp"の対応表を作ります。
p | r | o | g | r | a | m |
↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
m | a | r | g | o | r | p |
次に、"program"を2進数で表します。図5.29の文字コードと照らし合わせると、
p | 0111 | 0000 |
r | 0111 | 0010 |
o | 0110 | 1111 |
g | 0110 | 0111 |
r | 0111 | 0010 |
a | 0110 | 0001 |
m | 0110 | 1101 |
になります。
次に、真理値表を作るのですが、'r'の入替え先が'a'と'o'の2つあって真理値表ができません。
しかたないので、2つめの'r'は大文字にすることにしました。Rの文字コードは、
R | 0101 | 0010 |
です。
真理値表は、
入力 | 出力 | ||
p | 01110000 | 01101101 | m |
r | 01110010 | 01100001 | a |
o | 01101111 | 01110010 | R |
g | 01100111 | 01100111 | g |
R | 01110010 | 01101111 | o |
a | 01100001 | 01110010 | r |
m | 01101101 | 01110000 | p |
になります。
真理値表をよく見ると、入力も出力も始めは"011"で変化していません。なので、省略することにします。
さらに、入力の各ビットにA0~A4、出力の各ビットにZ0~Z4と名前を付けます。
新しい真理値表は、
A0 | A1 | A2 | A3 | A4 | Z0 | Z1 | Z2 | Z3 | Z4 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
です。
この真理値表から論理式を作ります。ですが、また問題です。和+と積・の記号はありましたが、否定の上線の記号がありません。
しかたがないので、否定にしました。これで論理式は、
Z0 = A0・A1・A2・A3・A4+A0・A1・A2・A3・A4+A0・A1・A2・A3・A4
Z1 = A0・A1・A2・A3・A4+A0・A1・A2・A3・A4
Z2 = A0・A1・A2・A3・A4+A0・A1A2・A3・A4+A0・A1・A2・A3・A4
Z3 = A0・A1・A2・A3・A4+A0・A1・A2・A3・A4+A0・A1・A2・A3・A4+A0・A1・A2・A3・A4
Z4 = A0・A1・A2・A3・A4+A0・A1・A2・A3・A4+A0・A1・A2・A3・A4+A0・A1・A2・A3・A4
となります。
この論理式を論理回路にします。入力も出力も5つなので線が多くて大変です。
お披露目
さっそく、細山田さんに見せましたが、
「えっ?これってプログラムじゃないですよね」とのお答え。
曽根も「この絵でコンピュータ動かせるんか?」と生意気です。
動作を説明してみましたが、どうもしっくりこない様子でした。
いわれてみれば、プログラミングなのに「回路ができました!」ではおかしいかもしれません。