Assembler Code in C umwandeln?

Hallo Leute,
leider finde ich bei Google nichts hilfreiches dazu daher habe ich gedacht ich wende mich mal an die Spezialisten hier :smile:

Stehe vor folgender Aufgabenstellung:

Schreiben sie folgendes in C, MOVE #$ab,$1000

Schreiben sie folgendes in C, MOVE #$2700, SR

Kann mir da bitte einer weiterhelfen? Danke schon mal :slight_smile:

Drei Sachen fallen mir dazu ein:

  1. w-w-w ist nicht dazu da, Hausaufgaben machen zu lassen. Bitte wÀhle wenn das Vorgehen, Dein VerstÀndnis und Deinen (ggf. auch vergeblichen) Lösungsansatz zu schildern.

  2. Das Thema gehört nicht nach „Informatik“ sondern nach „C/C++“ (kĂŒmmere ich mich gleich drum)

  3. Die „Aufgaben“ sehen unvollstĂ€ndig, durcheinander oder unsinnig aus. Wobei die erste Schwierigkeit schon darin besteht, dass die Assemblerbefehle von Prozessor zu Prozessor etwas unterschiedlich sind und sich die Schreibweisen entsprechend unterscheiden. Hier schaut es aber ganz merkwĂŒrdig aus, weil es nach ĂŒblicher Schreibweise bedeutet, dass das Ziel einer Zuweisung eine Konstante sein soll.
    Überhaupt ist der Ansatz einen einzelnen Assemblerbefehl in C zu ĂŒbersetzen, als wĂŒrde man einen Text vom Deutschen ĂŒbersetzen wollen und dazu fragt, wie man den Buchstaben „T“ ins Englische ĂŒbersetzt.
    Passiert allerdings in der IT hĂ€ufiger, dass Leute Schulungen geben, die das Gelehrte noch nie selbst außerhalb von LehrĂŒbungen praktiziert haben.

Ciao, Allesquatsch

Tut mir leid

Den Prozessor habe ich vergessen: MC68000 (Motorola)

Ich dachte w-w-w hilft bei Fragen.
Tut mir leid das die Frage fĂŒr dich wie eine Hausaufgabe aussehen :smiley:

Also MOVE #$ab,$1000 bedeutet ja , dass an die Stelle 1000 der Wert ab geschriebe werden soll. Du brauchst also einen pointer der auf die Stelle 1000 (4096) zeigt, und schreibst dort dann ab (171) rein.

int *a;
a = 4096; //hex 1000
*a=171; //dex ab

Bei der zweiten Aufgabe kann ich Dir nicht weiter helfen, da ich nicht weis was SR sein soll, aber vielleicht kommst Du jetzt ja selber weiter, nachdem Du Die die Lösung fĂŒr den ersten Teil mal angeschaut hast.

Diese Antwort ist nur dann richtig, wenn der Assembler die GrĂ¶ĂŸen hier falsch anpassen wĂŒrde.
Die Standard MOVE Anweisung (ohne GrĂ¶ĂŸenangabe) hat als StandardgrĂ¶ĂŸe ein Byte. Deswegen muss hier in der Lösung ein „char“ oder „unsigned char“ anstatt eines "int"s benutzt werden, also sowas wie

unsigned char *p = (unsigned char*) 0x1000;
*p = 0xab;

SR ist dass 16 bit Status Register, welches je nach Version des Prozessors ganz, teilweise oder gar nicht beschrieben werden kann, idR aber nicht mit den standardisierten C/C++ Befehlen.

Gruß
HH

1 Like

Hi,

aber das hat sich doch geÀndert seit dem glorreichen Umbau. Gibt es nicht irgendwo sogar ein dediziertes Hausaufgabenbrett?

Ja, mal abgesehen von dem netten Streit, den es damals unter den Informatikern gab, ob das Ziel nun an erste oder zweite Stelle kommt :wink:

stimmt, ich kenne Professoren der theoretischen Informatik, die nicht wirklich programmieren können 
 Die wĂŒrden - sofern sie denn zwangsverdonnert werden, eine Info-B Vorlesung zu halten (in der vielleicht Assembler oder C vorkommt) - aber einen „dummen“ Assi vorschicken 


Gruß
HH

Hallo HAL9000,

danke fĂŒr Deine fachkundigen Antworten

Falls man irgendwas noch zu Geld machen kann, ist die Hemmschwelle inzwischen flexibel :wink:
Hindert mich aber nicht daran, selbstÀndige Entscheidungen zu treffen.

Schlichtere GemĂŒter glauben daran, dass man mehr Traffic und grĂ¶ĂŸeres Interesse produziert, wenn die Eingangskriterien fĂŒr neue Fragen möglich niedrig sind.

Meiner Erfahrung nach sind solche HA-Threads aber davon geprĂ€gt, dass ohnehin selten was nachkommt. Es ist extrem selten, dass Threaderöffner noch mal RĂŒckfragen nach ersten Antworten erstellen oder ein Interesse daran haben, den Lösungsweg zu verstehen. Meist ist nur eine kopierfĂ€hige Antwort vor der Abgabe der Übungsaufgaben erwĂŒnscht.

Asche auf mein Haupt. Denn eigentlich hĂ€tte ich es besser wissen mĂŒssen. FĂŒr den Z80 und 6502 habe ich zwar kleine Assembler-Routinen programmiert, aber in der Uni wurde dann der neue 68k die Basis fĂŒr die Informatik-PrĂŒfungen.

Das hatte ich verdrÀngt. Zum Erwerb von Programmierscheinen in der Uni waren es ohnehin nicht notwendig, Programmierkompetenz aufzubauen. Dumm nur, dass einige Absolventen tatsÀchlich glaubten, sie könnten jetzt programmieren.

Ja. Allerdings habe ich meinen programmiererischen Schliff durch einen begeisterten Prof bekommen - allerdings kein Informatiker sondern jemand aus der BWL. Die Informatiker waren damals voll auf APL, Prolog und Smalltalk und der BWL-Lehrstuhl bot als einziger schon was mit „C“ an.

Ciao, Allesquatsch