まず第一に、私はネイティブ スピーカーではないことを指摘しておきたいので、私の間違いを気にしないでください :) ですから、単純なアセンブリ コマンドには大きな問題があります。問題は、このコマンドがユーザーと対話する「強力な」方法。ここに来ます:
LogisimでCPUを構築しています(特別なことは何もありません。そのプログラムに慣れようとしており、「スキル」を向上させようとしています)。それで、私はJavaでアセンブリトランスレータをプログラミングしています(CPUの命令セットに適合するアセンブリ入力、バイナリおよび16進出力)。しかし、私は大きな問題に直面しています...^^
私は実際に --PRINT "text"-- コマンドを追加することを計画していました.assemblytranslatorはすべての文字に対して7ビットのASCII番号を生成し、次のような出力を生成します:
アセンブリ入力: PRINT "hello world"
CPU の出力
プリント h
プリント e
印刷 l
印刷 l
印刷 o
印刷 (スペース)
[...]
これは、私の CPU が一度に 1 文字しか印刷できないためです :( さて、これに関する問題は、BRANCH コマンドを実行しようとしたときに発生します。
たとえば、私の翻訳者プログラムの行は Line: 2 で、この行に 5 文字の長さのテキストを出力します。したがって、次のコマンドは 3 行目にありますが、CPU はちょうど 5 文字を出力したので、Programcounter は現在 8 行目を指しており、Translator の 3 行目は実際には Programcounter の 8 行目にあることを意味します。
どうすればそれを修正できますか?CPUが実際に実行する各「PRINT」コマンドの後にインクリメントする特殊レジスタを追加し、分岐したい行に追加しますか? または、誰かが文字を画面に出力するためのより良い方法を持っていますか?
事前にすべての回答をありがとう、
セール