Hilfe bei Assembler

Kirby.exe

Top Contributor
Könnte mir jemand einen Tipp geben wie man in Assembler eine Zahl negiert ohne befehle wie sub oder neg. Ich hatte mir überlegt die Zahl mit -1 zu multiplizieren, dass problem ist aus der Documentation die wir zu dem Assembler von der Uni bekommen haben, werde ich nicht schlau :( vielleicht sehe ich einfach den Wald vor lauter Bäumen nicht :)

Ich schicke hier einfach mal die Command Liste als Screenshot:

12700
 

httpdigest

Top Contributor
Ohne Immediates zu laden geht Negieren eines Zweierkomplement-Integers mit dem gegebenen Befehlssatz z.B. so:
Code:
; R1 enthält die zu negierende Nummer
xnor R0 R0 R0 ; produziere -1 in R0 (unabhängig vom aktuellen Inhalt von R0)
; Berechne: (R1 ^ -1) + 1
xor  R1 R0 R0 ; R0 = R1 ^ -1
addi R0 R1 1  ; R1 = R0 + 1
; Ergebnis in R1
 
Zuletzt bearbeitet:

Kirby.exe

Top Contributor
Ich habe eine Frage, da ich gerade etwas überfordert bin xD Wie produziere ich eine -1? also im Zweierkomplement wäre -1 ja : 11111111
 

Kirby.exe

Top Contributor
Könntet ihr mir vielleicht nochmal erklären warum man dann 1 auf register 0 addiert? ich dachte in R0 ist die -1? Ich habe das gefühl, dass ich den Wald vor lauter Bäumen nicht sehe xD
 

Kirby.exe

Top Contributor
Würde ich nicht nein :) Meine "wunderschöne" Testumgebung für den Code fragt mich nämlich jedes mal beim Ausführen ob ich den Vorgang abbrechen möchte, da es angeblich eine endless loop wäre
 

httpdigest

Top Contributor
Möglicherweise hat diese ominöse Architektur ja Restriktionen, was die Verwendung von gleichen Registern in Instruktionen angeht. Eventuell kann man dort nicht aus demselben Register lesen wie schreiben.
Du kannst ja eventuell einfach mal ein paar Register umlabeln/umbenennen, bzw. neue temporäre Register einführen/nutzen.
 

Neue Themen


Oben