Ich habe ein Mikroprogram gegeben und soll bestimmen, welcher Maschinenbefehl implementiert wird: mar := pc; rd; rd; ac := ac+1; a := inv(mbr); ac := ac+a ; Wie soll man das herausfinden, welcher Maschinenbefehl implementiert wird, ich kann beschreiben, was das Mikroprogramm in den einzelnen Zeilen macht, aber ich kann jetzt keinen Maschinenbefehl nennen... Kennt sich jemand aus?
Pat ". schrieb: > Kennt sich jemand aus? Frag mal Meister Bome . . . https://www.mikrocontroller.net/user/show/bome Beitrag "8bit-Computing mit FPGA"
Mir ist da ein RD zu viel drin, ansonsten ists auch so erratbar. Tipp: Zweierkomplement-Negation ist Einerkomplement plus 1.
Das ist als Gesamtantwort falsch, ist ein Teil der Gesamtoperation.
:
Bearbeitet durch User
Pat ". schrieb: > ich kann beschreiben, was das Mikroprogramm in den einzelnen > Zeilen macht Dann mach mal. Und schau bei Gelegenheit nach, ob dieses Programm wirklich exakt so stimmt. Glaub ich nämlich nicht.
:
Bearbeitet durch User
Muss es auch nicht. Kommt von aussen. So wirds wohl gemeint sein: MAR = memory address register MBR = memory (data) bus register
:
Bearbeitet durch User
@ Pat Der Witz ist doch, dass Du selbst überlegen sollst. Und Deine eigenen Denkprozesse beobachten und darüber nachdenken sollst. Das ist, was im eigentlichen Sinn, mit "selbstständigem Arbeiten" gemeint ist. Du willst doch (vermutlich) einen akademischen Grad erwerben. Vorgesagte Lösungen hinmalen kann jeder noch so ungebildete Mensch. Dafür kriegt man allenfalls im Kindergarten ein Blümchen.
Das extra rd ist dafür da, weil man auf den Hauptspeicher zugreifen will, das braucht Zeit und damit es sequentiell abgearbeitet werden kann, wird nochmal extra rd hingeschrieben. Ja, danke!!! jetzt sehe ich das auch, das das sicher das Zweierkomplement ist. Es wird das Einerkomplement gebildet und dann +1. Aber wenn ich jetzt hinschreibe der Machinenbefehl ist das Zweierkomplement, ist das ja kein Maschinenbefehl... Ein Maschinenbefehl ist ja immer eine Bitfolge aus 0 und 1, oder nicht? Zu selbstständigen Denkprozeß: Das ist keine Aufgabe, die ich zu erledigen habe. Ich studiere etwas komplett anderes, aber ich finde es heutzutage wichtig die grungdlegenden Konzepte eines Digitalrechners annähernd zu verstehen. Hab die Aufgabe aus dem Internet. Aber ich verstehe was du meinst, ich werde aber kein Informatiker...
:
Bearbeitet durch User
Der Begriff "Maschinenbefehl" ist hier im Sinn von Assembler-Befehl gemeint, nicht die Bits der Codierung.
Was falsch ist: Es wird der Operand ausgehend vom PC (Program Counter) gelesen. Der PC wird aber nicht hochgezählt. Das geht also in die Hose, der nächste Befehl verwendet deshalb den Operanden diesen Befehls als Opcode. Da fehlt sowas wie PC=PC+1. Eine Negation ist beteiligt, ist aber nicht der gesamte Befehl. Also wenn du es unbedingt fertig haben willst: Da wird vom Akku (ac) eine im Befehl enthaltende Konstante subtrahiert, indem deren Negation addiert wird. Und das ist ein für 8-Bitter recht typischer Maschinenbefehl.
:
Bearbeitet durch User
Pat ". schrieb: > Wie soll man das herausfinden, welcher Maschinenbefehl implementiert wird Ich würde im Datenblatt des fraglichen µC die Befehlsliste suchen. Pat ". schrieb: > Ein Maschinenbefehl ist ja immer eine Bitfolge aus 0 und 1, oder nicht? Ein Maschinenbefehl ist in binärer Form ein Bitmuster, das im Speicher abgeholt wird und Aktionen auf dem Prozessor auslöst. Es gibt aber auch eine Textform dafür, das nennt sich dann (vereinfacht) Assemblerbefehl. > aber ich finde es heutzutage wichtig die grungdlegenden Konzepte eines > Digitalrechners annähernd zu verstehen. Das läuft aber auf einer völlig anderen Abstraktionebene ab. Um die Funktion eines Verbrennungsmotors zu verstehen, reicht es auch aus, zu wissen, dass Benzin mit Luft gemischt, dann verbrannt wird und sich dabei ausdehnt. Wie genau dieser chemische Verbrennungsprozess abläuft und was dabei der Unterschied zur Dieselverbrennung ist, ist dabei völlig uninteressant, solange du ihn nicht optimieren musst. Und genau das selbe ist der Maschinencode: um einen "Digitalrechner" zu verstehen, reicht es aus, zu wissen, dass ein Hochsprachenprogramm in Maschinenbefehle umgesetzt wird, die nacheinander abgearbeitet werden. Wie das genau passiert ist bei jedem Prozessor unterschiedlich. Manche Prozessoren haben einzelne Maschinenbefehle, mit denen man z.B. ganze Speicherbereiche vergleichen oder kopieren kann (wie z.B. ein x86-CISC Prozessor mit 1 einzigen Maschinenbefehl), andere haben Befehle, die gleichzeitig multiplizieren und addieren (Signalprozessoren) und andere haben nur ganz simple Maschinenbefehle und auch nur ganz wenige (RISC), die aber schnell ausgeführt werden. Und dann kommen da noch Geschichten wie Cache-Verwaltung und Speicherschutzmechanismen und Multicore und wasweißichnochalles mit ins Spiel. Deshalb ist das genaue Verständnis eines Maschinenbefehls und dessen Auswirkungen eigentlich nur nötig, wenn du genau mit diesem Prozessor tiefer einsteigen willst. Wenn du jetzt aber trotzdem und mit Fleiß den Ablauf im inneren einer CPU kennen lernen willst, dann empfehle ich dir das hier: https://marian-aldenhoevel.de/papiercomputer/
:
Bearbeitet durch Moderator
google schmeist diese faksimile raus: http://www.nzdl.org/gsdlmod?e=d-00000-00---off-0cstr--00-0----0-10-0---0---0direct-10---4-------0-0l--11-en-50---20-about---00-0-1-00-0--4----0-0-11-10-0utfZz-8-00&cl=CL1.137&d=HASH017d9e95f322e004e88ec1b0.2&gg=facsimiles
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.