ich einen Code in IAS Montage implementieren, um dieses Problem zu lösen:Montag Logarithmus Basis 2
Ich habe ein Array von ganzen Zahlen A=[a1,a2,...,an]
und ich habe B=[|log2 a1|,|log2 a2|,...,|log2 an|]
zu berechnen, wo ||
die Bodenfunktion ist, die die abrundet nächste ganze Zahl.
Ich versuche, die folgenden Schritte zu implementieren:
- erstellen zuerst die
|log2 x|
und stellen Sie sicher, dass es für eine positive ganze Zahl funktioniert - Lauf 1) in jeder Reihe des Arrays A das Array zu berechnen B
ich schrieb dies, aber es funktioniert nicht:
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 ist eine unterrichtende Unterrichtssprache, implementiert in a simulator. Diese Seite dokumentiert auch den Befehlssatz.
Sie müssen beschreiben, * wie * es nicht funktioniert, d. H. Was passiert, wenn Sie es ausführen und was Sie mit einem Debugger herausgefunden haben. Die Frage muss beantwortbar sein, ohne dass Sie Ihren Code ausführen müssen. Sehen Sie diese Erklärung des Erstellens eines [mcve] –
oh, gut, ich weiß nicht, wie ich mein Problem lösen kann, weil ich nicht sehr gut verstehe, wie man in Assembler auch in diesem Simulator programmiert, wenn ich meinen Code zusammenstelle, zeigt der Simulator einen Fehler, "ERROR : Etiketten können nur mit Anweisungen in der linken Hälfte eines Wortes bei Zeile: 20 und Spalte: 0 " – Ravield
verwendet werden. Und Zeile 20 ist die' cont: .data 0' Zeile? Sie sollten eine Änderung vornehmen, um sie in Ihrer Frage zu markieren. Ich musste deinen Code-Block in 'cat -n' einfügen, um Zeilennummern zu erhalten. –