2016-05-08 6 views
0

これは私がこれまで持っているものです。LC3ユーザー入力を画面に印刷するにはどうすればよいですか?

.orig x3000 

Lea r0, EnterString    
puts      
LOOP      
getc      

add r1, r0, -10   ;subtract 10 to identified if enter is pressed 
brz OUTSIDE    ;if yes, go out of the loop 

out     
brnzp LOOP    

OUTSIDE     
Lea r1, InputString 
puts 

Lea r0, EnterString 
out 
Halt      

EnterString .stringz "Please enter a string: " 
InputString .stringz "\nThe text you have typed is: " 

.end 

私は点で最大99文字のユーザー入力を持っているし、それを印刷しようとしていますが、入力されていただきました!私がしようとした後、プリント、それだけで後にいくつかの奇妙な箱を印刷しますInputString "\ nあなたが入力したテキストは次のとおりです:"印刷されます。

私は、おそらく誤って私のEnterStringを削除する私と何か関係があると思いますか? r0?

私はそれに近いですか?

私はスクリーンショットを入れたいと思っていましたが、ランクが低すぎるためできません。

答えて

0

あなたの一般的なアプローチは正しくありません。ここであなたが今持っているものです。

Print out welcome string 
Get character 
If character is a newline, exit loop, otherwise get another character 
Print out "your string is" 
Output (incorrectly) welcome string again. 

PUTSが行うすべては、それが「\ 0」文字に達するまで、R0に保存されている実効アドレスを取得し、その中に各文字を印刷し、一度に一つです。すべてGETCは、1文字を取得してr0に格納することです。スタックや文字列を作成せず、複数の文字を格納することはできません。

コンソールから文字列を保存するには、文字列を配置し物理的に配置する場所を定義する必要があります。レジスタに

  1. 負荷このBLKWのアドレスを:あなたは、あなたがする必要があります、(ヌル文字のプラスルーム)保存したい文字の数とBLKWを作成する必要があります がこのアドレスにR0から文字を移動
  2. :あなたはまだ空の位置

再びそれをプリントアウトするためにを指しているように、効果的にロードし、

  • インクリメントアドレス(ヒントSTRを使用します)あなたのメモリ空間のアドレスウェルカム文字列の場合と同様にPUTSに電話してください。

  • +1

    ありがとう –

    関連する問題