|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : delphi vers asm [ Archives / Aide a la programmation Windows ] (cricri_b34)
Informations & options pour cette discussion
|
mardi 10 janvier 2006 à 03:30:45 |
delphi vers asm

cricri_b34
|
salut , J'ai un code en delphi que j'aimerais traduire en assembleur (masm32) : var KeyTable: array [0..255] of boolean [....] procedure CheckState; var I: integer; begin for I := 0 to 255 do begin if KeyTable[I]<>(GetAsyncKeyState(I)<>0) then begin if (I=1) then begin // souris gauche if not KeyTable[1] then begin OnMouseDown() end; end else begin // clavier if not KeyTable[I] then begin OnKeyDown(I); end; end; KeyTable[I] := GetAsyncKeyState(I)<>0; end; end; end; Cette procedure est executé a chaque millièmes de secondes et permet d'intercepter l'appui des touches du clavier et des boutons de la souris. Donc j'aimerais m'en servir pour un programme en masm32. J'ai commecé a le traduire... voici le résultat : .data TableState db 255 dup(0) [...] CheckState Proc mov ecx, 256 mov esi, offset TableState Debut: invoke GetAsyncKeyState, ecx .if (eax!=0) cmp BYTE ptr[esi+ecx], 1 je Suivant invoke MessageBox, 0, 0, 0, 0 mov BYTE ptr[esi+ecx], 1 .else cmp BYTE ptr[esi+ecx], 0 je Suivant invoke MessageBox, 0, 0, 0, 0 mov BYTE ptr[esi+ecx], 0 .endif Suivant: loop Debut Ret CheckState EndP Un MsgBox devrait apparaitre a chaque appui d'une touche mais, évidemment, ca marche pas... Est-ce que quelqu'un pourrait m'aider?
|
|
|
|
mardi 10 janvier 2006 à 14:07:27 |
Re : delphi vers asm
|
|
mercredi 11 janvier 2006 à 01:17:35 |
Re : delphi vers asm

cricri_b34
|
ca ne marche pas... :
CheckState Proc USES ESI mov esi, 256 @1: dec esi jb @3 invoke GetAsyncKeyState,esi test ax,ax setne cl cmp TableState[esi],cl je @1 not TableState[esi] je @1 cmp esi,1 jne @2 ;invoke OnMouseDown jmp @1 @2: invoke MessageBox, 0, 0, 0, 0 jmp @1 @3: ret CheckState EndP
cette proc me bombarde de MessageBox
|
|
|
|
mercredi 11 janvier 2006 à 08:33:16 |
Re : delphi vers asm
|
|
mercredi 11 janvier 2006 à 22:17:21 |
Re : delphi vers asm

cricri_b34
|
dsl, mais chui tout mêler dans ton code jcomprend pas: << test ax,ax setne cl cmp TableState[esi],cl >>
et pour remplacer : KeyTable[I] := GetAsyncKeyState(I)<>0
est cque jpeux faire :
GetAsyncKeyState, esi cmp eax, 0 je Relache mov TableState[esi], 1 jmp FinEnregistrementEtat Relache: mov TableState[esi], 0 FinEnregistrementEtat : ...
|
|
|
|
mercredi 11 janvier 2006 à 23:59:30 |
Re : delphi vers asm
|
|
jeudi 12 janvier 2006 à 00:31:23 |
Re : delphi vers asm
|
|
jeudi 12 janvier 2006 à 00:36:27 |
Re : delphi vers asm
|
|
vendredi 13 janvier 2006 à 19:16:10 |
Re : delphi vers asm

cricri_b34
|
non... ca marche toujours pas :
CheckState PROC USES ESI mov esi,256 @1: dec esi ; for esi = 255 to 0 jb @3 invoke GetAsyncKeyState,esi ; ecx certainement detruit lors de cet appel. test ax,ax setne cl ; GetAsynKeyState <> 0 cmp TableState[esi],cl ; <> TableState[I] je @1 not TableState[esi] ; juste inversé la comparaison de I=1 et not TableState[I] mov TableState[esi],cl ; il a mieux sa place là tout simplement je @1 cmp esi,1 je @2 ; on inverse le test: sautera 1 fois au lieu de 255 ;-) ;invoke OnKeyDown invoke MessageBox, 0, 0, 0, 0 jmp @1 @2: ;invoke OnMouseDown jmp @1 @3: ret CheckState ENDP
si tu veux, j'ai le code aussi en vb :
(oups, je l'ai pas avec moi....)
|
|
|
|
vendredi 13 janvier 2006 à 19:34:02 |
Re : delphi vers asm

cricri_b34
|
bon le voici :
Dim TableState(255) As Boolean
[...]
Private Sub Timer1_Timer() Dim I As Integer For I = 0 To 255 If (TableState(I) <> (GetAsyncKeyState(I) <> 0)) Then If (GetAsyncKeyState(I) <> 0) Then If (I <> 1) Then MsgBox ("Une touche vient d'être appuyé!") End If TableState(I) = True Else TableState(I) = False End If End If Next I End Sub
|
|
|
Cette discussion est classé dans : end, begin, esi, ecx, keytable
Répondre à ce message
Sujets en rapport avec ce message
# Export Table - Kernel32.dll - GetProcessAddress # [ par joanna ]
Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la
# Export Table --- Kernell32.dll --- GetProcAddress # [ par joanna ]
Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la
Différences ??? [ par Arecibo ]
Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi],
Delphi (6) + ASM en ligne ... Problème !!! [ par Robbby ]
Voici un problème concernant un programme tres simple utilisant l'Assembleur en ligne sousDelphi 6.Dans l'exemple n°1, "gogo" et "toto" sont incrément
Parcours tableau de HWND [ par AlexMAN ]
Bonjour, Voila mon pb : Je declare un tableau de HWND comme suit :hwndCmd HWND 10 dup (?)Ensuite, je veux créer 10 boutons et stocker leur handle ds c
Besion info importante assembleur/desassembleur [ par PatSW ]
Bonjour,je suis présentement en train de modifier un fichier execute que jai décompiler avec W32Dasm et toute mes modifications jusqu'a présent sont p
Pb registre DL [ par AlexMAN ]
Bonjour, J'ai un ptit pb avec le code qui suit, au nivo du mov dl, [ecx] ://Renvoie pointeur sur fin de chaine (permet d'eviter l'utilisation de strca
mon programme bloque [ par rhumsek ]
slt j'ai améliore mon programme mais il provoque une erreure lorsdu calcul de la somme des entiers saisi (sommeentier)POURTANT il exécute bien les de
HELP ! :'( [ par TheHacker ]
Salut j'ai un probleme: voici mon code, il fonctionne correctement, activer le programme vous verres qu'a la fin i laffiche un MessageBox avec marqué
CONVERSION SYNTAXE GCC VERS INTEL [ par BruNews ]
CONVERSION SYNTAXE GCC VERS INTELSalut,j'ai un fichier asm (*.s) dans un projet en C qui compile sur GCC. Faut que je traduise depuis cette syntaxe bi
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|