私はこの問題を解決するIASアセンブリ内のコード実装だ:アセンブリの対数の底2
Iは整数A=[a1,a2,...,an]
のアレイを有し、IはB=[|log2 a1|,|log2 a2|,...,|log2 an|]
を計算しなければならない、||
ダウンに丸める床関数であります最も近い整数。
私は、次の手順を実装しようとしています:
- は最初
|log2 x|
を作成し、それが正の整数 - 走行1のために働くことを確認してください)、配列Aの各番号に配列を計算しますB
は、私がこれを書いたが、それは動作しません:
loop: S(x)->Ac+ n ;load n in AC
Cc->S(x) log ;if AC >= 0 jump to log
halt ; else end the program
.empty
log: S(x)->R resm ;copy number 2 to AR
S(x)*R->A two ;multiply 2*2
At->S(x) resm ;save in resm
S(x)->Ah+ one ;+1 counter
At->S(x) cont ;save the counter
S(x)->Ac+ n ;load n in AC
S(x)->Ah- one;decrease n in 1
At->S(x) n ;save n
Cu->S(x) loop; jump to beggining to make all again
n: .data 4 ;number to calculate log
two: .data 2 ;base of the logarithm
one: .data 1 ;for increase the counter
resm: .data 2 ;for save the result of the multiplication
cont: .data 0 ;save the result of the logarithm
IASは、a simulatorで実装されている教授指導言語です。このページには、命令セットも記録されています。
*どのように動作しないか、つまり実行時に何が起こるか、デバッガでどのように検出されたかを記述する必要があります。あなたのコードを実行しなくても問題は解決できるはずです。 –
を作成するこの説明を参照してくださいまあ、私は私の問題を解決する方法を知っていないので、このシミュレータでもアセンブラでプログラミングする方法を理解していないので、 :ラベルは、単語の左半分にある行:20、列:0の命令でのみ使用できます。 – Ravield
行20は 'cont:.data 0'行ですか?あなたはあなたの質問にそれを記すために編集を加えるべきです。行番号を取得するために 'cat -n'にコードブロックを貼り付ける必要がありました。 –