AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Maschinensprache

Ein Thema von Neutral General · begonnen am 13. Okt 2004 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
Seite 2 von 10     12 34     Letzte » 
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Maschinensprache

  Alt 13. Okt 2004, 23:01
Für den Kameraden hier habbich was gefunden
Miniaturansicht angehängter Grafiken
_supercoder.jpg  
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#12

Re: Maschinensprache

  Alt 13. Okt 2004, 23:06
Es hat doch niemand was anderes gesagt

Ich hab übrigens mal etwas weiter gerechnet (Wahrscheinlich hab ich mich wiedermal verrechnet):

Angenommen, man weiß genau, was man tippen will (man hat also auswendig die von MaBuSe errechneten 4.194.304 Nullen und Einsen im Kopf) und tippt pro Sekunde (gerade im Eigenversuch probiert) 6 Ziffern, also 21600 pro Stunde, benötigt man für die 4 Mio Nullen und Einsen gerade mal 194 Stunden, also 8,x Tage. Problematisch wird das ganze, wenn man zwischen jeder 0 und 1 noch 5 Sekunden Pause zum Überlegen machen muss


Man liest sich, Stanlay
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#13

Re: Maschinensprache

  Alt 13. Okt 2004, 23:18
Zitat von phXql:
Maschinencode is doch nich das selbe wie Assembler. Assembler hat ja schon n paar befehle, aber maschinencode is wirklich nur "strom da" und "strom nich da" (1 bzw 0)... Oder hab ich da mal wieder nich aufgepasst? ^^
Ja, da liegst du nicht ganz falsch. Maschinencode wäre etwas, was durch kein Übersetzungsprogramm mehr laufen muß, um vom Prozessor ausgeführt zu werden. Assembler braucht ja schon ein Übersetzungsprogramm, eben den Assembler. Beim Assembler (wie ich ihn definieren würde), entspricht ein Assemblerbefehl genau einer Prozessoranweisung, und ich kann mit Symbolen arbeiten, statt z.B. Sprungziele von Hand ausrechnen zu müssen.
Zu einem Zeitpunkt, zu dem man nichts weiter hat als einen nackten Prozessor (mit Peripherie aber ohne irgendwelche Software) kann man mit Maschinensprache anfangen, aber eben nicht mit Assembler.


Grüsse
Woki
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

Re: Maschinensprache

  Alt 14. Okt 2004, 12:37
Zitat von phXql:
Maschinencode is doch nich das selbe wie Assembler. Assembler hat ja schon n paar befehle, aber maschinencode is wirklich nur "strom da" und "strom nich da" (1 bzw 0)... Oder hab ich da mal wieder nich aufgepasst? ^^
Mir ist nun klar geworden, dass es Sinn macht etwas mehr zu Thema zu schreiben

