問題タブ [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.

0 投票する
3 に答える
1052 参照

lc3 - 私は初心者のプログラマーで、LC3 アセンブリーで戦艦プログラムを設計したいと考えています。

ゲームの表示グリッドを表示する際にアルゴリズムを開始する方法や場所がよくわかりません。

0 投票する
1 に答える
24138 参照

assembly - LC-3 .BLKW 仕組み

解決しました!

ユーザーが必要なすべての文字を入力するのを待ってから、Enter キーを押した後にのみモニターに出力することになっている LC-3 のアセンブリでプログラムを作成しています。

ユーザーが入力ボタンのみを押すと、問題を解決することができました。例:

Enter キーを押します ---> プログラムは正常に動作します。(改行して停止)

「ABCDEF」を押します ---> プログラムは、改行して ABCDEF を表示する代わりに「F」を表示します。解決済み

.BLKW は、メモリのブロックを保存することになっています。SO この問題を解決するには、.blkw をレジスタにロードし、新しい文字値をそのレジスタに格納し、格納場所を更新して次の場所に移動する必要がありました。

0 投票する
1 に答える
7837 参照

assembly - アセンブリ内の特定のアドレスの値を変更する

LC-3でアセンブリを書いています。特定のアドレスを指すレジスタ R1 があります。そのアドレスの値を 0 に変更するにはどうすればよいですか? 残念ながら、これは本当にすぐに期限が切れるので、迅速な助けをいただければ幸いです! ありがとう!

PS: LC-3 がわからない場合は、15 の命令があります: ADD、AND、BR、JMP、JSR、JSRR、LD、LDI、LDR、LEA、NOT、RET、RTI、ST、STI、STR、トラップ

0 投票する
1 に答える
6351 参照

assembly - サブルーチン内からTRAPルーチンを使用しますか?-LC3アセンブリ

これで、文字を要求し、それを読み取り、エコーし、それを4回繰り返してから、それらの文字を連続した文字列に出力するアセンブリプログラムを終了しました。次に、サブルーチン(クラスではまだ学習していません)を試してみたかったので、次のサブルーチンを作成して、コンソールに改行文字を出力しました。

次のように「呼び出され」ます。

これを実行した後、私は何か奇妙なことに気づきました。プログラムは、への最初の呼び出しの後に停止したように見えましたPRINT_NEWLINE。次に、TRAPが次の命令のアドレスを保存することに気付きました。この場合はRETR7サブルーチンのリンクに使用されるレジスタです。これにより、によって保存されたアドレスが上書きさR7JSRます。したがって、停止しているように見える理由は、TRAPルーチンが終了した後、それが私のRET命令をロードするためです。これは、実際にはTRAP、PCカウンターをそれ自体に変更するためです。無限ループのようなものです。

それはすべて素晴らしいことであり、何が起こっているのかは理解していますが、システム命令TRAPを使用しながら、サブルーチン内でシステムルーチンを使用できる方法はありますか?JSR

もちろん、呼び出し後の命令のアドレスを別のレジスタに手動で格納し、サブルーチンJSR PRINT_NEWLINEの最後にそのレジスタのアドレスに格納することもできます。PRINT_NEWLINEJMP

しかし、それは私には間違っているように思えます。私はプログラマーなので、怠け者であり、他の人の労力の成果を楽しんで、との組み合わせを使用したいと思っていJSRますRET

TRAPでは、サブルーチン内のルーチンを呼び出してもRET、そのサブルーチンから「戻る」ために使用することは可能ですか?これをどのように達成しますか?

ありがとう!

0 投票する
1 に答える
768 参照

assembly - lc3-実行する複数のソースファイルをロードする

で作業しているので、特定のドライバーを実行するLC3ためのを構築する割り当てが与えられました。この時点でライブラリを作成しましたが、とlibrary functionsをよく読んでも、ライブラリとドライバを同時にシミュレータメモリにロードして一緒に実行する方法がわかりません。McGraw bookdreadfully-lacking-in-this-subject Google

誰かがこれを達成する方法についてのノウハウを持っていますか?

0 投票する
4 に答える
4008 参照

assembly - 2 進右シフト、加算のみを指定

私はメモリの場所を読み取っていて、それらの 16 進値を ASCII で出力する必要があるプロジェクトに取り組んでいます。

この言語では 16 ビットの語長が得られるため、一度にニブルを取得して 16 進数に変換するために分割する必要があります。残念ながら、この言語は数学/論理関数に対して and、or、not、および add のみを提供します。

左にシフトし、負のフラグをテストしてシフト後に最後に 1 を追加することで、目的の効果を作成できると考えましたが、これを行うためのより良い方法が必要であると考えています。

任意の洞察をいただければ幸いです。

0 投票する
2 に答える
18880 参照

assembly - アセンブリ LC-3 に文字列を保存する

LC-3 アーキテクチャを使用して簡単なプログラムを作成しようとしています。私がやろうとしているのは、コンソールから文字列を読み取り、何らかの方法でメモリに保存してから、再度出力することだけです。

これは私がこれまでに持っているものです

出力には、文字列の最後の文字のみが表示されます。「steve」と入力すると、「e」が出力されます

明らかに私の問題は、読み込んだ各文字を独自のメモリ位置に保存する必要があることです。.blkw を使用するとこれが行われると思っていましたが、明らかにその位置にあるビットを上書きします。

私の質問は、文字を連続したメモリ位置に保存してからコンソールに出力する方法です。

0 投票する
1 に答える
1291 参照

rotation - 右回転操作、LC3 シミュレーター

私は LC3 シミュレーター用のルーチンを作成しています。Shift Right ルーチンは正常に作成されましたが、Rotate Right ルーチンに行き詰まっています。ビットを右に移動する必要があり、右に移動するたびに最下位ビットが最上位ビットにコピーされます。AND、NOT、ADD 操作、データ移動操作、値を格納するための 7 つのレジスタ、およびメモリの全範囲があります。それをどのように実装できるか、いくつかの基本的なアイデアが必要です。

0 投票する
1 に答える
6003 参照

if-statement - LC-3 If/Else ステートメント

ifこの LC-3 プログラムに問題があります。/elseステートメントから表示する文字列を取得できません。ステートメントが間違っているのか、文字列を間違って表示しているのかわかりません。目標はIF、ユーザーが入力0したときに を表示し、else入力したときに (プログラムを停止) を表示すること1です。