![]() |
Assembler gesucht!
Hat von euch einer einen gescheiten Assembler? (nicht so einen integrierten, wie in Delphi)
Gruß, Borti |
Re: Assembler gesucht!
Für welche Programmiersprache ?
Für Assembler : nein Für Pascal : Such mal bei sourceforge.net - Der is sogar OpenSource :-D |
Re: Assembler gesucht!
Such mal nach NASM.
|
Re: Assembler gesucht!
Microsoft Assembler -
![]() Turbo Assembler - ![]() Netwide Assembler - ![]() |
Re: Assembler gesucht!
Laufen die Programme, die ich mit diesen Assemblern kompiliert habe auch unter Windows NT, XP und Me?
Gruß, Borti |
Re: Assembler gesucht!
DAs kommt auf Deinen Quellcode an.
|
Re: Assembler gesucht!
Starten kannst du sie auf jeden Fall. Ob sie Laufzeitfehler hervorrufen, hängt davon ab, welcher Code ausgeführt wird. Wenn du Interrupts benutzts oder direkt auf Ports zugreifst, kannst du davon ausgehen, dass das nicht funktioniert. Solange du aber nur auf Register und Speicher zugreifst, sollte es keine Probleme geben.
|
Re: Assembler gesucht!
:wall: :cry: :wall:
Zitat:
kann ich nicht einfach das register $378 im Arbeistspeicher abfragen und ich erhalte das byte vom Datenregisters des LPT-ports? (ist der port nicht direckt mit einem register im Arbeitsspeicherverbunden?) Gruß, Borti |
Re: Assembler gesucht!
Ich kenn mich mit der Peripherie nicht aus, aber es könnte schwierig werden, überhaupt erst an die physische Adresse $378 zu kommen, da Windows den physischen Speicher in einen virtuellen Speicher mappt. Die logische Adresse $378 entspricht also nicht der physischen $378!
Außerdem läuft eine WinNT-Usermode-Anwendung in einem geschützten Modus (protected mode), der bestimmte Anweisungen, wie Interrupts, nicht zulässt. Dafür müsstest du schon einen Treiber schreiben. |
Re: Assembler gesucht!
Also, "Interrupts aufrufen" kein Problem ... nur welchen?!? Windows selbst hat nen eigenen Mux-Int und Int3 sollte jedem Debugger-Besitzer auch unter Windows was sagen.
Der MASM-Link ist IMO nicht legal ... aber wenn selbst MS dagegen bisher nix unternommen hat, weiß ich auch nicht. Du kannst mit einem Windows-Treiber vom Ring-0 (also Kernelmode) aus auch auf Ports zugreifen. Aber wozu?!? Mir scheint doch, daß du nur einen der LPTs ansprechen willst. Das sollte auch ohne Treiber möglich sein. |
Re: Assembler gesucht!
Zitat:
was meinst du mit Zitat:
gruß, Borti |
Re: Assembler gesucht!
Zitat:
|
Re: Assembler gesucht!
Eben, geb ich Chewie voll recht.
Und Interrupts siehe oben + Int2Eh als MUXer |
Re: Assembler gesucht!
o.k. Leute wir programmieren in der Schule Delphi, da noch die Version 5.
Und da verwenden wir diese Methode:
Delphi-Quellcode:
Mit Handle kann ich zwar grad nich viel anfangen.
asm
push dx mov dx, 888 mov al, Datenwert Out dx, al pop dx end; Könnte das mir armen Schüler mal einer genauer erklären, ich kam mit den englischen Help-files noch nie klar. (Liegt nicht am Englisch.) Gruß herges |
Re: Assembler gesucht!
Super, funzt unter Win9x (unter Umständen), auf NT-basierten Systemen wird das Programm sich sehr schnell beruhigen, denn es hat nicht die Rechte privilegierte Befehle auszuführen.
|
Re: Assembler gesucht!
Mit meinen sehr beschränkten Assembler-Kenntnissen würd ich sagen:
Delphi-Quellcode:
Ist vielleicht als Anschauungsbeispiel, wie so eine Peripherieansteuerung funktioniert, ganz OK, aber in einem Programm, das wirklich für was gut ist und auch unter WinNTff laufen soll, wenig geeignet.
asm
push dx ; Inhalt des Registers DX auf Stack sichern mov dx, 888 ; Dezimalzahl 888 in Register DX schreiben mov al, Datenwert ; in das Low-Byte des Registers den Wert von Datenwert schreiben Out dx, al ; den Datenwert an den Port 888 = LPT senden pop dx ; den Inhalt, den DX vorher hatte, wieder in DX schreiben end; |
Re: Assembler gesucht!
O.K. war einen Versuch wert.
War von unserem Lehrer ja auch als Beispiel gedacht. Aber ich schlag mich auch schon mit dem Problem herum. Deshalb ja auch die Frage nach dem Handle. |
Re: Assembler gesucht!
Ach so, das Handle. Also:
Unter Windows gibt es eine Vielzahl von Objekten. Jede geöffnete Datei, jedes erzeugte Fenster, jeder Thread usw. ist ein solches Objekt. Um mit einem Objekt irgendwas machen zu können, benötigt man einen Zugriff darauf. Solch einen Zugriff nennt man ein Handle. Handle heißt ja soviel wie Griff, stell dir vor, du hast einen Griff, über den du dein Objekt steuerst. Genauso machst du das mit der Datei: Du lässt dir einen Griff reservieren (CreateFile) und benutzt diesen, um das Objekt zu steuren (DeviceIOControl). Wenn du fertig bist, lässt du den Griff wieder los (CloseHandle). |
Re: Assembler gesucht!
Liste der Anhänge anzeigen (Anzahl: 1)
Schöne Erklärung. Hier nochmal die Vielzahl an Objekttypen im Bild (siehe Anhang) auf einem W2K Pro.
![]() |
Re: Assembler gesucht!
ok, das mit dem handle scheint ein ganz vielversprechender ansatz zu sein. könnt ihr mir mal den code posten? (Ich hab's gestern schon versucht mich selber durch dieverse Bücher, websites und die online-hilfe durchzubeißen bin aber kläglich gescheitert.
Danke, Borti |
Re: Assembler gesucht!
Borti kann ich mich nur anschließen.
Ich kann mit dem Handle soweit nichts anfangen, da ich nich weiß wie man so ein Ding benutzt. Danke im Vorraus herges |
Re: Assembler gesucht!
Dann empfehle ich dringend die Lektüre des PSDK bzw der Win32 Hilfedatei.
Man kann zwar auch versuchen hier Grundlagen zu erklären, aber im Grossen und Ganzen ist das an anderer Stelle weit besser beschrieben. Ganz kurz wurde es ja schon geschrieben. Nicht täuschen lassen ... ein Handle kann man nicht dereferenzieren oder ähnliches (Usermode), es ist einfach ein 32bit-Wert, der dem System sagt welches Objekt du ansprechen willst. Das Handle auf das Objekt wurde vorher mit Funktionen ala RegOpenKeyEx(), CreateFile(), CreateMutex() und anderen Funktionen erzeugt/geöffnet und dient danach den entsprechenden Toolfunktionen wie ReadFile(), WriteFile(), WaitForSingleObject() als Anhaltspunkt was gemeint ist. Handles werden meist mit CloseHandle() oder einer anderen (in der Doku erwähnten) Funktion "geschlossen". |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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