PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ASM Schnipsel erklären



terrorzwerg
22.03.2009, 12:43
Ich habe in der Schule ein Delphi Programm zur Ansteuerung eines Lauflichts unter WinME geschrieben. Um den Parallel Port anzusteuern musste ich mir ein paar Zeilen Assembler klauen, da ich aber keine Ahnung von Assembler habe bräuchte ich jemanden der mir den Code so erläutern kann, so dass es auch der Rest meines Kurses versteht, wenn ich das Programm vorstelle.
Hier der Code:

mov dx,378h
mov al,x
out dx,alx wird zurückgegeben

blackberry
22.03.2009, 12:54
mov (für move) nimmt zwei Parameter:
mov DESTINATION, SOURCE

mov dx, 378h entspricht also so etwas:
dx := 0x378
dx ist ein 16 Bit großes Universalregister.
dx steht für Data Register und wird vom Programmierer in der Regel wie eine Variable benutzt!
379h steht für die Hexadezimalzahl 379.

al ist auch ein Universalregister! (ax = Akkumulator [sofern ich das jetzt richtig geschrieben habe] Register, 16 Bit).
mov al, x
bedeutet also:
al := x

Mit dem Befehl out sendet man Daten an einen Port.
Der Syntax ist:
out PortNummer, Daten

Dein Code macht also folgendes:
es wird der Inhalt von x an den Port mit der Nummer 0x378 gesendet!


mfG. BlackBerry


EDIT:
Pseudocode:

FUNKTION AN_PORT_SENDEN( 16_BIT_PARAMETER x )

port_adresse := 0x378
zu_sendende_daten := x

SENDEN( port_adresse, zu_sendende_daten )

FUNKTION ENDE

Hamtaro
22.03.2009, 14:01
Das dürfte aber ab WIndows NT nicht mehr funktionieren, weil man dann imho nicht mehr dirket mit der Hadware kommunizieren darf (Treiber ausgeschlossen)

blackberry
22.03.2009, 14:04
Er hat gesagt er benutzt WinME (Millenium Edition -> 2000).
Das sollte also gehen!

Hamtaro
22.03.2009, 15:24
upps, peinlich :D
Stimmt ja

terrorzwerg
22.03.2009, 19:56
Das Programm läuft unter ME einwandfrei, unter XP müsste man irgendwelche Treiber/API Funktionen(?) nutzen, das war aber in der Kürze der Zeit nicht machbar.
thx @ BlackBerry

blackberry
22.03.2009, 20:08
Wenn das eine Frage sein sollte :)

Über den COM2-Port kommunizieren:

HANDLE hCom = CreateFile(
"COM2",
GENERIC_READ | GENRIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);

Und dann mit SetCommState ( http://msdn.microsoft.com/en-us/library/aa363436(VS.85).aspx ) die einzelnen Ausgänge "unter Strom setzen" ;)


mfG. BlackBerry

AlterHacker
22.03.2009, 20:25
Wenn das eine Frage sein sollte :)

Über den COM2-Port kommunizieren:

HANDLE hCom = CreateFile(
"COM2",
GENERIC_READ | GENRIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);Und dann mit SetCommState ( http://msdn.microsoft.com/en-us/library/aa363436(VS.85).aspx (http://msdn.microsoft.com/en-us/library/aa363436%28VS.85%29.aspx) ) die einzelnen Ausgänge "unter Strom setzen" ;)


mfG. BlackBerry


Unter linux mit outb und ioperm

Damit ein feines script gemacht, wenn tür auf, 20 Sekunden Zeit, PC zu "defusen" ansonsten werden truecrypt-container dismounted.

terrorzwerg
22.03.2009, 20:39
@BlackBerry War eigentlich keine Frage ^^
Trotzdem danke, werd das wenn ich nachm Abi wieder Zeit hab noch einbauen

Hamtaro
22.03.2009, 20:44
@AlterHacker: Paranoia ist keine Eissorte :D

Sowas finde ich aber interessant, wie hast du dir das technische Wissen dazu angeeignet bzw. wo hast du die Bauteile her?

AlterHacker
22.03.2009, 20:46
@AlterHacker: Paranoia ist keine Eissorte :D

Sowas finde ich aber interessant, wie hast du dir das technische Wissen dazu angeeignet bzw. wo hast du die Bauteile her?

Ist ja auch nicht zum so benutzen ;-)

War nur um mir zu zeigen, das ich es kann ^^ (rofl, selbstbestätigung ftw)

Bauteile? Selfmade

So einen alten Druckerkabel, ein Ende eingesteckt, anderes Ende entisoliert, mit dem Programm Saft drauf, alle Bits abgecheckt und geguckt, wenn welcher Kontakt da ist, welches Bit dann gesetzt ist.

Und so ZACK haste dein eigenes Programm, war gar nicht mal so lang^^

blackberry
22.03.2009, 21:24
Für sowas würde ich mich auch interessieren.
Bis jetzt ist das bei mir aber immer an fehlenden Kabeln gescheitert!
Ich würde mich über ein kleines Tutorial mit einer Bauteilliste sehr freuen :)


mfG. BlackBerry

noctem
22.03.2009, 21:56
Ich ebenfalls. Ich habe immer etwas Respekt und viel zu eingestaubte Ahnung wenn es darum geht wie ich Signale weiter Verarbeite wenn sie mal aus dem Port draußen sind.
Sprich Kabel, Widerstände, etc.
Davon wäre ein kleines How To echt super.