2017-11-16 5 views
1

私はアキュムレータアーキテクチャ用のこのマシンコードを持っています。 アーキテクチャは8ビットです。命令エンコーディングが のように見える実際のマシンコードは、例えば、命令1のためである:001 1 0001、001は、LOADを意味し、1はそれが値であり、001はその小数1そのLOAD#1このアキュムレータ・アーキテクチャ用の自己修正プログラムはいつ終了するのですか?

0---LOAD #1 
1---STORE 15 
2---LOAD #0 
3---EQUAL #4 
4---JUMP #6 
5---HALT 
6---LOAD 3 
7---SUB #1 
8---STORE 3 
9---LOAD 15 
10--ADD 15 
11--STORE 15 
12--JUMP #2 
13-- 000 0 0000 
14-- 000 0 0000 
15-- 000 0 0000 
で教えてくれる

私は、プログラムが停止したときにメモリセル15にあるものを見つけなければなりません。

しかし、命令2にジャンプすると、これはアキュムレータの値が0になり、決して4と等しくならないことを意味し、プログラムは無限ループとして実行されます。

メモリセル3が空であれば、STORE 3は何をしますか?メモリセルが空の場合、その値は0ですか?

私は、これは、n個のアキュムレータアーキテクチャのためのものであることを仮定している、と私はそのアーキテクチャについての仮定の数を作るために抱えているこれら二つの質問

+2

あなたの質問のタイトルは、いくつかの*深刻な改善を使用する可能性があります。実際に誰かがこれが関心のある質問であるかどうかを判断する助けとなるタイトルには、ほとんどゼロの情報があります。 –

+0

私はそれを変更しましたが、正しいタイトルを見つけることはできません。正確なものは – Dan

+0

です。 –

答えて

1

に答えることなく、よりを続行することはできません。あなたは本当にこれを解決可能な質問にするためにあなたのCPUがどのように働くかをもっと記述する必要があります。

はい、アキュムレータは常に0になります。 また、命令#3が決して変更されない場合、0は決して4に等しくなくなり、プログラムは常にループします。

しかし、メモリセル3に格納すると、セル3の命令をアキュムレータの命令に置き換えることになります。 興味深い質問は、equal #4の命令表現から1を引くとどうなるかということです。 夜特定のアーキテクチャに依存しますが、私の強力な推測では、あなたが歩くと、あなたのループが終了し、セル15内にどのようなときに把握するための十分なされるべきであることをあなたがequal #3を取得し、セルに3

をそのを格納していることです

+0

これは、私が使っているアーキテクチャです。http://courses.cs.vt.edu/csonline/MachineArchitecture/Lessons/CPU/Lesson.html – Dan

+0

うん、私の推測は正しい。 –

+0

命令2にジャンプすると、命令2はアキュムレータを0に設定し、命令3は「アキュムレータ内の番号が4と同じか」を比較します。常に同じ答えを持つこのジョブを実行します:いいえ、ループは無限に進みますが、実際には終了しません(私はそうだと思います)。命令12が "JUMP#3"だった場合、これは完全な意味になります – Dan

関連する問題