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?
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
Sall Pamm schrieb: > der Assemblersprache Die gibt es nicht. Auf welcher Plattform soll dein Programm denn laufen?
Es ist ein Teil der kompletten Aufgabe und soll das Quadrat einer positiven ganzen Zahl n in Assemblercode für den SPIM berechnen.
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.
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.
Karl Heinz Buchegger schrieb: > SPIM Google brachte die Erleuchtung. http://de.wikipedia.org/wiki/SPIM_%28Software%29 Eine MIPS32 Simulator.
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.
Beim Vergleich werden die Flags gesetzt, nicht die Register. Sorry.
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.
hobbyprogrammierer schrieb: > Vor 10/20/30 Jahren (zutreffendes unterstreichen) kanntest du das auch > nicht. Das ist doch das Schöne, wenn man es mal zum Einäugigen geschafft hat - dann kann man auf den Blinden rumtrampeln. Gruss Reinhard
Reinhard Kern schrieb: > Das ist doch das Schöne, wenn man es mal zum Einäugigen geschafft hat - > dann kann man auf den Blinden rumtrampeln. Ich treff die aber immer so schwer, das räumliche Sehen fällt mir nicht so leicht, kennst du bestimmt.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.