Hoffe das passt hierhin... Habe schon überall gesucht, aber nirgendwo Hilfe bekommen. Ich möchte lernen in Maschinensprache (Hexadezimal) auf einem Pentium zu programmieren, nicht für große Programme(dafür habe ich C++;) ), sondern nur um mal zu wissen, wie das funktioniert. Habe keine Assembler Kenntnisse und möchte das auch nicht lernen, weil ja selbst Assembler schon wieder leicht vereinfacht ist (hat ja schon annähernd Schleifen). Deshalb die Frage: Kennt jemand eine Möglichkeit (am besten Tutorial im Internet) die Grundlagen zu lernen, wie Ausgabe, "Variablen", Schleifen und Vergleiche (if). Mir würde es zur Not sogar reichen, wenn ich die opcodes mit Erklärung und Parametern hätte.
Nimm Assembler. Mehr 'basic' gehts kaum. Und von dort ist es dann nur noch ein kleiner Schritt, mal noch ne Stufe tiefer zu gucken. Wobei, viel tiefer gehts echt nicht mehr.
>Wobei, VIEL tiefer gehts echt nicht mehr<
Das ist es ja gerade, ich habe in einem anderen Forum gefragt, ob man
Assembler 1:1 auf Maschinensprache übertragen kann, und da wurde mir
erklärt, dass das nicht geht, weil Assembler halt schon leicht
vereinfacht ist. Mir geht es aber halt darum die Grundlagen zu lernen.
Mit allen Sprüngen, Registern und Sonstigem. Wie gesagt, halt wenn
jemand ein Tutorial, eine Liste der Opcodes oder von mir aus auch ein
Buch kennt.
Fang trotzdem mit Assembler an. Glaub mir, die ganze HEX-Rechnerei bei einemSprung willst du dir nicht wirklich antun. Wenn du dann einige Assembler-Programme selbst geschrieben hast, kannst du ja noch immer das letzte kleine Stückchen gehen und direkt programmieren. Wobei: sinnvollerweise wirst du nicht in direkt auf Opcode Ebene programmieren, sondern im Grunde das was der Assembler macht zu Fuss erledigen. Das bringt dich aber im Verständniss nicht weiter. Assembler ist die tiefste Stufe die noch sinnvoll ist. Alles darunter ist einfach nur Masochismus.
>>Assembler 1:1 auf Maschinensprache übertragen kann, und da wurde mir
erklärt, dass das nicht geht
Das ist Quark. Assembler in Maschinensprache 1:1 zu übertragen geht
problemlos. Wenn du etwas mehr davon verstehen wirst, wirst du es auch
sehen.
Ja, ok. Kennnt denn jemand ein gutes Assembler Tutorial, in dem so "einfache" Dinge, wie "Variablen" (Speicherreservierung und Speicherorte), Schleifen und Bedingungen erklärt werden?
Hallo Wenn du noch tiefer gehen willst, dann kommst du eigentlich in den Bereich der Rechnerarchitektur - auch ein sehr interessantes Gebiet, wie zahllose Threads hier bewiesen haben. Aber um da wirklich etwas verstehen zu können, musst du Ahnung von Assembler haben. Mikrocontroller eignen sich übrigens hervorragend, um all dies wirklich zu verstehen, da sie verhältnissmässig einfach gebaut sind und du wirklich Zugriff auf alles hast, ohne dabei mit anderen Programmen, mit enorm komplexer Hardware und mit Betriebssystemen zusammenarbeiten zu müssen. Gruss Michael
Und genau das ist es. Deshalb möchte ich den ganzen Kram machen, um was über die Rechnerarchitektur zu lernen. Wollte das jetzt auch mit Assembler machen, aber alle Assembler, die ich gefunden habe sind Kommandozeilenassembler oder funktionieren nicht richtig bei größeren Programmen. Jetzt lass ich mir halt vom Assembler einzelne Befehle übersetzen. Der nächste Schritt wären dann auch Mikrocontroller. Aber bevor ich mir da was teures kaufe, probiere ich das erst mal an meiner schon vorhandenen CPU ;-)
Hallo > Der nächste Schritt wären dann auch Mikrocontroller. Aber > bevor ich mir da was teures kaufe, probiere ich das erst mal an meiner > schon vorhandenen CPU ;-) Neeeinnnn. Mach es nicht so ;-) Schau dir mal das AVR-Tutorial auf dieser Seit an - du wirst sehen, der Einstieg in die Mikrocontroller-Programmierung kostet dich etwa soviel, wie zweimal zu McDonalds. Und da funktioniert alles, du bist auch direkt auf einer (wesentlich einfacheren) Maschine (Anstatt auf einem komplexen x86er mit wenig durchsichtigem Assembler, noch weniger verständlichem Betriebssystem und einer Menge unübersichtlicher Peripherie). Glaub mir, ich hab in den ersten paar Wochen AVR-Assembler mehr über die maschinenahe Funktionsweise von Computern gelernt, als in den letzten paar Jahren programmieren! Wage es einfach, lese rege das Forum und komme halt her, wenn etwas nicht geht! Gruss Michael
Ok, probiere ich das mal. Nur habe ich wenig Erfahrung mit Platinenlöten, aber das Problem wird sich auch noch lösen lassen. Noch eine Frage, da hat mich das Tutorial wieder verwirrt: Sind Interupts im Prozessor eingebaut oder sind das Softwareprogramme, wie Funktionen?
Interrupt, aus dem lateinischen interruptus - Unterbrechung. Tritt ein Interrupt auf, so unterbricht der µC das normale Programm und macht an einer definierten Stelle weiter. Erst nachdem an dieser anderen Stelle eine bestimmte Instruktion (Return from Interrupt) ausgeführt wird, gilt der Interrupt alsabgeschlossen und die Programmausführung geht dort weiter, wo der Interruptunterbrochen hat. Für dich als Programmierer ist ein Interrupt also einfach eine Funktion, die durch ein Interrupt-Ereignis ausgelöst wird. Bei µC sind Interrupt Ereignisse eigentlich immer irgendwelche Hardware Ereignisse: Ein bestimmter Pin weschselt seinen Zustand, ein Zähler ist abgelaufen, auf der UART ist ein Zeichen eingetrudelt, etc. Zum Thema Platinenlöten. Keine Bange: Wenn du einen Lötkolben instinktiv am richtigen Ende angreifst, dann ist das kein Problem. Den µC plazierst du in einen Sockel, damit bleibt der erst mal in der Tüte wenn der Sockel eingelötet wird. Und der Rest der verbaut wird, ist nicht sonderlich empfindlich. Im Tutorial findest du die Grundschaltung: 7805, paar Kondensatoren + Widerstände, der µC. Nichts aufregendes. Wenn du dir das selbst aufbaust (und da spricht absolut nichts dagegen), dann kauf auch gleich noch ein paar LED (+ 220 Ohm Vorwiderstand für jede LED) und ein paar Schalter oder Taster mit dazu. Für die Spannungsversorgung nimmst du noch ein 8 oder 9V Steckernetzteil. Ach ja: Eine Streifenrasterplatine oder eine Lochrasterplatine und etwas Draht um die Verbindungen herzustellen wirst du noch brauchen. Um den µC zu programmieren, brauchst du noch einen Programmer. Im einfachsten Fall sind das 3 Widerstände die in ein Kabel von der parallelen Schnittstelle eingelötet werden. Du brauchst daher noch einen Stecker für die Parallele, etwas Draht, die Widerstände und eine 10 pol. Steckerleiste + Schneidklemmbuchse ist kein Fehler. Der Draht ist dannsinnvollerweise als 10 pol Flachbandkabel ausgeführt. Einfacher ist natürlich ein Experimentierboard wie zb den MyAvr. Der Bausatz beinhaltet alle Bauteile. Dazu noch Steckernetzteil + Programmierkabel und los gehts. http://www.myavr.de/start/start_erste_schritte.php
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.