こんにちは私は数の2乗を計算し、それをr0に格納するlc3アセンブリプログラムを書こうとしています。整数はパラメータとして与えられ、r1にあります。LC3アセンブリ正方形のN
: - デバッグが、それは最初に2を追加し、最初のパスの間にあるが、それはR0に別の2を追加するために失敗した第二のパス私のコードは、任意のヘルプを下回っているが助けたユーザーへ .orig x3FF8
ld r1,n
ld r5,n
square
add r2,r1,#0
add r5,r5,#-1
add r0,r2,#0
brzp square
brn theend
theend
halt
n .fill #2
.end
私の最終的なコードのおかげで高く評価され
.orig x3FF8
ld r1,n
ld r5,n
square
add r2, r2,r1
add r5,r5,#-1
brp square
theend
halt
n .fill #4
.end
1.私はそれがr2の和の合計になると仮定しました、これはそれほど明確になりました。私は加算でconsuedされました。私はレジスタ2を上書きしていたと思います。 – rahulchawla
Question - r0、r2、#0を加算してr0にsumofsumを格納しますが、これは7fffを与えます。r2に25がある場合、r0を25に置き換えてはいけません。 – rahulchawla
@rahulchawla: 'add r5、r5、# - 1'ループカウンタの後ろに' add 'しますか? (もともと@Brandonによって発見された)。その命令をループ外に移動すると、問題が解決されます。デバッガを使用して、コードをシングルステップ実行し、レジスタを変更します(たとえば、2または3のような小さな入力の場合)。 –