Hallo. Ich arbeite an einer Ampelsteuerung im Assembler 8086, jedoch ein Problem besteht. Obwohl der Code funktioniert, möchte ich eigentlich, dass der Interrupt ISR8 nur die Generierung des Zeittakts beinhalten soll. Jedoch funktioniert es nicht ordentlich, wenn ich die Tag <-> Nacht Umschaltung und die anderen Funktionen rausnehme und in den Hauptprogramm übertrage. Habt ihr eine Idee?
Nemopuk schrieb: > Bernd S., bist du es? Würd' ich auch sagen. Das typische Muster ist da: inkompetente Verwendung uralter Assembler-Fragmente.
Fred schrieb: > im Assembler 8086 ahhhhhh brrrrrrr, wer tut sich sowas an ? Da fehlt bestimmt ein segment override prefix.
Klingt nach Laborpraktikum Mikrocontrollertechnik oder wie das damals hiess. Aber ich haette gedacht so nach 25Jahren waere die Hardware mal langsam Geschichte. Irgendwie muss ist gerade an das Weston-Normalelement im Messtechnikpraktikum im wurmstichigen Holzgehaeuse denken das nix gewogen hat weil da einer einen modernen Spannungsregler eingebaut hatte.... Vanye
Fred schrieb: > Ich bin neu mit der Sache. Hilfe wäre schon nett Das heißt, du fängst wirklich gerade NEU mit ASM8086 an? Warum zur Hölle? Ich kann die Nostalgie verstehen, mit altem Zeugs nochmal zu arbeiten, da kommen Erinnerungen hoch, für mich an meine Zeit 1989 an der Uni. Aber ein Neuanfang, da würde ich anderes empfehlen. Wenn das Ergebnis dein Ziel ist, lass dir hier eine geeignete Plattform empfehlen. Ich kenne mich mit dem Ding nicht aus, aber glaube Arduino wäre geeignet. Simpel, schnell in Betrieb und nach wenigen Minuten erste Erfolgserlebnisse. Und am Ende kriegt man sogar überraschende Integrationen hin, ohne viel Arbeit. Und noch dazu viel Unterstützung, die sitzt zum 8086 eher schon beim Entenfüttern ;-)
Ich habe vor 40 Jahren mit Assembler mein Geld verdient. Die Module waren auch oft an die 1000 Zeilen lang. Pflicht war allerdings, dass jede Zeile kommentiert wurde, so dass man verstehen kann, warum ein Wert in ein Register geschrieben wird. Das ist bei diesem 20 Zeiler nicht der Fall. z.B. add cs:index, 2 Warum 2? Ok, ist die kleinste Primzahl. Aber warum nicht 17? Fazit: mit so einem unkommentierten Sourcecode beschäftige ich mich nur 10 Sekunden. Dann ist der im Müll.
Vanye R. schrieb: > Aber ich haette gedacht so nach 25 Jahren waere die Hardware mal langsam > Geschichte. Der 8086 schon viel länger Geschichte.
:
Bearbeitet durch User
Nun, im Geschichtsunterricht musste ich mal sowas wie die Schlacht bei den Termophylen, oder wie man das immer schreibt lernen. das hat mich aber sowas von gar nicht interessiert, bringt auch nichts für die weitere Zukunft. Assembler auf einem Fossilprozessor ist da sinnvoller, sich damit zu beschäftigen. Die heutigen OS machen das im Hintergrund, aber es ist eben interessant, wie da die Daten verschoben werden. Ich mag Assembler nicht, ebenso wie C mit den blöden Klammern {}. Habe mal einen Einplatinenrechner mit einem Z80 geschenkt bekommen, den man mit einer Tastatur von 1-9-A-F, also Hex programmieren konnte. RS232 hatte der auch, hatte aber nur einen TI99/4A und war damals noch ahnungslos. EDTASM habe ich mal auf dem Gymnasium für den Z80 auf dem Tandy gelernt, aber Basic war für mich immer intuitiver als ASM. Als ich dann mal meinen ersten PC (486/sx25) kaufte, habe ich den Einplatinenrechner mal wieder aktiviert und konnte da auch Programme draufschicken. Wolfgang R. kennt den bestimmt, habe aber gerade kein Foto davon. Jedenfalls gab es da keine grossen Möglichkeiten, und der Rechner verschwand wieder im Lager. Dann war lange Zeit nichts mit Prozessoren, bis ich zufällig auf den ATMEL stiess, und das in Verbindung mit Bascom. Da war ich wieder zu Hause. Damit komme ich gut zurecht, da ich eben in der Schule neben .asm auch LNW-Basic gelernt habe und auf dem TI99 dem nicht unbedingten Konkurrenten des C64 eben auch Basicprogramme schrieb. In C müsste ich mich erst wieder reinarbeiten. OK, viel Text. Wer mit dem Z80 oder vorherigen Prozessoren zu tun hatte, welche mit .asm programmiert wurden, der darf das doch auch weiter betreiben, und wenn sich heute jemand für das Thema interessiert, warum sollte er nicht hier mal anfragen, ohne gleich eine Breitseite zu bekommen, dass .asm schlecht ist, oder nicht mehr zeitgemäss?
Thomas S. schrieb: > Nun, im Geschichtsunterricht musste ich mal sowas wie die Schlacht bei > den Termophylen, oder wie man das immer schreibt lernen. Sowas kann man googlen. > das hat mich > aber sowas von gar nicht interessiert, bringt auch nichts für die > weitere Zukunft. So, wie alle anderen Dein Text hier?!
Ich weiss natuerlich nicht, warum Du Dir unbedingt den 8086 antun willst. Aber es gibt Leute, die stehen auf Schmerz... Damals (TM) hatten die Borland-Produkte einen guten Ruf (Assembler, Debugger, Pascal und C). Der Debugger war (um Klassen) besser als die Produkte von Microsoft. Die Borland-Produkte findet man z.B. bei Archive.org. P.S.: Der Assembler konnte auch MASM-Quellen verarbeiten, war damals ein USP (Unique selling Point)
Fred schrieb: > Obwohl der Code funktioniert Na wenn Du das sagst. Keinerlei Funktionsbeschreibung, keine Kommentare, wie soll das jemand verstehen, der nicht in Deinen Kopf schauen kann? Wieviel Ampeln, wieviel Tasten, wie werden die angesteuert, wie soll der konkrete Ablauf sein. Fragen über Fragen. Läuft das Bare Metal oder muß man eine .com oder .exe erzeugen? Der Titel ist aber ein schönes Clickbait, da schauen bestimmt viele völlig verdutzt rein.
Fred schrieb: > Ich bin neu mit der Sache. Hilfe wäre schon nett Ich fürchte, da kommst Du 30 Jahre zu spät, jemanden zu finden, der sich damit noch auskennt. Ich kann mich ganz dunkel daran erinnern, daß es mal in den Computerzeitschriften Listings gab, die man in Debug eintippen mußte. Weitaus bessere Chancen hättest Du mit einen Arduino Sketch (.ino). Dann könnte man sogar kleine LED-Ampeln anschließen und als Kreuzungmodell anordnen.
> Der 8086 schon viel länger Geschichte.
Aber so im Unibetrieb halten sich so alte Sachen manchmal laenger. Und
ehrlich waere ich Professor dann wuerde es da auch nur so alte Sachen
geben. Aus zwei Gruenden:
1. Oftmals viel besser dokumentiert weil das damals halt Standard war
und Buecher mit Liebe und Sachverstand geschrieben wurden. Wenn man
lernen will geht das damit besser als mit einem hingeschluderten BOD von
Amazon.
2. Weil heute exotisch, finden die Studenten da nix mehr so einfach im
Internet wo sie abschreiben koennen. Ich wuerde jetzt z.B mal nach
Ampelsteuerung 8086 suchen und wenn ich dann hier geposteten Source
finde der danach 1:1 in der Ausarbeitung auftaucht dann wuerde der
Student bei mir antanzen und haette dann fuenf schlimme Minuten...
Vanye
Peter D. schrieb: > Na wenn Du das sagst. > Keinerlei Funktionsbeschreibung, keine Kommentare, wie soll das jemand > verstehen, der nicht in Deinen Kopf schauen kann? Hat doch prima funktioniert. Neu angemeldet, ein Stück uralten 8088 Code reingeworfen und schon läuft der Thread. Mein Trollometer steht am Anschlag dass sich die Nadel schon verbiegt (Ist noch analog).
Rahul D. schrieb: > So, wie alle anderen Dein Text hier?! Muss ich dich nun mit Plural ansprechen, da du dich mit allen anderen identifizierst? Das werde ich mit Sicherheit nicht machen, und antworten werde ich dir auch nicht mehr hier in diesem Thread, um da diesen nicht zu OT zu leiten, wie es normalerweise hier so üblich ist.
Vanye R. schrieb: >> Der 8086 schon viel länger Geschichte. > > Aber so im Unibetrieb halten sich so alte Sachen manchmal laenger. Und > ehrlich waere ich Professor dann wuerde es da auch nur so alte Sachen > geben. Aus zwei Gruenden: > > 1. Oftmals viel besser dokumentiert weil das damals halt Standard war > und Buecher mit Liebe und Sachverstand geschrieben wurden. Wenn man > lernen will geht das damit besser als mit einem hingeschluderten BOD von > Amazon. Auf Papier... > 2. Weil heute exotisch, finden die Studenten da nix mehr so einfach im > Internet wo sie abschreiben koennen. Ich wuerde jetzt z.B mal nach > Ampelsteuerung 8086 suchen und wenn ich dann hier geposteten Source > finde der danach 1:1 in der Ausarbeitung auftaucht dann wuerde der > Student bei mir antanzen und haette dann fuenf schlimme Minuten... Bei uns flogen die Lösungen auf einem Fachschaftserver rum. Das wussten auch die Profs. Wir hatten als Mikrocontreoller-Boards zur Übung damals welche mit 80C535. Da steckten AVR noch in den Kinderschuhen. IDE für PIC waren auch horrende teuer. Da kauft man als Hochschule nicht einfach mal eine handvoll neuer Systeme. Dazu kam dann noch das KnowHow der Laborings.
Fred schrieb: > Obwohl der Code funktioniert Tut er nicht. Fred schrieb: > Habt ihr eine Idee? Nach Ablauf der Zeit (sekunde) für einen Zustand (index) springst du aus der Interrupt-Routine isr_8 nach main an statt return from interrupt RETI. Damit läuft dein stack sonstwohin. Klaus F. schrieb: > wer tut sich sowas an ? Für Assembler nimmt man wohl besser einen einfachen Prozessor. Eben was 50 Jahre altes wie 8086. Bloss keinen modernen Befehlssatz wie AMD64. Noch einfacher wäre wohl 6502 oder 68HC11 oder 8051, aber da hat man keine Plattform die Assembler Editor etc enthält. Rahul D. schrieb: > welche mit 80C535 Brt, DER ist wirklich Obfurscation^8
Michael B. schrieb: > Nach Ablauf der Zeit (sekunde) für einen Zustand (index) springst du aus > der Interrupt-Routine isr_8 nach main an statt return from interrupt > RETI. Respekt Michael! Michael B. schrieb: > Noch einfacher wäre wohl 6502 oder 68HC11 oder 8051, aber da hat man > keine Plattform die Assembler Editor etc enthält. Ich habe vor etwa 10 Jahren meien Einstieg in uC mit 8051 und der "Toolchain" Notepad++ und Asem51 gemacht. Und war sehr begeistert von den Mögklichkeiten. Bis ich dann C lernte.
Gunnar F. schrieb: > Ich habe vor etwa 10 Jahren meien Einstieg in uC mit 8051 und der > "Toolchain" Notepad++ und Asem51 gemacht. Und war sehr begeistert von > den Mögklichkeiten. Ja, ich fand dessen Befehlssatz mit Abstand am besten durchdacht. MUL, DIV konnte kaum eine anderer 8-Bitter und die Bitbefehle, sowie Tabellenzugriffe (MOVC A, @A+DPTR) erleichtern das Programmieren erheblich. Auch Schleifen und Vergleiche (DJNZ, CJNE) ermöglichen sehr kompaktes Programmieren. Sehr schön war auch der AT89C2051 für kleinere Projekte. Als ich mir viel später mal die PIC12 Familie anschaute, überkam mich das kalte Grausen.
Michael B. schrieb: > 8051, aber da hat man > keine Plattform die Assembler Editor etc enthält. Gibt es als Freeware zum Download: https://www.batronix.com/shop/software/uC51/c-compiler.html
Peter D. schrieb: > Als ich mir viel später mal die PIC12 Familie anschaute, überkam mich > das kalte Grausen. Seit mehr als 15 Jahren programmiere ich Pic16 und Pic12, sogar Pic10. Noch niemals habe ich dabei auch nur eine Zeile in Assembler codiert. Die C compiler sind bereits erfunden. Der xc8 passend zu Mplabx funktioniert und ist in den niedrigen Optimierungsstufen kostenfrei. Dazu komme ich bisher mit dem "alten" Pickit3 aus, ein Originales sowie der fast identisch aussehende Klon funktionieren beide.
Peter D. schrieb: > Michael B. schrieb: >> 8051, aber da hat man >> keine Plattform die Assembler Editor etc enthält. > > Gibt es als Freeware zum Download: > https://www.batronix.com/shop/software/uC51/c-compiler.html Ich meine: auf dem uC. Nicht Cross. Bei der Gelegenheit: "This article is no longer available."
:
Bearbeitet durch User
Hallo,. Michael B. schrieb: > Ich meine: auf dem uC. Nicht Cross. Gab es das mal, eine Entwicklungsumgebung, die auf einem 8-Bit-Controller lief? Michael B. schrieb: > Bei der Gelegenheit: "This article is no longer available." Kann aber immer noch heruntergeladen werden. rhf
Beitrag #7908183 wurde von einem Moderator gelöscht.
Roland F. schrieb: > Gab es das mal, eine Entwicklungsumgebung, die auf einem > 8-Bit-Controller lief? Es gibt es zumindest auf dem 8088, den er als Assemblertarget gewählt hat. Da heutige uC dicker sind als alte PC ist eher die Umgebung (hat der uC Tastatur und Bildschirm?) das Problem.
Vanye R. schrieb: > Aber so im Unibetrieb halten sich so alte Sachen manchmal laenger. a. weil sie es müssen b. weil Berufungszulagen auch gerne mal widerrufen werden abhängig von Haushaltskasse. c. weil manche mit alten Messmitteln erscheinen die sie vorher schon hatten.
Michael B. schrieb: > Bei der Gelegenheit: "This article is no longer available." Roland F. schrieb: > Kann aber immer noch heruntergeladen werden. Richtig runterladen geht noch, man kann nur nicht mehr die Vollversion kaufen. Da gibt es aber Medizin. Soweit mir bekannt ist ist Herr Wickenhäuser vor einigen Jahren verstorben.
Wenn ich denn doch mal in den Code vom Anfang rein schaue, fällt mir gleich auf, dass da im Interrupt fleißig Register überschrieben werden, ohne sie zu sichern. Dadurch ändern sich diese für das Hauptprogramm völlig unvorhersehbar. Dabei kommt eigentlich nie was raus, das etwas taugt. Und sagt nicht : mein C-Compiler hätte das für mich gemacht. Ja, das schon, aber beim Zugriff auf globale Variablen aus mehreren Threads schießt sich der, der nicht gelernt hat drauf zu achten, genauso ins Knie.
Thomas Z. schrieb: > Soweit mir bekannt ist ist Herr Wickenhäuser > vor einigen Jahren verstorben. Kann aber nicht lange her sein. https://de.linkedin.com/in/juergen-wickenhaeuser-06a1411a9
Flunder schrieb: > Wenn ich denn doch mal in den Code vom Anfang rein schaue, fällt mir > gleich auf, dass da im Interrupt fleißig Register überschrieben werden, > ohne sie zu sichern. nun ja er benutzt pusha / popa zum retten der Register ist soweit ich mich erinnere ab 186 /V40 verfügbar. Das kann also schon funktionieren.
Peter D. schrieb: > Als ich mir viel später mal die PIC12 Familie anschaute, überkam mich > das kalte Grausen. So wie mich der Einstieg in python (wobei ich PIC auch nicht wirklich ag).
Es wäre gut, wenn der Fred sich an seiner eigenen Diskussion beteiligen würde.
Hi >Es wäre gut, wenn der Fred sich an seiner eigenen Diskussion beteiligen >würde. Bei den Beiträger hier im Forum wundert mich das gar nicht. MfG Spess
Michael B. schrieb: > Noch einfacher wäre wohl 6502 oder 68HC11 oder 8051, aber da hat man > keine Plattform die Assembler Editor etc enthält. Was immer Du mit "Plattform" sagen willst. Für den 6502 hatte ich schon auf dem cbm3032 einen Makroassembler. Später auch auf dem PC und dazu einen In-Circuit-Emulator von Huntsville Microsystems, staubt hier im Regal vor sich hin. Toll war das CMOS-Design, womit man den 6502 anhalten und später fortsetzen konnte, was ich mal in einer Anwendung nutzen musste. Falls "Plattform" bunte Oberflächen meint - das war zu der Zeit noch nicht verfügbar, ich habe noch am monochromen Schirm getippt. Assemblieren wurde halt per Batchdatei gesteuert, man wusste noch, was man tat. Mein erster Mikrocontroller war MC68HC805 per Makroassembler, der ist den 65xx recht ähnlich. Mit dem habe ich Aufgaben erledigt, die man Jahre später per Arduino gemacht hätte.
Fred schrieb: > dass der Interrupt ISR8 nur die Generierung des Zeittakts beinhalten > soll. Keine Ahnung, auf welcher Hardware das laufen soll. Der Kommentar "Traffic_Lights.exe" klingt nach PC, aber die Interrupts sehen gar nicht danach aus. Hab das Programm q&d umgestellt, so wie der TO es haben wollte und hoffe, dass es so funktioniert.
Thomas Z. schrieb: > Flunder schrieb: >> Wenn ich denn doch mal in den Code vom Anfang rein schaue, fällt mir >> gleich auf, dass da im Interrupt fleißig Register überschrieben werden, >> ohne sie zu sichern. > > nun ja er benutzt pusha / popa zum retten der Register ist soweit ich > mich erinnere ab 186 /V40 verfügbar. Das kann also schon funktionieren. In einem der beiden ja. Und da, wo er es benutzt, überschreibt er ES, das IMHO leider nicht mit gesichert wurde.
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.