Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   wie assembler in delphi benutzen? (https://www.delphipraxis.net/104313-wie-assembler-delphi-benutzen.html)

o0o 1. Dez 2007 12:53


wie assembler in delphi benutzen?
 
hi leutz also da mich asm doch schon auch interessiert wollte ich damit in verbindung mit delphi ein wenig rumspielen,...zudem habe ich eig. kein plan wie das gehen soll^^

das hello world in asm:
Zitat:

DATA SEGMENT WORD DATA
Msg DB 13,10,Hallo, Welt!,7,13,10,$
DATA ENDS
CODE SEGMENT WORD CODE
ASSUME CS:CODE, DS:DATA
Start:movax,DATA
movds,ax
movdx,OFFSET Msg
movah,009h
int021h
movah,04Ch
int021h
CODE ENDS
END Start
ich waere sehr dankbar wenn mir jemand beschreibn kann wie ich zb dieses hello world von asm in delphi ausfuehren kann:)

thx im vorraus

o0o

Muetze1 1. Dez 2007 13:12

Re: wie assembler in delphi benutzen?
 
Du benutzt in dem Code den DOS Interrrupt 21h und der ist für 16 Bit Programme im RM gedacht. Du befindest dich hier unter Windows und wo soll er denn den Text hinschreiben den du dort ausgeben willst? Du musst dich unter Windows mit der WinAPI anfreunden und deren Funktionen aufrufen. Die Funktionen werden hier nicht mehr über Software-Service-Interrupts zur Verfügung gestellt sondern du musst entsprechende Funktionen in DLLs aufrufen. Du kannst in so fern gar nichts von dem Programm übernehmen.

Ein anderes Problem ist, dass du ein alleinstehendes Programm gepostet hast, welches vom Assembler übersetzt und vom Linker zu einer selbstständigen EXE gebaut werden kann. Nun willst du dies unter Delphi nutzen? Delphi hat einen integrierten Assembler und somit fällt initialisieren der Anwendung, Definition von Segmenten, Beenden des Programms etc komplett weg, da dein Code sich innerhalb einer Anwendung befindet.

Wenn du den Code nach dem gleichen Prinzip unter Win32 haben willst, dann nutze auch wieder ein komplettes Assemblersystem und nicht eine IDE.

o0o 1. Dez 2007 13:23

Re: wie assembler in delphi benutzen?
 
ich danke dir vielmals fuer die aufklaerung:)

hast du vllcht noch ein paar links von denen ich alle info's bekomme die ich zum thema asm brauche?
ich hab schon nich grad ahnung davon aber moechte es lernen(oder wenigstens versuchen^^) nur wenn ich mich im web so umschaue sind eig fast alle tutorials und so total veraltet^^

wenn du da was hast an das ich mich klammern kann waere ich sehr dankbar:)


o0o

Zacherl 1. Dez 2007 13:25

Re: wie assembler in delphi benutzen?
 
Stichworte:

AllocConsole,
GetStdHandle mit STD_OUTPUT_HANDLE Parameter,
WriteConsole,
FreeConsole

damit geht es. Assembler in Delphi einbetten geht, indem du statt BEGIN einfach ASM verwendest. Du kannst natürlich auch in einem vorhandenen BEGIN Block ASM .. END verwenden. Die Variablen und Konstanten aus dem .data oder .data? Teil kannst du ganz normal als const oder var deklarieren.

Matze 1. Dez 2007 13:30

Re: wie assembler in delphi benutzen?
 
Hier gibt's ein entsprechendes Tutorial: Inline ASM für Win32 - Einsteiger Crashkurs

Hador 1. Dez 2007 13:36

Re: wie assembler in delphi benutzen?
 
Zitat:

Zitat von Zacherl
damit geht es. Assembler in Delphi einbetten geht, indem du statt BEGIN einfach ASM verwendest. ...

Aber er will ja scheinbar ein sein ganzes Programm in ASM schreiben.

ASM-Tutorials/Kurse findet man doch wie Sand am Meer:
- http://www.it-helpnet.de/Dokumente/P...0Tutorial.html
- http://andremueller.gmxhome.de/befehle.html
- http://ivs.cs.uni-magdeburg.de/bs/le...ssembler.shtml

Man findet auch häufig günstig Bücher über ASM bei ebay.

Um eigenständige Programme in ASM zu schreiben, kannst du die bspw. mal FASM angucken: http://www.flatassembler.net/

Zacherl 1. Dez 2007 13:38

Re: wie assembler in delphi benutzen?
 
Da habe ich auch eine passende Frage. Geht doch sicher auch mit MASM oder? zum einbetten kann ich doch theoretisch einfach die .obj Datei mit Linken lassen?

o0o 1. Dez 2007 17:52

Re: wie assembler in delphi benutzen?
 
omfg,...Matze,Zacherl,Hador ich danke euch vielmals das war genau das was ich brauche:)

echt geilo^^

da o0o


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz