ich brauch dringend eure hilfe

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

ich brauch dringend eure hilfe

Beitragvon rag_dog » Donnerstag 9. November 2006, 00:27

hi zusammen

ich habe folgendes problem wie ist der source richtig?

.elseif uMsg == WM_COMMAND

.if wParam == IDC_TEST1
.esleif wParam == IDC_TEST2
.endif

oder so


.elseif uMsg == WM_COMMAND
mov eax,wParam

.if eax == IDC_TEST1
.esleif eax == IDC_TEST2
.endif


danke

re:

ich habs gelöst bekommen!

arber könnte mir das jemand genauer erklären

HIWORD wParam ;events of controls
mov edx,eax ;exemple :TCN_SELCHANGE
LOWORD wParam ;ID of commands eax
mov ebx,lParam ; handle of controles


ragdog
rag_dog
Newbie
 
Beiträge: 3
Registriert: Donnerstag 9. November 2006, 00:22

Re: ich brauch dringend eure hilfe

Beitragvon crack » Freitag 10. November 2006, 21:11

rag_dog hat geschrieben:hi zusammen

...

re:

ich habs gelöst bekommen!

arber könnte mir das jemand genauer erklären

HIWORD wParam ;events of controls
mov edx,eax ;exemple :TCN_SELCHANGE
LOWORD wParam ;ID of commands eax
mov ebx,lParam ; handle of controles


ragdog


Nun, um dazu etwas zu schreiben ist wohl ein etwas längerer Ausschnitt aus dem Quellcode erforderlich ... :wink:
Und den Quellcode 'umhüllt' man im Posting am besten mit: [ code ] und [ /code ] (selbstverständlich ohne die Leerzeichen, bzw. oben bei den Edit Funktionen gibts einen Button für diese Code Tags ;)
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: ich brauch dringend eure hilfe

Beitragvon crack » Samstag 11. November 2006, 22:40

rag_dog hat geschrieben:hi zusammen

ich habe folgendes problem wie ist der source richtig?

.elseif uMsg == WM_COMMAND

.if wParam == IDC_TEST1
.esleif wParam == IDC_TEST2
.endif


wenn da tatsächlich "esleif" stand konte es wohl nicht funktionieren: "Syntax Error" :wink:
rag_dog hat geschrieben:oder so


.elseif uMsg == WM_COMMAND
mov eax,wParam

.if eax == IDC_TEST1
.esleif eax == IDC_TEST2
.endif


danke

re:

ich habs gelöst bekommen!

arber könnte mir das jemand genauer erklären

HIWORD wParam ;events of controls
mov edx,eax ;exemple :TCN_SELCHANGE
LOWORD wParam ;ID of commands eax
mov ebx,lParam ; handle of controles


ragdog


Kurz mal den Blick hinter die Kulissen:
die
.if
...
.elseif
...
.endif
Konstruktion wird vom Kompiler in
cmp ...
jnz ...
jmp ...

umgewandelt, und bei dem Vergleich mittels Compare (cmp) sind als Operanden nicht alle Kombinationen zlässig, wenn du versuchst Speichervariable mit Speichervariablen zu vergleichen, kann der Kompiler keine gültige Codesequenz erzeugen daher ist es erforderlich zuerst die Speichervariable1 in ein Register (EAX, EBX ...) zu laden und dann innerhalb der .if .elseif .endif Konstruktion zu verwenden, das dürfte auch in dem Fall der Grund des Problems gewesen sein ;)
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot]

cron