Also...
  • Computer arbeiten digital. (Digital bedeutet logisch es gibt nur 1 und 0 bzw. auf der elektrischen Ebene es gibt nur Strom an und Strom aus.)
    Das kleinste Digitale Element ist ein Bit. (Ein Bit kann 1 oder 0 sein.)
  • Wenn man mit Bits arbeitet, benutzt man das Binäre (duale) Zahlensystem.
    Damit kann man mit 2 Bit 4 Zustände, mit 4 Bit 16 Zustände und mit 8 Bit 256 Zustände darstellen.
    Code:
    bin dez
    00 = 0
    01 = 1
    10 = 2
    11 = 3
  • 8 Bit werden in einem Byte zusammengefasst.
    Zur Darstellung benutzt man das Hexadezimale Zahlensystem. (Hier gibt es Ziffern von 0 bis F.)
    Code:
    bin   hex  dez
    0000 = 0   = 0
    0001 = 1   = 0
    0010 = 2   = 0
    0011 = 3   = 0
    0100 = 4   = 0
    0101 = 5   = 0
    0110 = 6   = 0
    0111 = 7   = 0
    1000 = 8   = 0
    1001 = 9   = 0
    1010 = A  = 10
    1011 = B  = 11
    1100 = C  = 12
    1101 = D  = 13
    1110 = E  = 14
    1111 = F  = 15
    Die 8 Bits 11010110 werden in 2 4er Gruppen aufgeteilt: 1101 0110
    und dann, nach der Tabelle oben, Hexadezimal dargestellt:
    1101 = D und 0110 = 6 -> 11010110 = D6
    So werden statt 8 Zeichen nur noch 2 benötigt (viel weniger zu tippen )
  • Ein Maschinen Programm könnte also wie folgt aussehen:
    EB 0C 68 65 6C 6C 6F 20 77 6F 72 6C 64 24 BA 02 01 B4 09 CD 21 B8 01 4C CD 21
    Dieses Programm gibt auf dem Bildschirm (in der Dos Box) "hello world" aus
  • Es ist natürlich sehr schwer sich die Befehle in dieser Form zu merken, deshalb wurden für die einzelnen Befehle kleine Kürzel (so genannte mnemonische Symbole, kurz Mnemonics)
    • EB bedeutet JMP (Jump = Springe nach)
    • 0C ist der Parameter von JMP und bedeutet 12 Byte
      -> Der 1. Befehl ist also ein "goto 12 Bytes weiter"
    • 68 65 6C 6C 6F 20 77 6F 72 6C 64 24 ist die hexadezimale Darstellung von "hello world$" (genau 12 Bytes )
    • BA bedeutet MOV DX, Wert
    • 02 01 Ist der Wert (Es werden Low und High Byte vertauscht -> Wert = 0102)
      -> MOV DX, 102 -> Dieser Befehl speichert den Wert 0102 in dem Register DX des Prozessors ab
    • B4 bedeutet MOV AH, Wert
    • 09 ist der Wert
      -> MOV AH, 09 -> speichert den Wert 09 im Register AH ab
    • CD bedeutet INT Wert
    • 21 ist der Wert
      -> INT 21 -> ruft den Software Interupt 21 auf
      -> hier wird die DOS Funktion 09 mit Parameter 102 aufgerufen
      -> diese gibt den Text ab Adresse 102 bis zum $ aus
    • B8 bedeutet MOV AX, Wert
    • 01 4C ist der Wert (Es werden Low und High Byte vertauscht -> Wert = 4C01)
      -> MOV AX, 4C01 -> schreibt 4C01 in Register AX
    • CD bedeutet INT Wert
    • 21 ist der Wert
      -> INT 21 -> ruft den Software Interupt 21 auf
      -> hier wird die DOS Funktion 4C 01 aufgerufen
      -> diese beendet das Programm
  • hier noch mal das ganze Listing:
    Code:
    125A:0100 EB0C         JMP    010E
    125A:0102 68656C6C6F20  DB     "hello "
    125A:0108 776F726C6424  DB     "world$"
    125A:010E BA0201        MOV    DX,0102
    125A:0111 B409          MOV    AH,09
    125A:0113 CD21          INT    21
    125A:0115 B8014C       MOV    AX,4C01
    125A:0118 CD21          INT    21
  • so sieht’s als Hex Dump aus:
    Code:
    125A:0100  EB 0C 68 65 6C 6C 6F 20-77 6F 72 6C 64 24 BA 02   ..hello world$..
    125A:0110  01 B4 09 CD 21 B8 01 4C-CD 21 00 00 00 00 00 00   ....!..L.!......
  • Wie kann ich das denn selbst ausprobieren?
    Es gibt im MS DOS / Windows ein Programm Debug.exe mit dem das geht.
    Dieser Debugger wird von der Dos Box aus gestartet:
    Code:
    C:\>debug
    -n c:\temp\hello.com
    -a
    11D1:0100 jmp 130
    11D1:0102 db "hello world",24
    11D1:010E mov dx,102
    11D1:0111 mov ah,9
    11D1:0113 int 21
    11D1:0115 mov ax,4c01
    11D1:0118 int21
    11D1:011A
    -a 100
    11D1:0100 jmp 10e
    11D1:0102
    -rcx
    CX 0000
    :1a
    -w
    0001A Bytes werden geschrieben.
    -q

    C:\>c:\temp\hello.com
    hello world
    C:\>
    Anmerkung zu obigem Beispiel:
    Ich habe erst einen "jmp 130" eingegeben, da ich ja nicht wusste wie lange mein Text wird.
    Vor "mov dx,102" steht die Adresse "010E".
    Diese Adresse habe ich am Schluss nochmal korrigiert "jmp 10e"

    mit "n dateiname" legen wir den Dateinamen fest.
    mit "a" schalten wir in die Assembler Eingabe um
    mit "rcx" legen wir die Programmgröße fest (nach "Int 21" steht "xxxx:011A", da wir bei 0100 begonnen haben und nun bei "011A" sind ist das Programm "1A" Byte groß) ("1A" hex = 26 dez)
    mit "w" speichern wir das Programm ab
    mit "q" beenden wir den Debug.exe

    Im Debug.exe kann man mit ? eine kleine Hilfe (Befehlsübersicht) bekommen.

