Software aus dem Boden stampfen

Hunter3

Grünschnabel
Guten Abend,

ich weiß nicht ob der Titel richtig gewählt ist.
Also ich beschäftige mich jetzt seit kurzer Zeit mit Assembler und es wird ja immer gesagt das Assembler direkt übersetzt wird, so jetzt zu meiner Frage wie bringt man einen PC
dazu, wenn nichts vorhanden ist nur die Hardware und auch kein OS, das zu tun was der Programmierer will also 1 + 1 zu rechnen oder sowas ?
Ich weiß jetzt nicht wie ich es passender beschreiben könnte, aber ich hoffe ihr versteht was ich meine.

danke für Antworten und noch einen schönen Abend
 

sheel

I love Asm
In Assembler programmieren, übersetzen, dann dafür sorgen, dass man sein Programm auf einer bootbaren CD hat (bis hierher braucht man noch ein Betriebssystem).

Computer mit CD drin einschalten, laden lassen, rechnen lassen...

Wo liegt jetzt genau die Unklarheit?
 

Hunter3

Grünschnabel
was kommt vor assembler irgendjemand muss ja den/die assembler code/befehle programmiert haben ? und wenn dem so sei wie sieht dann son codeschnipsel von einer sprache aus die noch vor assembler kommt aus ?
 

chmee

verstaubtes inventar
Premium-User
Assembler - auch Maschinensprache - ist die grundlegendste Form, einem Haufen Transistoren einen Sinn einzuimpfen. Schau Dir Maschinensprache -insbesondere die Befehle- mal an und dann erkläre Dir selbst, wie etwas noch simpler aussehen sollte.

http://de.wikipedia.org/wiki/Assemblersprache

Und wenn Dir das damit noch nicht klar ist,
beschäftige Dich mit der von Neumann-Architektur und dem Zuse Z3

Zur eigentlichen Frage: Diese Befehle sind in Hardware eingegossen und neben den bewährten "Befehlen" (zB mov oder add) verbessern im Grunde genommen die Prozessorarchitekten von CPU zu CPU Geschwindigkeit, Gleichzeitigkeit und Effizienz durch verschiedenste Optionen. Der Befehlssatz der Intel-Prozessoren unterscheidet sich grundsätzlich von MIPS-Prozessoren, sogar untereinander (486 zu PentiumIV zB)

http://runtime-basic.net/Assembler:Funktionen:Beschreibung-Kurz-CPU

mfg chmee
 

sheel

I love Asm
Hier ein Codeschnipsel der Vor-Asm-Sprache ( :D )
ÆEñëÿuÿEüè Y‹Ø‰]ìƒ}Ð „ €}ñ …ã ƒþ
(das musste sein :) )

Ernsthaft: Ein Prozessor hat in sich fix eingebaute Grundfunktionen.
Nur als Beispiel Multiplizieren zweier Zahlen

Weiters sind alle Funktionen durchnummeriert.
Die einfachste Multiplikation von zwei positiven Ganzzahlen wäre zB (wenn ich richtig nachgeschaut habe) 246

Ein ausführbares fertiges Programm besteht nach dem Kompileren hauptsächlich aus Bytes, deren Inhalt die Nummern solcher Befehle sind.

(Das was ich oben reinkopiert habe ist ein Auschnitt von einem Programm, die Bytes im ASCII-Code angezeigt :) )

Die einzelnen Befehlsnummern sind also das absolute Minimum, die können vom Prozessor direkt verarbeitet werden.
Wie das im Prozessor realisiert ist, wissen nur die Hersteller genau...

Zum Assembler: Das ist mehr oder weniger nichts anderes wie ein Ersatznamensystem für jeden Bytebefehl.
zB 246 hat den Namen MUL (wie Multiplizieren) bekommen.

Es wäre möglich, ein lauffähiges Programm direkt zu schreiben-nur dazu müsstest du zum Multiplizieren 246 schreiben.
Im Assembler kannst du MUL schreiben und musst es aber dafür aber vorm Programmstart noch übersetzen lassen.
Gibt verschiedene Programme (von verschiedenen Firmen), die sowas können.
zB MASM, NASM, TASM (jaja die Namen...)

Also Zusammenfassung: Die Vor-Assembler-Sprache sind die Einzelnen Befehlsnummern des Prozessors.
Nur mit Nummern zu programmieren schaffen nicht viel Leute, deshalb hat man sich aussagekräftigere Ersatznamen für die Nummern überlegt.

Habe ich jetzt alle Klarheiten beseitigt? :p

edit: chmee, du wirst immer schneller, und ich immer langsamer :(
 

Hunter3

Grünschnabel
1. Danke für die Antworten das hat mir schon geholfen, aber jetzt steht immernoch die Frage im Raum wie schafft man es einem Stück Metall „zu vermitteln” wie man mit Bits umgeht.
2. Und wie Programmiert man dann ein Bios so das man mit Assebler darauf Zugreifen kann, also die Interrupts oder ist das wieder das Thema was chmee schon erwähnt hat das diese Befehle sozusagen eingegossen werden ?
Oder ist das auch so eine Art Assembler ?

Edit:
Ich habe diesen Beitrag, während sheels posting, verfasst also ist Punkt 1 abgehakt bleibt nur noch die Frage wie das jetzt mit dem Bios aussieht ****

Danke für eure Mühe mir die Thematik nahe zu bringen hat mir schon sehr geholfen ! :)
 
Zuletzt bearbeitet:

chmee

verstaubtes inventar
Premium-User
Das Bios ist ein simples Programm - kein Teil der Grundfunktionen der "Maschine" - und hat schon Nix mehr mit der Maschinensprachenfrage an sich zu tun. Sie macht Sinn in der Zusammenarbeit mit dem Chipsatz, welcher wiederum für den Kontakt zwischen den Einzelteilen verantwortlich ist. Interupts werden von Chipsatz und CPU bereitgestellt (Man mag mich verbessern, denn so viel bin ich mit den wirklichen Interna nicht verbandelt..)

mfg chmee
 
Hallo,

die Maschinensprache ist nicht zwingend in Hardware gegossen, wie meine Vorredner behaupten. Unter dieser Ebene gibt es noch die Mikroprogrammierung, also die Implementierung der einzelnen Maschinenbefehle mit dem noch elementareren Mikrocode. Diese Mikroprogramme werden z.B. in einem EEPROM gehalten und können damit auch ohne Veränderung der Hardware angepasst werden.

Grüße,
Matthias