MRT - Versuch Assembler

Antworten
Benutzeravatar
ThatGuy
Beiträge: 537
Registriert: 23.02.2011 11:59
Geschlecht: männlich
Matrikel: 2010

MRT - Versuch Assembler

Beitrag von ThatGuy » 07.12.2011 10:29

Funktioniert eigentlich bei irgendjemandem der Matrixdisplay-Emulator hier aus dem Forum? Habe den auf zwei Rechnern unter WinXP ausprobiert. Ich kann zwar das Programm starten, doch entweder passiert darin nach dem Laden der Assemblerprogramm-Executable gar nichts oder es kommt nur Murks.

Dass es auf meinem Notebook nicht geht, liegt wahrscheinlich daran, dass es über keinen Parallelport verfügt und daher die Aufrufe der Portadressen 0x378-0x37A ins Leere laufen. Bei meinem Desktop-Rechner tut sich auf dem Display immerhin etwas, es ist allerdings nicht das Muster, was ich erwarten würde. Selbst mit dem in der Anleitung vorgegebenen Beispiel Einzelpunkt leuchten mehr LEDs als beabsichtigt. Läuft evtl. der Rechner zu schnell für das Ding? Wenn ich mir im Programm die Daten ansehe, die über den Parallelport laufen, scheint das Ganze trotz der Warteschleifen im Programm in wahnsinnigem Tempo abzulaufen.

Benutzeravatar
Hans Oberlander
Beiträge: 2570
Registriert: 19.12.2006 22:22

Re: MRT - Versuch Assembler

Beitrag von Hans Oberlander » 07.12.2011 11:09

Ging bei mir schon damals vor vielen Jahren nicht.

Benutzeravatar
ThatGuy
Beiträge: 537
Registriert: 23.02.2011 11:59
Geschlecht: männlich
Matrikel: 2010

Re: MRT - Versuch Assembler

Beitrag von ThatGuy » 07.12.2011 14:10

Gut zu wissen. Da brauche ich mich mit dem Ding also nicht weiter zu beschäftigen. Sollte ich mal irgendwann ganz viel Zeit und Muße haben, werd' ich eventuell einen gescheiten Emulator schreiben. Sollte eigentlich nicht so kompliziert sein. Immerhin klappt bei mir das Debuggen mit CodeView auf der Live-DVD. Damit lässt sich das Programm wenigstens mal vorher durchspielen.

Benutzeravatar
ThatGuy
Beiträge: 537
Registriert: 23.02.2011 11:59
Geschlecht: männlich
Matrikel: 2010

Re: MRT - Versuch Assembler

Beitrag von ThatGuy » 29.03.2012 09:40

ThatGuy hat geschrieben:[...], werd' ich eventuell einen gescheiten Emulator schreiben. Sollte eigentlich nicht so kompliziert sein.
Da hatte ich damals offensichtlich zu kurz gedacht. Nachdem ich mich inzwischen noch mal dem Thema gewidmet und einen Emulator - sowohl in Assembler als auch mit Delphi - zu schreiben versucht habe, musste ich feststellen, dass es weniger trivial ist als anfänglich vermutet. Bekomme mit meinen Emulatoren das selbe Ergebnis wie mit dem aus dem Forum.

Der Knackpunkt ist schlicht die Geschwindigkeit. Während vom Prozessor das Assembler-Programm zur Darstellung des Pfeils abgearbeitet wird, kann nicht gleichzeitig der Emulator laufen und den Parallelport abfragen. Dazu müsste man den Emulator wirklich in Echtzeit parallel zum Laufen kriegen. Das scheint meinen Versuchen nach aber nicht mal mit Multitasking bzw. Multiprocessing auf Mehrkernrechnern zu klappen. Musste für einigermaßen erkennbare Ergebnisse die Darstellung des Pfeils extrem verlangsamen.

So, wie ich das derzeit einschätze, düfte die einfachste Lösung ein Nachbau des Matrixdisplays, z.B. mit einer Mikrocontroller-Schaltung sein. Von einer Umsetzung in Programmcode würde ich dagegen eher abraten. Macht also nicht noch mal den selben Fehler wie ich und probiert da unnötig herum. Das lohnt sich nur, falls es jemand auf dem Gebiet richtig drauf hat und eventuell bessere Ansätze kennt.

Jenen, die ihr Assembler-Programm trotzdem gerne vorher ausprobieren möchten, sei der Debugger CodeView auf der Live-CD ans Herz gelegt. Hat mir zumindest sehr geholfen unser Programm nachzuvollziehen. Ansonsten einfach mal ganz dreist versuchen sich an einem Praktikumstermin später an einen freien Platz zu setzen und das Ding zu testen. Unter Umständen erwischt man einen netten Betreuer, der da nix dagegen hat (man muss ja nicht unbedingt erwähnen, dass man den Versuch noch vor sich hat. Kann schließlich auch nachträglich noch was ausprobieren wollen).

juri
Beiträge: 3
Registriert: 21.10.2012 11:01

Re: MRT - Versuch Assembler

Beitrag von juri » 08.01.2014 15:41

Schade, dass das damals nicht geklappt hat. Wir haben allerdings auch mit CodeView ein Problem.

Der Assembler läuft problemfrei durch, CodeView funktioniert auch soweit. Unser Problem liegt aber in den Werten der Variablen.
Wir haben z.b. ein Byte entsprechend der Anleitung "Bitmuster", in dem binär 8 (also 1000b, 08h) stehen soll. Das Listfile vom Assemblieren sagt uns das auch. Im Code steht

Code: Alles auswählen

BITMUSTER	DB	00001000b
Im CodeView in der Speicheransicht steht nun aber was komplett anderes im Speicher, es wird beim Befehl

Code: Alles auswählen

MOV AH, BITMUSTER
auch falsch übernommen. Woran kann das liegen? Schon jemand ähnliche Probleme gehabt? Egal welchen Wert wir zuweisen, es steht immer der selbe, falsche Wert an der Speicherstelle...
Analog verhält es sich mit anderen zu speichernden Werten.
Hat jemand eine Idee?

Blade
Beiträge: 11
Registriert: 22.06.2009 18:24
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2008

Re: MRT - Versuch Assembler

Beitrag von Blade » 17.01.2014 23:25

Wenn ihr es nicht schon gelöst habt, hätte ich folgende Idee:
Wenn es alle Variablen betrifft, dann könnte die Zuweisung der Adresse des Datensegments am Anfang des Hauptprogramms fehlen:

mov dx, @data
mov ds, dx

Mit diesen zwei Zeilen werden die Variablen dem Compiler erst bekannt gemacht.

Antworten

Zurück zu „3. Semester: Diskussionen“