![]() |
Re: Maschinensprache
Wenn ich jetzt sowas hab :
Delphi-Quellcode:
Kann ich das nicht mit Delphi so in eine Textdatei speichern das das ein richtiges Programm wird ?
E2 21 FF 21 AC 11 7D
Auch wenn das hier wahrscheinlich nichts sinnvolles ergeben würde :mrgreen: |
Re: Maschinensprache
Zitat:
Einfach neue Anwendung, TMemo, TEdit und TButton drauf und folgenden Quelltext ;-)
Delphi-Quellcode:
// Wandelt Hex Code in Bin Datei um
// Benötigt: // Memo1 mit Hexwerten /// (z.B. Memo1.Lines.Text := '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';) // Edit1 mit Dateinamen // (z.B. Edit1.Text := 'C:\TEMP\TEST.COM';) // // written by Dr. MaBuSE procedure TForm1.Button1Click(Sender: TObject); var i: Integer; s: string; BinDatei: TextFile; begin s := Memo1.Lines.Text; // unnötige Zeichen aus Text entfernen i := length(s); while i > 0 do begin if pos(upcase(s[i]), '0123456789ABCDEF') = 0 then begin delete(s, i, 1); end; dec(i); end; AssignFile(BinDatei, Edit1.Text); ReWrite(BinDatei); // String aus Hexwerten in Bin konvertieren for i := 0 to (length(s) div 2)-1 do begin Write(BinDatei, Chr(StrToInt('$'+s[i*2+1]+s[i*2+2]))); end; CloseFile(BinDatei); end; |
Re: Maschinensprache
Oder folgende Funktion verwenden:
in der Delphi 7 Hilfedatei steht Die Funktion konvertiert einen String mit Hexadezimalzeichen in den entsprechenden Binärwert.
Delphi-Quellcode:
Beschreibung
function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer
Mit HexToBin können Sie den Hexadezimal-String Text in den entsprechenden Binärwert umwandeln. Text ist die String-Darstellung eines Hexadezimalwertes. Buffer gibt den Wert in der binären Darstellung zurück. BufSize legt die Größe von Buffer fest. Text muss auf Hexadezimalzeichen mit mindestens 2*BufSize zeigen, das jedes Hexadezimalzeichen ein Byte repräsentiert. HexToBin gibt die Anzahl der Zeichen in Buffer zurück, die nicht verwendet wurden, das Text keine gültigen Hexadezimalzeichen enthalten hat ('0'..'f').. Hinweis: Die Hexadezimalzahl muss Zeichen in Kleinschreibung enthalten, da HexToBind keine Zeichen in Großschreibung erkennt. |
Re: Maschinensprache
Danke aber bei Delphi 3 gibt diese Funktion leider nicht (Wie sovieles andere auch :evil: )
Wie kann ich z.B dein Hello-World Programm damit machen ? Wenn ich in das Memo :
Delphi-Quellcode:
eingebe sieht die Exe so aus :
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
Delphi-Quellcode:
ist das richtig so ?
ëhello world$º´ Í!¸LÍ!
Wenn ich das Programm starte blinkt jedenfalls nur das DOS-Fenster kurz auf :( |
Re: Maschinensprache
Zitat:
|
Re: Maschinensprache
@tommie-lie: Er hat schon recht, wenn er das Richtige in eine Textdatei schreibt, kommt sicher ein Programm raus. Nur wird er Probleme haben, #0 zu schreiben... :wink:
Gruss Shaman |
Re: Maschinensprache
dumme Frage #3 : Was ist #0 :mrgreen:
|
Re: Maschinensprache
Ich glaube, dass das gesamte Unterfangen nichts weiter als reine Zeitverschwendung würde. Sicherlich ist es sinnvoll Grundlagen zu lernen - aber in dieser Form ist's irgendwie sehr sinnlos. Selbst wenn du wüsstest dass mit #0 das ASCII-Zeichen mit dem Index 0 gemeint ist, und damit u.a. Strings abgeschlossen werden, so ist es ganz einfach viel zu viel Handarbeit. Ich spreche da aus Erfahrung - ich habe mal versucht die FPU direkt zu steuern - also mit Opcodes. Man ist dann nur noch dabei sämtliche Speicheradressen von Hand zu berechnen, und die Parameter der Opcodes in Hex, oder in diesem Fall binär zu kodieren.
Trink dir lieber ne gute Tasse Tee, da hast du im Endeffekt mehr von :D. Der einzige Grund die CPU von Hand steuern zu wollen ist, wenn du einen kompletten Compiler von null auf selber bauen wolltest. Und selbst das wird nicht in 0/1 gemacht. Es sei gesagt dass es theoretisch möglich ist, sich aber eigentlich jeder sinvollen Machbarkeit entzieht. Gruss, Fabian |
Re: Maschinensprache
Zitat:
Trotzdem würde ich gerne wissen warum
Delphi-Quellcode:
umgewandelt in
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
Delphi-Quellcode:
nicht als exe-Datei funktioniert . Normalerweise müsste dann doch da 'hello world' stehen oder ? Bei mir blinkt aber nur kurz die DOS-Box und dann ist Ende... :gruebel:
ë hello world$º´ Í!¸LÍ!
PS: Das das eigentlich Zeitverschwendung ist ist mir klar, aber ich interessiere mich jetzt eben dafür und sinnvolle Programme hab ich noch selten geschrieben :mrgreen: |
Re: Maschinensprache
Starte das Programm mal von der Kommandozeile aus.
Gruss Shaman |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz