Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Blatt 3 Aufgabe 4
Kurze Frage zu Aufgabe 4:
Das Einlesen der Eingabe soll nur geschehen, wenn die vorherige Eingabe ausgewertet wurde (und nicht 0 war) und nicht zu jedem Takt, oder?
ja
Okay, danke
Kann ich, wenn ich etwas im Register D stehen habe, Bits 0, 1, 13 setzen und könnte so mit einem Mal den Wert aus D sowohl in A und B schreiben?
Danke!
EDIT: Bzw. kann ich das Ergebnis der ALU sowohl in C als auch in D in einem Takt/mit einem Mal schreiben? Ist D → B und D → E mit einer Mikroanweisung möglich?
Also ich denke eigentlich schon, dass es gehen müsste… Bin mir aber auch nicht 100% sicher… habs bei mir auch so gemacht… Kann dir ja dann gerne sagen ob es ging oder nicht
Kanns dir jetzt sicher sagen: Ja, geht
Hallo Zusammen,
ich schaue mir grade die Uebungsaufgaben an und die Aufgabe 4 wurde mir als Fehler angestrichen, aber ich verstehe nicht was daran falsch ist:
***Aufgabe
Schreiben Sie ein Mikroprogramm für obige CPU, das so lange (positive und negative) Werte
von der Eingabe liest und in den Speicher schreibt, bis der Wert ’0’ gelesen wurde.
Mikropro-
grammie-
rung
Nennen Sie jeweils die aktiven Steuerleitungen und erklären Sie kurz deren Bedeutung (Bsp:
8,10: Eingabe → D).
Das niederwertigste Bit des Sprungziels entspricht Steuerleitung 21.
Ich hab das folgendermaßen gelöst und mir wurde ins Kommentar geschrieben, dass das nicht für negative Werte klappt, aber das versteh ich nicht:
Positive und negative Werte Einlesen bis 0 vorkommt - Beispiel 8,5,21, - 32, 0 STOP
Logik: if Zahl - (Zahl -1) >= 0 => Zahl != 0
Beispiel:
8 - (8-1) = 1 => >= 0
-8 - (-8-1) = 1 => >= 0
0 - (0-1) = -1 => ! >= 0
Lstart 0 8,10 //Eingabe → D
1 0,1,11,13 // D → B & A & E
2 4,6 // B - 1 → C
3 1, 12 // B - 1 → B
4 3, 6 // A - B → C
5 16, 19,20,21 // if (A-B) >= 0 Sprung zu Lthen
6 17 ,18,21 // Sprung zu Lend
Lthen 7 14 // E → Speicher
8 17 // Sprung zu START
Lend 9
Ich würde mich auch freuen wenn mir jemand ne andere Lösung präsentieren könnte
ne, 1. Also keine Erkennung der 0. Somit ist zwar der Korrekturkommentar nicht richtig, aber das Mikroprog auch nicht.
Schick mir mal ne PN mit deinem Namen, dann kann ichs mir im EST anschauen, ob die Punkte passen.
Eine andere herangehensweise:
Anfang:
Wenn Eingabe >= 0 goto Check2
goto ausgabe
Check2:
wenn Eingabe-1 >= 0 goto ausgabe
goto End
Ausgabe:
gebe aus
goto Anfang
Eend:
stimmt, hatte irgendwie tomaten auf den augen.
das passt dann so, danke