問題タブ [lc3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - コンソール入力から NaN を検出する方法は?
ctrl+d(x04) が lc-3 に入力されたときにループを終了すると思われるので、getc を使用してコンソール入力からこれを検出しようとしています。
これを行う簡単な方法はありますか?または、入力を負の数に変換して x04 で加算する必要がありますか?
誰かが私を助けることができますか?
wildcard - VHDLSTD_LOGIC_VECTORワイルドカード値
アルテラDE1ボードに実装している単純な16ビットプロセッサ用のVHDLコードで有限ステートマシンを作成しようとしています。有限状態マシンにはCASE
、16ビットSTD_LOGIC_VECTORによってFSMに取り込まれるさまざまな16ビット命令を処理するステートメントがあります。ただし、有限ステートマシンが命令をデコードするデコード状態で少し問題が発生します。命令の1つは、2つのレジスタをオペランドとして、3つ目をデスティネーションレジスタとして受け取るADDです。ただし、オペランドとしてレジスタと5ビットの即値を取り、宛先の2番目のレジスタを受け取るADD命令もあります。私の問題はCASE
ステートメント、私は2つの異なるADD命令を区別できる必要があります。したがって、ステートメントで「-」や「X」などのワイルドカード値を使用するCASE
と、可能なレジスタと即時値の組み合わせをすべてリストするのではなく、2つのケースで2つを区別できると思いました。例えば:
私が持っている2つの指示はこれらだけではありません。この投稿を少し短くするために、これら2つを配置しました。このコードをコンパイルして実行すると、プロセッサは「デコード」状態になると実行を停止します。また、Quartusは、「LC3FSM.vhd(37)でのVHDL選択警告:メタ値を含む無視された選択 "" 0001 ----- 0-----""」などの警告を多数出します。これを達成する方法についての損失。私は実際にはすべての16ビットの組み合わせを定義する必要はなく、おそらくその必要もありません。STD_LOGIC_VECTORでワイルドカードを使用して、定義する必要のある組み合わせの数を最小限に抑える方法があることを願っています。
誰かがこれを達成する方法を知っていますか?
ありがとう
assembly - LC3 アセンブリ ビットごとの右シフト
LC-3 Assemblyを使用して、ビット単位の左シフトとビット単位の右シフトの両方を実装する必要があります。基本的に、すべてのビットはシフトの方向に 1 つのスペースを移動する必要があり、作成された空のスペースはゼロで埋められます。
例:
右シフト:
左方移動:
バイナリ文字列を取得してそれ自体に追加することにより、左シフトを正常に実装しました。
右シフトを実行する方法に困惑しています。どんな考えでも大歓迎です。AND、NOT、ADD 操作、データ移動操作、値を格納するための 7 つのレジスタ、およびメモリの全範囲があります。それをどのように実装できるか、いくつかの基本的なアイデアが必要です。
LC-3 命令セットのリファレンスが必要な場合は、ここにあります。
assembly - LC3での文字列反転
lc3を使用して、ユーザー入力を受け取り、入力を順方向、逆方向に表示して、入力の長さを通知するプログラムを作成する必要があります。私はこれを行う方法に完全に困惑していて、どこでも検索していて、私を助けるものを見つけることができません。ユーザー入力を受け取ることはできますが、それを保存する方法や逆にする方法がわかりません。
lc3 - LC3 アセンブリ言語
2 つの入力数値を受け取り、出力する LC3 アセンブリ言語プログラムを作成しようとしていx * y = z
ます。
数字に対しては機能しますが、それを0-9
超える数字は奇妙な文字や記号になります。
GETC
また、たとえば、1つの入力だけでなく2つの数値を取得できるようにするにはどうすればよいですか。10 * 12= 120
? どんな助けでも大歓迎です!:)
これが私がこれまでに行ったことです
assembly - LC-32桁の数字の印刷方法
カウンターのあるLC-3プログラムがあります。TRAPx21を使用してカウンターを画面に印刷できます。ただし、カウンター番号が2桁の場合、私のプログラムは機能しません。
例:9は完全に印刷されますが、19は印刷されません。
カウンターを含むレジスターを印刷する前に、ループが必要だと推測しています。ループは、2で割って数値を切り刻みます(10進数で10で割った場合と同じですが、2進数で2)。次に、digit1、digit0を出力すると思います。問題がありますが、LC-3で分割するにはどうすればよいですか?右シフト?それはこの問題には難しすぎて、私の知識を超えているようです。
助けてください。
c - メモリアドレス支援からの単語のコピー(アセンブリ)
メモリからいくつかの単語をコピーし、アセンブリを使用して別のメモリアドレスに保存しようとしています。そのためのコードを書き込もうとしていますが、一部の部分についてはよくわかりません。やりたいことを簡単に説明します。
送信元アドレス、宛先アドレス、およびコピーするワード数は、関数の入力引数です。
assembly - lc3/アセンブリ コードを使用して、保存されている 16 進値を同等のバイナリに変換するにはどうすればよいでしょうか。
値は .BLKW オブジェクトに格納され、LDR R0,R1,0 - ADD R1,R1,1 (.BLKW アドレスをインクリメントするため) を使用して LOOP にロードされます。問題は、格納された HEX 値をバイナリ値に変換し、変換結果を 16 ビット バイナリ形式で CONSOLE に出力する方法です。どんなアイデアでも大歓迎です!値をANDすることについて考えましたが、どうすればよいかわかりません。
logic - LC3 での反復を使用した右シフト
私はLC3でプログラムに取り組んでおり、マスキングに問題があります。適切な長さのすべての 1 のマスクを作成し、すべてを適切なフィールドにシフトすることは問題ありませんが、AND 比較を行った後、私の人生では物事を右に戻すことはできません。LC3でどのように右シフトしますか? 反復比較で何かを見ましたが、異なる位置のビットを比較する方法がわかりません。同じ位置でそれらを比較するには、最終的に1つを右にシフトする必要があります。何か不足していますか?
coding-style - lc-3: 数値をレジスタにロードし、バイナリ形式で出力する
1 2 9 などの数値を LC-3 シミュレーターのコンソールに入力し、数値 129 を取得して実際に完全な数値 129 (129) に変換し、そのバイナリ形式をコンソールの画面。
どうすればいいですか?どんな助けでも素晴らしいでしょう。