Forum: PC-Programmierung x86 Hexadezimal Tutorial


von Dussel (Gast)


Lesenswert?

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.

von mr.chip (Gast)


Lesenswert?

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.

von Dussel (Gast)


Lesenswert?

>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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Martin #. (martin-)


Lesenswert?

>>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.

von Dussel (Gast)


Lesenswert?

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?

von arc (Gast)


Lesenswert?

Google -> x86 assembler tutorial -> erster Link -> Grundlagentutorial

von mr.chip (Gast)


Lesenswert?

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

von Dussel (Gast)


Lesenswert?

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 ;-)

von mr.chip (Gast)


Lesenswert?

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

von Dussel (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.