If Anweisung Assemblersprache

Gast #3161171
Sall Pamm schrieb:
> Hallo an alle,
>
> ich bin ganz neu mit der Assemblerprogrammierung und möchte folgende
> Code mit Assembler programmieren;
>
> if (n<0)
>  n=-n;
>
> Wie kann man es mit der Assemblersprache programmieren?

Welcher Prozessor????

rgds
#3161188
Sall Pamm schrieb:
> Es ist ein Teil der kompletten Aufgabe und soll das Quadrat einer
> positiven ganzen Zahl n in Assemblercode für den SPIM berechnen.

Ich kenne SPIM nicht.

Aber auf den meisten CPU-Architekturen funktioniert das durch das 
Zusammenspiel von 2 Komponenten:

die eine Komponente vergleicht 2 Einheiten (Register oder Konnstante). 
So ein Vergleich ist im Grunde nichts anderes als eine Subtraktion, bei 
der das Ergebnis verworfen wird. Worauf es ankommt, dass ist das Setzen 
der diversen Status-Flags, wie Zero, Carry und dergleichen.

Die andere Komponente sind diverse bedingte Sprungbefehle, die sich den 
momentanen Zustand der Flags (Zero, Carry, ...) holen und je nachdem 
entweder den Sprung durchführen oder auch nicht.


Und aus diesen beiden Teilen, werden dann eben Abfragen zusammengesetzt.
Gast #3161189
Sall Pamm schrieb:

> ich bin ganz neu mit der Assemblerprogrammierung

Das merkt man nur zu deutlich.

> und möchte folgende
> Code mit Assembler programmieren;
>
> if (n<0)
>  n=-n;
>
> Wie kann man es mit der Assemblersprache programmieren?

Das kommt auf mehrere Sachen an. Zum ersten mal das Zielsystem, daraus 
ergibt sich nämlich, welchen Assembler du eigentlich überhaupt benutzen 
mußt und damit, welche Befehle dir zur Verfügung stehen.

Und zum anderen kommt es auch auf die Bitbreite von n an. Je nachdem, ob 
n 8,16,24,32,48 usw. Bit breit ist, wird jeweils anderer Code 
erforderlich sein und zwar für beide Berechnungen, die nötig sind, um 
die Funktionalität des Pseudocodes abzubilden.
Gast #3161192
Bei den allermeisten Prozessoren oder Microcontrollern macht man das 
über einen Vergleichsbefehl, bei dem dann Register gesetzt werden, und 
dann einem Sprungbefehl.

zB:

  CMP  r14,r15   (Vergleiche den Wert im Register 14 mit dem Wert in 
Register 15)
  JNE  irgendwas    (Sprung, wenn Werte ungleich zu Adresse oder Label)

Verschiedene Sprungbefehle:
  JNE (Sprung wenn Werte ungleich)
  JEQ (Sprung wenn Werte gleich)
  JZ  (Sprung wenn Wert 0)
  usw.

Die Vergleichs- und Sprungbefehle heissen je nach Prozessortyp anders.
Gast #3161204
Eumel schrieb:
> Sall Pamm schrieb:
>> Assemblercode
>
> Weißt du überhaupt was das ist? Anscheinend nicht.

Vor 10/20/30 Jahren (zutreffendes unterstreichen) kanntest du das auch 
nicht.
Und durch solche Statements wie deinem hättest du es auch nicht gelernt.
(Firma: fritzler-avr.de) #3161286
MIPS Assembler also.
Dann googlr mal nach der "MIPS Greencard" da stehen ersmal alle befehle 
drauf oder guck auf der Übungsseite deiner Uni/FH.

Ein MIPS kann nur vergleichen auf gleich/ungleich.
Wobei SPIM auch die Pseudoinstruktionen zum vergleichen/springen kennt.

Also was muss gemacht werden:
erstmal auf kleiner prüfen
->wenn dies zutrifft dann nicht springen und das n=-n berechnen
->trifft dies nicht zu, dann die Befehle für n=-n überspringen

wie ändert man das Vorzeichen einer Zahl?
->2er Komplement angucken und mit dem Subtrahierbefehl spaß haben 
(n=0-n)

Wo studierste denn? Die Grundlagen dazu müsste man dir eigentlich schon 
beigebracht haben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.