So das sollte als Info reichen.

Viel Spaß
Dr. MaBuSE

ps: ich werde das auch nach Tutorial posten
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

Re: Maschinensprache

  Alt 14. Okt 2004, 12:54
Hier kann man noch etwas mehr dazu lesen:
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Maschinensprache

  Alt 14. Okt 2004, 18:08
Notfalls könnte man auch ein Delphi Programm schreiben, das 8 Nullen oder Einsen in das entsprechende Byte umrechnen und so dann Maschinencode erzeugen.

Inwieweit das aber Sinnvoll ist, sei dahingestellt, zumal Verglichen mit Maschinencode ist Assembler noch die schönste "Hochsprache" (finde ich)
Günter
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.168 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

Re: Maschinensprache

  Alt 14. Okt 2004, 18:13
Zitat von GuenterS:
Notfalls könnte man auch ein Delphi Programm schreiben, das 8 Nullen oder Einsen in das entsprechende Byte umrechnen und so dann Maschinencode erzeugen.

Inwieweit das aber Sinnvoll ist, sei dahingestellt, zumal Verglichen mit Maschinencode ist Assembler noch die schönste "Hochsprache" (finde ich)
Hey gute Idee ... Kannst du mir vielleicht einen Ansatz geben wie man das realisieren könnte ?
Michael
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#18

Re: Maschinensprache

  Alt 14. Okt 2004, 18:18
Zitat:
Inwieweit das aber Sinnvoll ist, sei dahingestellt, zumal Verglichen mit Maschinencode ist Assembler noch die schönste "Hochsprache" (finde ich)
ASM ist keine Hochsprache
Aber ich halte es für extrem sinnlos, in Maschinensprache zu proggen wenn es doch Assembler gibt...
Lukas
  Mit Zitat antworten Zitat
Fourcorner

Registriert seit: 26. Aug 2004
Ort: Grenzach-Wyhlen
51 Beiträge
 
Delphi 7 Personal
 
#19

Re: Maschinensprache

  Alt 14. Okt 2004, 19:11
Solly,
Assembler ist halt nicht so schön zu lesen wie Pascal oder C++, aber ich glaube ,dass es keinen Sinn machen würde, ein Pro zu schreiben, das alles in 0 und 1 umwandelt.
Assembler ist auserdem schon durchgetestet. warum also arbeit machen?
Julian
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.168 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

Re: Maschinensprache

  Alt 14. Okt 2004, 19:13
Bitteeeee... ich will nur mal ausprobieren ob das funktioniert
Nur einen kleinen Ansatz...
Michael
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf