Hallo, ich sitze seit langer Zeit an einem Aufgabenteil fest, und wollte nun an dieser Stelle das Forum um Hilfe fragen. Und zwar ist meine Frage, welche Werte bei einer Adressierungsart wie in der Aufgabe in den Akkumulator geladen werden. Angenommen für den ersten Wert des Indexregisters von 0404 nach der Aufgabe: Ich verstehe, dass die effektive Adresse dann 0412 sein muss, da in der Zeile 0400 die Spalte 4 gewählt werden muss. Wie aber bestimmt man nun, welcher Wert daraus in den Akkumulator geladen wird?
user555 schrieb: > Wie aber bestimmt man nun, welcher Wert daraus in den Akkumulator > geladen wird? Dann lies dir noch mal durch, welche Funktion das Indexregister bei der indirekten Adressierung hat.
Hallo, mich verwirrt etwas die Syntax: LDA ((Y)) Sieht stark nach indirekt indiziert Y aus... Da würde dann in der ersten Zeile die 01 aus 0412 im Akku landen. Scheint mir ein fiktiver Prozessor zu sein, zumindest kommt er mir nicht bekannt vor. Gruß aus Berlin Michael
Michael U. schrieb: > Scheint mir ein fiktiver Prozessor zu sein, zumindest kommt er mir nicht > bekannt vor. Speicherindirekte Adressierung gibts auch heute noch (z.B. bei den Freescale '12). Nur muss man nicht unbedingt damit rechnen, dass Aufgaben auf exakt so existierenden Prozessoren fussen. Etwas künstlerische Freiheit muss man schon verkraften. Da es aber für die Syntax von Adressierungen keine zwingende ISO-Norm gibt, muss das irgendwo anders erklärt worden sein. Gemäss Frescale-Syntax wär das ja dreifach indirekt (gab es auch mal). Sowas verpennt zu haben, ist natürlich blöd.
:
Bearbeitet durch User
user555 schrieb: > Wie aber bestimmt man nun, welcher Wert daraus in den Akkumulator > geladen wird? Das ist dann die Adresse. Obwohl, für mich sieht es so aus, als ob derjenige, der die Aufgabe gestellt hat, es auch nicht so ganz verstanden hat... Indexregister Y | effektive Adresse | Akkumulator A ======================================================= 0404 0412 01 041e 041F 04 0399 0404 12 040d 0604 FEHLER !
:
Bearbeitet durch User
Marc V. schrieb: > Obwohl, für mich sieht es so aus, als ob derjenige, der die Aufgabe > gestellt hat, es auch nicht so ganz verstanden hat... Hat es wohl, und du bist sogar auf seine Falle reingefallen.
hinz schrieb: > Marc V. schrieb: > Obwohl, für mich sieht es so aus, als ob derjenige, der die Aufgabe > gestellt hat, es auch nicht so ganz verstanden hat... > > Hat es wohl, und du bist sogar auf seine Falle reingefallen. Auf was für eine Falle ist er denn hereingefallen?
Das, was in 412 steht: 01 0404: 0412: 01 041e: 0399: 040d: nennt sich y-indizierte speicher-indirekte Adressierung
Uups, ganz übersehen, dass die Nacht-eulen fleißig waren. Auch mir scheint es so, als ob ein Praktikant die Aufgabe stellte.
1 | 0390 |
2 | 03a0 bis 03f0 fehlen hier |
3 | 0400 |
4 | 0410 |
Ich könnte mir vorstellen, das 40d sollte 41d heißen, dann wäre das Ergebnis 041f: 04 Oder es sollte wirklich eine Fangfrage (Einser-Bremse) sein mit dem falschen Ergebnis 0406: 92 EA (Effective Address) klingt tatsächlich nach Motorola. Gab es nicht was doppelt indiziertes (addr+x)+y? In einer anderen Architektur?
eProfi schrieb: > EA (Effective Address) klingt tatsächlich nach Motorola. Schon, aber die Notation ((y)) hat dafür eine Klammerung zu viel. EA=R schreibt sich bei Motorola Mnemonics als R, bei Zilog als (R). Die Schreibweise ((Y)) kriegt man, wenn man eine Motorola 6809 mit Zilogs Syntax schreibt. > Gab es nicht was doppelt indiziertes (addr+x)+y? In einer anderen > Architektur? 6502, aber entweder EA=(addr+x) oder EA=(addr)+y, und addr,x,y mit 8 Bit Breite. 68HC12 und STM8 haben auch was in der Richtung. EA=(y) mit 16-Bit y ohne Offset gab es bei 6809.
:
Bearbeitet durch User
Also, ich würde den Befehl LDA((Y)) so interpretieren: "Lade den Inhalt der Adresse die der Inhalt des Y-Registers adressiert in den Akku". Für die erste Zeile der Aufgabe rechne ich 0x0404+0x0012=0x0416. Das ist die effektive Adresse. Der Akku enthält dann 0x92. In C würde man X=**ptr schreiben.
:
Bearbeitet durch User
G. O. schrieb: > Für die erste Zeile der Aufgabe rechne ich 0x0404+0x0012=0x0416. Warum addierst du?
@G.O.: Meinst das ernst oder willst du ihn verarschen?
A. K. schrieb: > willst du ihn verarschen? Dein Ton gefällt mir nicht! Wenn ich daneben liege, dann erklär´ mir das vernünftig, aber nicht so!! Stefanus F. schrieb: > Warum addierst du? Naja, in den Rechnerarchitekturen, die ich kenne, erfolgt die Adressberechnung durch Addition. Ich vermute, dass es in dem Beispiel ebenso gemeint ist.
Strawberry schrieb: > hinz schrieb: >> Marc V. schrieb: >> Obwohl, für mich sieht es so aus, als ob derjenige, der die Aufgabe >> gestellt hat, es auch nicht so ganz verstanden hat... >> >> Hat es wohl, und du bist sogar auf seine Falle reingefallen. > > Auf was für eine Falle ist er denn hereingefallen? Er hat "Fehler!" statt "unbekannt" geschrieben.
G. O. schrieb: > Stefanus F. schrieb: >> Warum addierst du? > Naja, in den Rechnerarchitekturen, die ich kenne, erfolgt die > Adressberechnung durch Addition. Ich vermute, dass es in dem Beispiel > ebenso gemeint ist. Da vermutest du aber falsch. G. O. schrieb: > Also, ich würde den Befehl LDA((Y)) so interpretieren: > "Lade den Inhalt der Adresse die der Inhalt des Y-Registers adressiert > in den Akku". Ich auch. G. O. schrieb: > Für die erste Zeile der Aufgabe rechne ich 0x0404+0x0012=0x0416. Das ist > die effektive Adresse. Der Akku enthält dann 0x92. In C würde man > X=**ptr schreiben. Das ist aber nicht das, was du geschrieben und interpretiert hast. P.S. Für mich wäre es aber so irgendwie logischer:
1 | LDA (Y) ; Lade Akku mit Adresse auf die der Y-reg zeigt |
2 | LDA ((Y)) ; Addiere Inhalt der Adresse auf die der Y-reg zeigt, zu Akku |
Aber dann würde da wahrscheinlich ADDA stehen. Unlogisch und fehlerhaft auf jeden Fall...
:
Bearbeitet durch User
Marc V. schrieb: > LDA (Y) ; Lade Akku mit Adresse auf die der Y-reg zeigt Den 8-Bit Akku wirklich mit einer 16 Bit Adresse laden? Oder doch lieber mit dem Speicherinhalt an dieser Adresse? Ich will hier keine Haare spalten, nur ist sprachliche Präzision dabei entscheidend. Abgesehen davon wäre das Zilog-Notation, vgl LD A,(HL) während es in Motorola-Notation LDA Y heisst. > LDA ((Y)) ; Addiere Inhalt der Adresse auf die der Y-reg zeigt, zu > Akku Da wird nichts addiert. Addition wäre meist der Stamm ADD*, manchmal auch bloss A* (z.B. IBM). Das abschliessende A steht idR für den Akku. Um das Y Register selbst zu laden, verwendet man dann LDY. In Zilog-Notation würden damit die 2 Bytes Speicherinhalt, auf die Y verweist, zur Adresse des aus dem Speicher in den Akku zu ladenden Bytes. In Motorola-Notation werden damit diese von Y adressierten 2 Bytes im Speicher nicht zur Adresse des Operanden, sondern zu einer weiteren Speicheradresse aus 2 Bytes, die auf den Operanden verweist. Also 5 byteweise Speicherzugriffe insgesamt, zwei 2-Byte Adressen und das Datenbyte. Da gab es in dieser Form mW nie.
:
Bearbeitet durch User
Die Aufgabenstellung ist ohne den weitere Kontext zu kennen nicht eindeutig zu beantworten. Dreh- und Angelpunkt ist die etwas merkwürdige Notation "LDA ((Y))". Die kann zwei Dinge bedeuten, doppelte Indirektion (Lade den Inhalt der Speicherzelle, auf die die Speicherzellen zeigen, auf die das Index-Register zeigt) und einfache Indirektion (Lade den Inhalt der Speicherzelle, auf die das Index-Register zeigt). Die auszufüllende Tabelle, die eine Spalte namens "effektive Adresse" enthält, deutet darauf hin, daß es um doppelte Indirektion gehen könnte. Für einfache Indirektion wäre diese Spalte merkwürdig überflüssig, da in ihr der Wert aus der ersten Spalte eingetragen werden müsste. Bei doppelter Indirektion läst sich die letzte Zeile der Tabelle nicht ausfüllen, da der partielle Speicherdump den hier referenzierten Speicherbereich nicht enthält.
Leute, das ist eine Aufgabe der FernUni Hagen, Kurs 01706 - Anwendungsorientierte Mikroprozessoren. Im WS13 war das Aufgabe 3-5. Die habe ich nämlich für meinen Master gemacht ;) Lösung ist:
1 | Indexregister Y effektive Adresse Akkumulator A |
2 | 0404 0412 01 |
3 | 041E 041F 04 |
4 | 0399 0404 12 |
5 | 040D 0416 92 |
Die Adressierungsart wird als „indirekte Register-indirekte Adressierung“ bezeichnet. user555 hätte ehrlicherweise zugeben können, woher das kommt - und das Aufgabenblatt vorher nicht bearbeiten sollen. Sowas ist einfach nur peinlich. -- tabelle der Lesbarkeit halber in [ pre ]-Tags gesetzt -rufus
:
Bearbeitet durch User
Der erste Teil der Aufgabe besteht übrigens darin, die Adressierungsart in Worten zu beschreiben. Lösung: Das Indexregister Y zeigt auf die Anfangsadresse eines Speicherwortes aus zwei Bytes. Dieses Speicherwort gibt im Little-Endian-Format die Adresse des Bytes im Speicher an, mit dessen Wert der Akkumulator A geladen werden soll.
Neverever schrieb: > Lösung ist: > > Indexregister Y effektive Adresse Akkumulator A > 0404 0412 01 > 041E 041F 04 > 0399 0404 12 > 040D 0416 92 Nein, ist es nicht, jedenfalls nicht mit der angegebenen Tabelle.
Die letzte Zeile kann so nicht stimmen.
1 | 040D 0416 92 |
Um auf diese effektive Adresse zu kommen, müsste Y=040C sein. Bei Y=040D aber ist die effektive Adresse 0604.
G. O. schrieb: > A. K. schrieb: >> willst du ihn verarschen? > > Dein Ton gefällt mir nicht! Ist schon vorgekommen, dass jemand auf eine vom Fragesteller selbst zu lösende Aufgabe mit Irreführung antwortet. Das zu widerlegen wäre unsinnig gewesen. > Wenn ich daneben liege, dann erklär´ mir das vernünftig, aber nicht so!! Ok. G. O. schrieb: > Also, ich würde den Befehl LDA((Y)) so interpretieren: > "Lade den Inhalt der Adresse die der Inhalt des Y-Registers adressiert > in den Akku". Siehe eben. > Für die erste Zeile der Aufgabe rechne ich 0x0404+0x0012=0x0416. Y enthält die Adresse 0x0404. Im Speicher steht an dieser Adresse das Byte 0x12. Das addierst du hier zu seiner eigenen Adresse 0x0404. Viel Sinn ergibt das nicht: X = *(ptr + *ptr); und ist nicht äquivalent zu X = **ptr G. O. schrieb: > Naja, in den Rechnerarchitekturen, die ich kenne, erfolgt die > Adressberechnung durch Addition. Ich vermute, dass es in dem Beispiel > ebenso gemeint ist. Wenn eine Adresse aus einer Summe von Werten ermittelt wird, dann wird üblicherweise auf 2 Arten formuliert. Entweder durch Komma: lda table,x -- 6502, 6800 mov r1,(r2,4) -- diverse RISC, ggf auch [r2,#4] oder durch + mov ax,[si+4] -- Intel 8086 wobei Intel eckige Klammern verwendet, sie deutlich von runden Klammern in Rechenausdrücken zu unterscheiden, also mox ax,[si+(N*2)] Eine Notation (y) steht aber mE immer für etwas im Speicher an der durch Y angegebenen Adresse. Was je nach Notation das Datum oder eine weitere Adresse sein kann, s.o.
Marc V. schrieb: > Neverever schrieb: >> Lösung ist: >> >> Indexregister Y effektive Adresse Akkumulator A >> 0404 0412 01 >> 041E 041F 04 >> 0399 0404 12 >> 040D 0416 92 > > Nein, ist es nicht, jedenfalls nicht mit der angegebenen Tabelle. Doch, wenn man das Ganze immer modulo2 betrachtet. So wie es auch in Hardware realisiert würde. Daher ist es egal, ob nun das Low- oder Highbyte adressiert wurde.
Neverever schrieb: > Doch, wenn man das Ganze immer modulo2 betrachtet. So wie es auch in > Hardware realisiert würde. Magst Du versuchen zu erklären, was Du damit meinen willst? Das letzte Beispiel (Y=040D) genügt dafür.
A. K. schrieb: >> Gab es nicht was doppelt indiziertes (addr+x)+y? In einer anderen >> Architektur? > > 6502, aber entweder EA=(addr+x) oder EA=(addr)+y, und addr,x,y mit 8 Bit Der Ur-6502 kannte auch (addr16), also absolut indirect, aber nur als Adresse für JMP. Der 65C02 hatte dann auch (addr8) für indirekte Adressierung über einen Zeiger in der Zeropage ohne Indexregister.
Neverever schrieb: > Doch, wenn man das Ganze immer modulo2 betrachtet. So wie es auch in > Hardware realisiert würde. Daher ist es egal, ob nun das Low- oder > Highbyte adressiert wurde. Witzig....
Soll heissen: Wenn das exakt so mit LDA ((Y)) die Aufgabe ist, dann kann ich diese Notation eigentlich nur als vorsätzliche Abweichung von bestehenden Architekturen interpretieren. Damit der Lernende nicht einfach abschreibt, sondern denkt.
Neverever schrieb: > Doch, wenn man das Ganze immer modulo2 betrachtet. So wie es auch in > Hardware realisiert würde. Daher ist es egal, ob nun das Low- oder > Highbyte adressiert wurde. Noch einmal bitte, aber langsam.
Danke für die Antworten. Die Aufgabe ist im Übrigen aus dem Buch "Mikrorechner-Technik" von Helmut Bähring und nicht von der Fernuni Hagen. Ich hatte die Aufgabe gekürzt, weil die ersten beiden Teilaufgaben irrelevant waren. Laut den Lösungen im Buch ist das bereits genannte Ergebnis richtig: >> 0404 0412 01 >> 041E 041F 04 >> 0399 0404 12 >> 040D 0416 92 Kann mir jemand einen Tipp geben, warum zum Beispiel in der ersten Zeile 01 in den Akkumulator geladen wird. Ich habe mich etwas in die indirekte Register-Adressierung eingelesen, um der es in der Aufgabe geht, aber so ganz habe ich den Zusammenhang zum Ergebnis immer noch nicht verstanden.
user555 schrieb: > Kann mir jemand einen Tipp geben, warum zum Beispiel in der ersten Zeile > 01 in den Akkumulator geladen wird. Das steht doch mittlerweile deutlich genug im Thread.
Wenn das Ergebnis richtig sein soll, enthält die Aufgabe einen Fehler.
Rufus Τ. F. schrieb: > Wenn das Ergebnis richtig sein soll, enthält die Aufgabe einen Fehler. Kein Fehler, nur fehlende Information: Zwischen der 3. und der 4. Zeile wurde die Maschine auf big endian umgeschaltet.
Ich bin leider noch absoluter Anfänger auf dem Gebiet, deshalb habe ich manch lange Antworten nicht ganz verstanden, und in vielen Antworten wurde nur auf die Art der Adressierung hingewiesen. Ansonsten habe ich nochmal über den Post von Neverever nachgedacht: "Das Indexregister Y zeigt auf die Anfangsadresse eines Speicherwortes aus zwei Bytes. Dieses Speicherwort gibt im Little-Endian-Format die Adresse des Bytes im Speicher an, mit dessen Wert der Akkumulator A geladen werden soll." Aber ich verstehe dann noch nicht, warum zum Beispiel 01 der Wert der Adresse ist.
user555 schrieb: > Aber ich verstehe dann noch nicht, warum zum Beispiel 01 der Wert der > Adresse ist. Es gibt Menschen, die nicht in der Lage sind, Aufgabe von vorne nach hinten zu lesen und Schritt für Schritt nachzuvollziehen. Sondern die wild rumspringen, ganzheitlich denken oder hinten anfangen. Das wäre ein miserable Aussicht auf diesen Fachbereich. Aber muss ja nicht so sein. Also geh seine Beschreibung von vorne nach hinten durch und kommentiere, was dir dazu in den Sinn kommt.
:
Bearbeitet durch User
user555 schrieb: > Die Aufgabe ist im Übrigen aus dem Buch "Mikrorechner-Technik" von > Helmut Bähring und nicht von der Fernuni Hagen. Dann muß doch irgendwo im Buch stehen wie diese doppelte Klammerung zu verstehen ist.
A. K. schrieb: > Kein Fehler, nur fehlende Information: Zwischen der 3. und der 4. Zeile > wurde die Maschine auf big endian umgeschaltet. Nö, auch das erklärt es nicht, wie die effektive Adresse 0416 werden soll.
1 | Y = 040D |
2 | |
3 | 040C 16 |
4 | 040D 04 <-- hierhin zeigt Y |
5 | 040E 06 |
6 | 040F 03 |
Bei big-Endian-Adressierung wäre die effektive Adresse 0406, aber niemals 0416.
Rufus Τ. F. schrieb: > Bei big-Endian-Adressierung wäre die effektive Adresse 0406, aber > niemals 0416. Ok, aber an 0406 steht auch 92. Fuzzy logik for dummies. ;-)
:
Bearbeitet durch User
user555 schrieb: > Aber ich verstehe dann noch nicht, warum zum Beispiel 01 der Wert der > Adresse ist. Jetzt etwas klarer ?
user555 schrieb: > Ich bin leider noch absoluter Anfänger auf dem Gebiet, deshalb habe ich > manch lange Antworten nicht ganz verstanden, und in vielen Antworten > wurde nur auf die Art der Adressierung hingewiesen. > > > Ansonsten habe ich nochmal über den Post von Neverever nachgedacht: > > "Das Indexregister Y zeigt auf die Anfangsadresse eines Speicherwortes > aus zwei Bytes. Dieses Speicherwort gibt im Little-Endian-Format die > Adresse des Bytes im Speicher an, mit dessen Wert der Akkumulator A > geladen werden soll." > > Aber ich verstehe dann noch nicht, warum zum Beispiel 01 der Wert der > Adresse ist. Das geht aus den zitierten Sätzen hervor. Welchen Satz, Teilsatz oder Begriff verstehst Du nicht? Verstehst Du den Inhalt (eines Satzes, Teilsatzes oder Begriffes) nicht oder dessen Anwendung? Es reicht nicht zu sagen: "Geht nicht" wenn Du Deinen Fehler verstehen willst. Dafür musst Du Dein Verständnis schon mit eigenen Worten darstellen.
Vielen Dank Mark für die eingezeichneten Pfeile. Jetzt habe ich es endlich verstanden mit den Akkumulatorwerten :)
user555 schrieb: > Laut den Lösungen im Buch ist das bereits genannte Ergebnis richtig: > ... >>> 040D 0416 92 Nur hat noch keiner verstanden, wie der Autor mit der im Test beschriebenen Adressierung auf die 92 als Lösung zu Y=040D kommt - auch wenn die Lösungen im Buch behaupten, dass sie so lautet.
Wolfgang schrieb: > Nur hat noch keiner verstanden, wie der Autor mit der im Test > beschriebenen Adressierung auf die 92 als Lösung zu Y=040D kommt - auch > wenn die Lösungen im Buch behaupten, dass sie so lautet. Offenbar sind die Behauptungen im Buch bzw. die Aufgaben schlicht fehlerhaft - schaut Euch z.B. die Kundenrezensionen auf Amazon an: https://www.amazon.de/Mikrorechner-Technik-L%C3%B6sungen-eXamen-press-Helmut-B%C3%A4hring-ebook/dp/B00Q8LLIGU (Wenn man für solches Lehrmaterial Geld ausgegeben hat, müsste man das eigentlich konsequent zurück verlangen. Hat man bei Büchern nicht auch einen Anspruch auf Mängel-freie Ware?)
:
Bearbeitet durch User
Rufus Τ. F. schrieb: > Die Aufgabenstellung ist ohne den weitere Kontext zu kennen nicht > eindeutig zu beantworten. Für ist klar das doppelte Indirektion gemeint ist, weil a) Zwei Klammern werden keinesfalls einfache Indirektion bedeuten. Und von dreifacher Indirektion habe ich noch nie etwas gehört. b) Die Frage nach der effektiven Adresse wäre bei einfacher Indirektion sinnlos. > Offenbar sind die Behauptungen im Buch bzw. die Aufgaben schlicht > fehlerhaft - schaut Euch z.B. die Kundenrezensionen auf Amazon an Es gibt dort genau zwei Kundenrezensionen: "Die vielen Layoutfehler (z.B. wahllos eingestreute Leerzeichen) im Buch könnte ich noch tolerieren. Aber die inhaltlichen Fehler machen die Aufgabensammlung zu einer Katastrophe: kaum eine Lösung, die keine Rechenfehler o.ä. enthält. Man muss ständig auf der Hut sein und fragt sich, ob man selbst oder der Autor sich verrechnet hat." "Die Lösungen zu den gut gewählten Aufgaben sind zwar recht verständlich, leider aber oft fehlerhaft. Zur Klausurvorbereitung ist dieses Buch daher ohne weitere Hilfe nicht geeignet." Ist ein bisschen traurig, wenn nach 13 Jahren keine weitere (bessere) Bewertung bekommt. Alle anderen Shops haben gar keine Bewertung vorzuweisen.
Ob sich "neverever" nochmal meldet und das Original seiner Prüfungsaufgabe vorstellt? Ich kann mir kaum vorstellen, daß eine Fernuni sich so einen Schnitzer in einer Aufgabe erlaubt.
Rufus Τ. F. schrieb: > Nö, auch das erklärt es nicht, wie die effektive Adresse 0416 werden > soll. Es ist eben immer eine Krux mit dem sauberen und sachgerechten Darstellen von Aufgabenstellungen, wenn der Lehrende meint, den Studenten eine theoretische Maschine vorsetzen zu müssen. In solchem Falle müßte der gute Mann seinen Studenten zuvörderst die zugrundeliegende Syntax erklären. Aber so ein lapidares LDA((Y)) ist schlichtweg ein Furz, da in der Aufgabe undefiniert. Ebenso ist die Funktion eines Indexregisters unerklärt. Mit einer Menge an Gutmütigkeit könnte man vermuten, daß LDA((Y)) dieses heißt: Lade den 16 Bit Wert, der auf Adresse von Y (lowteil) und Y+1 (highteil) in das Adressierregister und benutze die sich daraus ergebende Adresse als diejenige, von der der dort stehende 8 Bit Wert gelesen und in den Akku befördert werden soll. Mit etwas Erfahrung im Umgang mit solchen halbgebackenen Lehrern sollte man jedoch vermuten, daß dieser von Klammerungen und den gefühlten 1000 Schreibweisen in Assembler der letzten 50 Jahre nicht wirklich Ahnung hat - und deswegen sowas wie (beim Z80) etwa sowas meint: LD A,[HL] Also lade den Akku mit dem Byte, auf das das 16 Bit Register(paar) HL zeigt. Mit etwas Skepsis fragt man sich jedoch, ob so ein Lehrer überhaupt soviel Rest-Latein in den Knochen hat, daß er mit dem Wort "Index" überhaupt etwas Sinnvolles assoziieren kann. Eine typische indizierte Adressierung sieht nämlich etwa so aus: LD dest, basis, index was bedeutet: - basis ist eine feste Adresse im Code oder ein Register, quasi die Adresse einer Feldes - index ist ein Register zum Auswählen eines Elements in diesem Feld - dest ist das Zielregister, wo das Geladene hinein soll Also mal in anschaulicherer Form LD A,(BR[Y]) Ja, der Sinn des Ganzen ist vermutlichst, den Studenten die verschiedenen Adressierungsarten beizubringen, was im konkreten Beispiel jedoch mehr Verwirrung als Klärung bewirkt. Trösten wir uns damit, daß eben nicht jeder das Talent zum Lehren besitzt. Schon von Heinrich Hertz wurde gesagt, daß er todunglücklich darüber war, daß er als Uni-Professor erhebliche Probleme damit hatte, den Studenten den Lehrstoff rüberzubringen - forschen konnte er prima, lehren jedoch nicht. W.S.
W.S. schrieb: > In solchem Falle müßte der gute Mann seinen Studenten zuvörderst die > zugrundeliegende Syntax erklären. Da wir nur die Aufgabenstellung selbst, nicht aber das vorher vermittelte Wissen kennen, können wir auch nicht wissen, ob nicht genau das geschehen ist. Und daß sich die Syntax nicht unbedingt am Z80-Assembler oder einem anderen verbreiteten Assembler orientiert, ist für ein Lehrbuch auch vollkommen in Ordnung, da kann auch ein virtueller Prozessor mit ausgedachtem Befehlssatz verwendet werden. Die Transferleistung, dann in der Realität andere Architekturen und andere Assembler mit jeweils individueller Syntax nutzen zu können, ist etwas, was von den Studenten jeweils verlangt werden kann; genau das sollen sie schließlich lernen und nicht eine mehr oder weniger willkürlich ausgesuchte Architektur. Das ist also sogar sinnvoll, daß weger Z80-, x86- noch 68xx-Assembler verwendet wurde, denn dieser würde diejenigen bevorteilen, die sich genau damit schon beschäftigt haben, und diejenigen benachteiligen, die sich mit anderen Assemblern auseinandergesetzt haben. Sofern der Dozent die Adressierungsarten seines virtuellen Prozessors und die Syntax seines virtuellen Assemblers erklärt hat, ist das also vollkommen in Ordnung. Nicht in Ordnung ist der Fehler für die letzte Zeile, bei der entweder der für Y zu verwendende Wert oder der im Hexdump an der Adresse 040E stehende Wert fehlerhaft ist. Die Aufgabe stammt aus diesem Buch hier: https://www.springer.com/de/book/9783642122910 Da es von dem Buch verschiedene Auflagen gibt, müsste man noch untersuchen, aus welcher die Aufgabenstellung stammt, die der Threadstarter veröffentlicht hat. Diese enthält auch die "interessante" Schreibweise Akkumulartor. Vielleicht ist das ja aus der ersten Auflage von 2002: https://www.springer.com/de/book/9783662125007 > Dr. Helmut Bähring lehrt an der FernUniversität Hagen, > Praktikum & Werkstatt Technische Informatik (PWTI) Das erklärt auch den Beitrag von "neverever". Aber auch hier ist interessant, ob der Fehler, den die Aufgabe am Threadbeginn enthält, in den Lehrunterlagen enthalten ist, die "neverever" vorgesetzt bekommen hat, oder ob das alles zwischenzeitlich korrigiert wurde.
W.S. schrieb: > Trösten wir uns damit, daß eben nicht jeder das Talent zum Lehren > besitzt. Schon von Heinrich Hertz wurde gesagt, daß er todunglücklich > darüber war, daß er als Uni-Professor erhebliche Probleme damit hatte, > den Studenten den Lehrstoff rüberzubringen - forschen konnte er prima, > lehren jedoch nicht. Mal abgesehen vom Talent, hat es noch mit dem jeweiligen Kompetenzlevel der Partner zu tun Siehe: https://de.wikipedia.org/wiki/Kompetenzstufenentwicklung
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.