|
veteran
|
OP
veteran
Joined: Mar 2003
|
Im Informatik fangen wir gerade mit Maschinensprache an und müssen Programme damit schreiben. Da hier ja sehr viele Informatik können, könnt ihr mir doch bestimmt immer wieder helfen. <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" /> Unser erstes Programm soll die Gauß Formel beherschen. Zur Verfügung steht mir der AC, und die Aressen 120, 121 und 122 im Hauptspeicher. In 120 steht die Zahl x, in 122 soll am Ende das Ergebnis stehen. HS Inhalt 100 MOV 1 101 120 102 CJP 103 200 104 SUB 0 105 1 106 STO 107 121 108 MOV 1 109 120 110 ADD 1 111 121 112 STO 113 122 114 MOV 1 115 121 116 JMP 117 102 Wenn jemand einen Fehler entdeckt, bitte sagen. Und wenn mir jemand das Hilfsprogramm von unserem Lehrer erklären kann (zu finden auf www.stamaonline.de -> X-tra -> Progr./Javascript -> Programme für den Inforamtikunterricht) wäre das sehr hilfreich für mich. <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Wo lernt man sowas ? Kannst du Literatur empfehlen ?
When you find a big kettle of crazy, it's best not to stir it. --Dilbert cartoon
"Interplay.some zombiefied unlife thing going on there" - skavenhorde at RPGWatch
|
|
|
|
veteran
|
OP
veteran
Joined: Mar 2003
|
Das lerne ich gerade in der Schule im Informatikunterricht. Literatur kann ich dir nicht empfehlen, weil wir keine benutzen.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
<img src="/ubbthreads/images/graemlins/eek.gif" alt="" /> <img src="/ubbthreads/images/graemlins/eek.gif" alt="" /> <img src="/ubbthreads/images/graemlins/eek.gif" alt="" /> Die Schule hätt ich auch gerne besucht......
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Mein Informatik-Grundkurs liegt jetzt auch schon mehr als 6 Jahre zurück, so daß ich mich an die Ausführungen über Maschinensprache/Assembler kaum noch erinnere. Alles, was ich glaube zu wissen ist, daß MOV doch eigentlich ZWEI Argumente braucht, odä? <img src="/ubbthreads/images/graemlins/think.gif" alt="" />
Ich denke, wenn Dir hier niemand helfen kann, was schwerlich vorzustellen ist, solltest Du Dein kleines Programm mal Zeile für Zeile erläutern. <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />
Nigel Powers: "There are only two things I can't stand in this world. People who are intolerant of other people's cultures... and the Dutch!"
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Für welchen Prozessor macht Ihr das denn? Für 8088 und 80386 hätte ich Assembler Bücher zuhause. Wenn es andere Prozessoren sind dann hat das ganze womöglich eine völlig andere bedeutung.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Wenn mal jemand so nett wäre, und mir mal detailliert jenes Fragment / Programm von oben erklären könnte ...
When you find a big kettle of crazy, it's best not to stir it. --Dilbert cartoon
"Interplay.some zombiefied unlife thing going on there" - skavenhorde at RPGWatch
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Wenn mal jemand so nett wäre, und mir mal detailliert jenes Fragment / Programm von oben erklären könnte ... also gut dann: es handelt sich hierbei um eine verschlüsselte auflistung des fernsehprogramms EINES senders namens HS <img src="/ubbthreads/images/graemlins/exclamation.gif" alt="" /> wobei die erste spalte die anfangszeiten markiert und die 2. spalte hinweise auf das programm gibt. HS Inhalt [color:"red"]sender / inhalt[/color] 100 MOV 1 [color:"blue"]z. b. 20:15 / film 1[/color] 101 120 [color:"green"]120 minuten lang[/color] 102 CJP [color:"orange"]hauptdarsteller[/color] 103 200 [color:"pink"]altersfreigabe[/color] 104 SUB 0 [color:"white"]WERBUNG[/color] 105 1 [color:"brown"]benotung von ralf ranicki[/color] 106 STO VIDEO programmieren <img src="/ubbthreads/images/graemlins/exclamation.gif" alt="" /> 107 121 [color:"green"]120 minuten lang[/color] 108 MOV 1 [color:"blue"]z. b. 20:15 / film 2[/color] usw
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Donnerwetter, Harga! So einfach? Juchu, ich kann Maschinensprache.
Wenn sie so überlegen sind, warum sind sie dann so tot?
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
103 200 [color:"pink"]altersfreigabe[/color] Na, dann hast DU ja Glück gehabt, Opa Harga! <img src="/ubbthreads/images/graemlins/badsmile2.gif" alt="" />
Nigel Powers: "There are only two things I can't stand in this world. People who are intolerant of other people's cultures... and the Dutch!"
|
|
|
|
veteran
|
OP
veteran
Joined: Mar 2003
|
@Barnabus: Hättest du bestimmt nicht. Wenn das Motto des lehrers "Freß oder stirb" ist und man einmal nicht mitkommt, ist der Rest des Unterrichtsthema für einen nur noch raten und hoffen, dass es richtig ist. Für welchen Prozessor macht Ihr das denn? Für 8088 und 80386 hätte ich Assembler Bücher zuhause. Wenn es andere Prozessoren sind dann hat das ganze womöglich eine völlig andere bedeutung. Ich habe keine Ahnung, Tut. Ich hab nur folgende Inforamtionen, die für uns reichen. ARI 1: <AC>°<A1> -> AC ARI 0: <AC>°A1 -> AC MOV 1: <A1> -> AC MOV 0: A1 -> AC STO: <AC> -> A1 CJP: (<VZ> < 0) springt zu A1 JMP: springt zu A1 A1 ist immer, was nach dem Befehl steht Hoffe, das hilft dir weiter. @elgi: Wie du siehst, braucht MOV nur ein Element. Und zwar was er in den AC schreiben soll. <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" /> @Alrik: Aber natürlich gern Schritt --- AC ---- 120 - 121 - 122 0 ------------------ x 1 MOV ---- x 2 CJP 3 SUB 0 -- x-1 4 STO ------------------- x-1 5 MOV 1 -- x 6 ADD 1 -- x+(x-1) 7 STO ------------------------- x+(x-1) 8 MOV 1 -- x-1 9 JMP dann fängt der ganze Spaß wieder bei Schritt 2 an, bis die Zahl im AC kleiner als 0 ist. Dann ist das Programm beendet. Nun ist halt die Frage, ob das ganze halt klappt oder nicht. Wenn ich das downloadbae Programm ja bedienen könnte, wäre dies natürlich kein Problem.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Faszinierend! <img src="/ubbthreads/images/graemlins/eek.gif" alt="" />
*was heisen nur die vielen Buchstaben und Zahlen die er da hintereinander gepackt hat...... <img src="/ubbthreads/images/graemlins/confused.gif" alt="" /> *
Also Rei, ich denke mal das das eine nette und wunderschöne Erklärung des Programmes ist........... aber mir is das zu hoch.......versteh nur Bahnhof. <img src="/ubbthreads/images/graemlins/silly.gif" alt="" />
*wieder ne Bildungslücke <img src="/ubbthreads/images/graemlins/shame.gif" alt="" /> *
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Also ... selbst, wenn ich mich jetzt blamiere ... ehrlich gesagt : Ich verstehe es immer noch nicht (ganz) ...
Könntest du das mal anhand eines Beispiels durchrechnen ?
When you find a big kettle of crazy, it's best not to stir it. --Dilbert cartoon
"Interplay.some zombiefied unlife thing going on there" - skavenhorde at RPGWatch
|
|
|
|
veteran
|
OP
veteran
Joined: Mar 2003
|
Ich merk gerade, dass ein Fehler drin ist. Sobald ich den verbessert habe, gibts was neues. <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Na dann hat dein Post doch seinen Zweck erfüllt. <img src="/ubbthreads/images/graemlins/delight.gif" alt="" /> Auch wenn außer dir keiner so recht was zu verstehen scheint. <img src="/ubbthreads/images/graemlins/silly.gif" alt="" />
|
|
|
|
journeyman
|
journeyman
Joined: Mar 2003
|
Ich riskier trotzdem mal ne Erklärung, da ich un ne Stunde drüber gegrübelt hab:)
Also mit folgendem Code sollte die Gaußformel korrekt berechnet werden... Ich hab nur statt der Adressen 120-122 die Adressen 918 (Eingabe) und 919(Ausgabe) verwendet, damit man in dem Demoassembler von Deinem Link das gleich austesten kann.
Da Problem bei Deinem Code ist, dass in 122 immer nur neu geschrieben wird, ohne dass die bisher berechnete Summe benutzt wird. Außerdem ist mir nicht klar, wieso Du 3 Adressen brauchst? In einer Adresse wird die Eingangszahl immer runtergezählt und in der anderen die Summe aufaddiert. Nur wenn die Eingabe in dem Register unverändert bleiben soll, bräuchte man ein drittes zum Spiechern der Eingabe, aber das stand ja nicht in der Aufgabe.
Inhalt 900 SET 0 901 919 902 MOV 1 903 918 904 CJP 905 920 906 ADD 1 907 919 908 STO 909 919 910 MOV 1 911 918 912 SUB 0 913 1 914 STO 915 918 916 JMP 917 902
918 6
Algorithmus: 1. Setze Ausgabevariable auf 0 (900,901) 2. Addiere Eingabevariable zur Ausgabevariable (902,903,906-909) 3. Ziehe 1 von der Eingabevariable ab (910-915) 4. Solange Eingabevariable größer 0 fahre mit 2. fort (904,905,916,917)
@elgi Man muss immer zwei Zeilen als eine lesen, mov 1 9xx bewegt den Speicherinhalt der Adresse 9xx ins Register
Reicht das so, oder soll ich den Beispielcode des Lehrers noch erklären?
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Hi Rei,
das mit dem Programm zumindest war gar nicht so schwer! <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" /> (Mann, wann war das? 2. oder 3. Semester? - Zu lang her... <img src="/ubbthreads/images/graemlins/rolleyes.gif" alt="" /> <img src="/ubbthreads/images/graemlins/delight.gif" alt="" /> )
Das am Anfang verwirrende ist nur, daß der AssemblerDemoInterpreter a. zum einen bei seinem HS halt erst mit Adressen im 900er Bereich beginnt b. zunächst nicht genügend Hauptspeicher-Adressen zur Verfügung zu stehen scheinen.
Zu ersterem mußt Du Dein Programm entsprechend modifizieren, und zwar da wo die Adress-Zahlen Deiner 3 Speicherstellen im Quelltext vorkommen und an den Punkten an denen noch Adressen des Hauptspeichers angegeben werden. Ich habe diesen anstatt 120, 121, 122 beim Test analog 920, 921 und 922 zugewiesen.
Folgerichtig müssen die ersten Zeilen Deines Programmes so umgeschrieben werden und ab HS-Adresse 900 im ADI eingegeben werden:
HS Inhalt 900 MOV 1 901 920 902 CJP 903 999 904 SUB 0 905 1 906 STO 907 921 ...
Dabei ergibt sich auch automatisch die Lösung für Problem b. Denn sobald Du die letzte angezeigte Adress-Zeile ausgefüllt hast und "Pfeil-nach-unten" drückst, erscheint sogleich (wie von Zauberhand! <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" /> ) eine weitere usw.usf.
Kleine Anmerkung noch zur Zeile:
902 CJP 903 999 <--
Die Zahl dort ist ziemlich unerheblich und kann beliebig gewählt werden, solange sie nur außerhalb des HS-Bereichs liegt, den Dein Programm belegt (also niedriger 900, größer 922)! Die Zahl dient nämlich nur dazu, daß das Programm an diese Adresse springt, sobald der Test des vorangegangenen Befehls positiv ausfällt. Dieser heißt CJP, was soviel bedeutet wie "Conditional JumP", also einen bedingten Sprung. Dies wiederum sagt aus, daß das Programm an die Adresse (hier:) 999 springt, wenn eine bestimmte Bedingung (Annahme: Test auf Gleichheit zweier Variablen) während des Ablaufs erfüllt wird. Ich denke zumindest die eine der Vergleichszahlen ist im AC (hilft mir mal einer auf die Sprünge, bitte? Was heißt das nochmal? A... Counter? Oder doch ACcumulator?). Die andere Speicheradresse, mit deren Inhalt CJP den Wert in AC vergleicht, konnte ich bis jetzt noch nicht ausfindig machen.
In Quintessenz ist die Funktion des CJP jedenfalls, wenn das Programm an einen Punkt kommt, an dem seine Bedingung erfüllt ist, daß er Dein Programm dann beendet (da es mit der leeren Adresse 999 zu der er springt nicht mehr weitergeht). Es handelt sich sozusagen also um eine Art "Exit-Routine". Sonst würde Dein Programm ewig laufen - das tut es nämlich. Es läuft in Schleifen ab dem zweiten Durchgang immer wieder von HS-Adresse 902 bis 916/917. Diese letzteren beiden Zeilen befördert es nämlich immer wieder durch den "JMP (= JuMP) 902" an die Adresse mit dem CJP, bis eben dessen Test erfolgreich ist und er im Anschluß anstatt bei 904 weiterzumachen, an die Ende-Adresse 999 geht.
Hast Du das soweit verstanden? Ich weiß, ein klein wenig umständlich und wirr. Sorry! <img src="/ubbthreads/images/graemlins/shame.gif" alt="" />
Was die Frage der Funktionsfähigkeit des Programmes angeht, kann ich noch nichts sagen, da ich den Algorithmus noch nicht richtig geblickt habe, da Mathematik (deswegen folgte dann leider auch nur noch Semester 4 <img src="/ubbthreads/images/graemlins/rolleyes.gif" alt="" /> <img src="/ubbthreads/images/graemlins/sad.gif" alt="" /> ).
Könntest Du vielleicht nochmal auch den mathematischen Term für diese `Gauss-Formel´ posten, die hier vom Programm angeblich durchgerechnet werden soll?
Bis dahin tschüß, Ragon, der Zahlenmagier (HUAAH! <img src="/ubbthreads/images/graemlins/rolleyes.gif" alt="" /> <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" /> <img src="/ubbthreads/images/graemlins/delight.gif" alt="" /> )
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Jetzt kommt's gleich... "Zwischenposter" <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" /> <img src="/ubbthreads/images/graemlins/biggrin.gif" alt="" />
Nigel Powers: "There are only two things I can't stand in this world. People who are intolerant of other people's cultures... and the Dutch!"
|
|
|
|
journeyman
|
journeyman
Joined: Mar 2003
|
Na, die Arbeit hätten wir uns wohl sinnvollerweise lieber aufgeteilt:)
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
GRNNNHHHHH <img src="/ubbthreads/images/graemlins/memad.gif" alt="" /> <img src="/ubbthreads/images/graemlins/memad.gif" alt="" /> <img src="/ubbthreads/images/graemlins/memad.gif" alt="" />
Un´dafürhab´ichzweiStundenneben"DieFirma"hermichabgestrampeltoderwas!? <img src="/ubbthreads/images/graemlins/suspicion.gif" alt="" /> <img src="/ubbthreads/images/graemlins/memad.gif" alt="" />
GRRR, Du elender Zw... *tiefausatme* <img src="/ubbthreads/images/graemlins/rolleyes.gif" alt="" /> <img src="/ubbthreads/images/graemlins/rolleyes.gif" alt="" /> <img src="/ubbthreads/images/graemlins/rolleyes.gif" alt="" />
*seufz* <img src="/ubbthreads/images/graemlins/ouch.gif" alt="" /> <img src="/ubbthreads/images/graemlins/silly.gif" alt="" />
|
|
|
|
|