0
こんにちは、私は がメイン プログラムを書くために、CSクラスの問題トラップサブルーチンLC3総会
The puts TRAP routine has been disabled for some reason. Write an LC-3
subroutine called puts that
implements its behaviour. In other words when the subroutine is called
register R0 will contain the
address of a null-delimited string and the subroutine will simply print the
string and return. You will of
course need to utilize the TRAP routine out that prints a character.
を持っていないしています。
だから、これまで私のアプローチは、私は、これは正しいですか、私のロジックは
PUTS:
ADD R2, R0, #0;
AND R0, R0, #0;
ADD R0, R2, #0;
Out(trapx21) ; print first char in r0;
BRp PUTS ; repeat loop
権利である場合、私は私が正しく任意のヘルプを、これをやっているかはわからないかどうかわからないんだけど、このでしたか?
putCharは通常char値を直接取ります。つまり、 'r0'はASCII値を含むべきですが、' puts'はcharへのポインタをとります。つまり、 'r0'はメモリアドレスを含みます。だからあなたは他のレジスタにポインタをコピーし、ポインタから 'r0'に文字をロードしたままputCharを実行し、無限にループしないで、stringのnulターミネータがヒットするまで。 (私はLC3もトラップAPIも知らないので、あなたのドキュメントに対する私の前提を確認してください。これは他のプラットフォーム上で通常どのように動作するのかという一般的なアドバイスです)。現在の状態は "15%完了してややオフ"しかし、良いスタートのように見えます。 – Ped7g
今、私はいくつかの変更を加えましたか? @ Ped7g – rahulchawla
エミュレータ/シミュレータをデバッガで使用している場合は、アセンブリを学び、実験を続け、デバッガでシングルステッピング命令を保存し、何が起こっているかを観察する最も簡単な方法です。私が上に書いたように、私はLC3を知らない。あなたが編集したものは確かに正しくないか、メモリの負荷やポインタの更新などに似ていません。ランダムなテキストのようです(15%から10%、さらには30%のジャンクが追加されました)。推測しないで、あなたがコンピュータから何をしたいか考えて、それを書いてください。そして、デバッグしてください。 – Ped7g