Autor |
Parallel Port: Assembler in C Problem mit Verständnis oder Hardware |
|
|
|
|
BID = 572984
Hagbrain Gerade angekommen
Beiträge: 3 Wohnort: Blankenheim
|
|
Moin und einen guten Tag,
ich programmiere jetzt imoment Assembler und seit ich rausgefunden habe wie ich das in C einbinde, auch C. Jetzt habe ich das Problem. Wenn ich eine EXE erstelle von diesem Programm, dann gebe ich eine Zahl ein(max 255, geht ja nicht anders) und von 10 mal funktioniert es ca 2 mal. Warum? schreibt C mit irgendeiner Variable in das DX oder AX Register, und AL oder DX übernehmen beim einlesen irgendwelche Restdaten? Ich weis nicht was es sein kann.
Wenn ich alles in Assembler schreibe und in AL direkt 1 übergebe dann geht bei meiner Schaltung auch die Lampe dafür an. Manchmal muss ich allerdings 5 mal die EXE-Datei davon Ausführen bevor der Computer an DATA1 ein Signal aussendet.
Bitte kann mir einer helfen. Wenn jemand Ahnung davon hat, dann kann der das was da oben steht auch einigermaßen verstehen.
Quelltext:
#include <stdio.h>
int adresse;
int port;
int main(void)
{
scanf("%i",&adresse);
port = 888;
printf("%i adresse %i port", adresse, port);
asm(".intel_syntax noprefix");
asm("mov eax,0");
asm("mov edx,0");
asm("mov al,_adresse");
asm("mov dx,_port");
asm("out dx,al");
asm(".att_syntax noprefix");
return 0;
}
Schonmal danke fürs Interesse und richtig großes DANKE wenn auch jemand mir helfen kann.
MFG Hagbrain
|
|
BID = 572988
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
|
Zitat :
| von 10 mal funktioniert es ca 2 mal. Warum? | Ich habe jetzt nicht versucht dein Programm zu analysieren, aber ein solches Verhalten ist typischerweise das Resultat von vergessenen Initialisierungen. |
|
BID = 572989
Hagbrain Gerade angekommen
Beiträge: 3 Wohnort: Blankenheim
|
Kein Compilerfehler kommt. Eingabe funktioniert, Ausgabe funktioniert, NUR DATA1 vom parallel Port hat kein Strom wenn man 1 eingibt.
|
BID = 573048
Lötfix Schreibmaschine
Beiträge: 2328 Wohnort: Wien
|
Hallo!
Wie sieht die angeschlossene Schaltung aus? (Pull-UP-Widerstände)
In welcher Betriebsart ist der LPT? (SPP, Bi-Direktional, EPP, ECP)
Sind die Ausgangstreiber abgeschaltet? (nur zum Einlesen notwendig)
...mit Assembler am PC kenn ich mich nicht so gut aus
Sind der schaltungstechnische Aufbau und die 3 Register des LPT bekannt?
Info zum LPT
mfg lötfix
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung. Rechtsansprüche dürfen daraus nicht abgeleitet werden. Sicherheitsvorschriften beachten!
|
BID = 573237
Hagbrain Gerade angekommen
Beiträge: 3 Wohnort: Blankenheim
|
Danke für die Antworten, ich hab meinen Fehler nach einigen Malen erneuten probierens herausgefunden. Die VAR adresse darf nicht int sein sondern muss vom Typ double sein. Sonst war alles richtig.
Jetzt kann ich meine Binäruhr weiter basteln. Danke trotzdem für die anregungen.
MFG Hagbrain
|