PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → asm
asm
Débuté par naceur, 18 fév. 2005 11:51 - 6 réponses
Posté le 18 février 2005 - 11:51
est il possible d ecrire une sequnce de programmation en assembleur

si possible comment et svp un exemple
Posté le 18 février 2005 - 12:38
A ma connaissance c'est NON
"naceur" <naceur@mail2world.com> a écrit dans le message de
news:4215afa7$1@news.pcsoft.fr...


est il possible d ecrire une sequnce de programmation en assembleur

si possible comment et svp un exemple
Posté le 18 février 2005 - 16:20
Perdu c'est oui
mais Non
B'AH quand même

Un peu caffouilleux mais c'est comme ca
WinDev ne permet pas de saisir directement des sequences en assembleur.

Mais via une api windows CallWindowsProcA et une bonne connaissance en
ASM un petit code fonctionnel (Surtout pour la conversion des ordres asm
en Hexadécimal)

Code de la procedure GETCPUID()
Procedure GetCPUID()
Asm est une chaîne
eax est un entier
ebx est un entier
ecx est un entier
edx est un entier
Low est un entier

Asm += Caract(0x56) //56 push esi
Asm += Caract(0x55) //55 push ebp
Asm += Caract(0x8B) + Caract(0xEC) //8B EC mov ebp,esp
Asm += Caract(0x8B) + Caract(0x75) + Caract(0xC) //8B 75 0C mov
esi,dword ptr [ebp+0Ch]
Asm += Caract(0x8B) + Caract(0x6) //8B 06 mov
eax,dword ptr [esi]
Asm += Caract(0xF) + Caract(0xA2) //0F A2 cpuid
Asm += Caract(0x8B) + Caract(0x75) + Caract(0xC) //8B 75 0C mov
esi,dword ptr [ebp+0Ch]
Asm += Caract(0x89) + Caract(0x6) //89 06 mov dword
ptr [esi],eax
Asm += Caract(0x8B) + Caract(0x75) + Caract(0x10) //8B 75 10 mov
esi,dword ptr [ebp+10h]
Asm += Caract(0x89) + Caract(0x1E) //89 1E mov dword
ptr [esi],ebx
Asm += Caract(0x8B) + Caract(0x75) + Caract(0x14) //8B 75 14 mov
esi,dword ptr [ebp+14h]
Asm += Caract(0x89) + Caract(0xE) //89 0E mov dword
ptr [esi],ecx
Asm += Caract(0x8B) + Caract(0x75) + Caract(0x18) //8B 75 18 mov
esi,dword ptr [ebp+18h]
Asm += Caract(0x89) + Caract(0x16) //89 16 mov dword
ptr [esi],edx
Asm += Caract(0x5D) //5D pop ebp
Asm += Caract(0x5E) //5E pop esi
Asm += Caract(0xC2) + Caract(0x10) + Caract(0x0) //C2 10 00 ret 10h
eax = 1
API("user32","CallWindowProcA", &Asm, &eax, &ebx, &ecx, &edx)
Low = eax
eax = 3
API("user32","CallWindowProcA", &Asm, &eax, &ebx, &ecx, &edx)
RENVOYER HexVal(Low) + "-" + HexVal(ecx) + "-" + HexVal(edx)

Code de la procedure HexVal
Procedure HexVal( lngValue est un entier)
sValRet est une chaîne

sValRet = NumériqueVersChaîne(lngValue,"x")
SI Taille(sValRet) < 8 ALORS sValRet = Répète("0",8 - Taille(sValRet)) +
sValRet
sValRet = sValRet [[ A 4]] + "-" + sValRet[[ 5 A ]]
RENVOYER sValRet



[DrCharly93] www.wdforge.org

Philippe Pasquali a écrit :
A ma connaissance c'est NON
"naceur" <naceur@mail2world.com> a écrit dans le message de
news:4215afa7$1@news.pcsoft.fr...


est il possible d ecrire une sequnce de programmation en assembleur

si possible comment et svp un exemple



Posté le 22 février 2005 - 10:20
est ce callwindowsprocA deffirent a callwindowsproc ?

et que tes variables correspond a

WNDPROC lpPrevWndFunc, &asm
HWND hWnd, &eax
UINT Msg, &ebx
WPARAM wParam, &ecx
LPARAM lParam &edx


merci
Posté le 22 février 2005 - 14:15
Bonjour,
A ma connaissance les fonctions des apis se sont vu ajouter un A à la
fin de leurs noms afin de différencier les fonctions qui tournent en 16
et 32 bits.
Toutes fonctions contenant un A sont des fonctions qui tournent en 32
bits donc tout les versions de Windows NT, 2000 et XP

Pour le reste mes connaissances dans le domaine de l'assembleur s'arrête
là.
C'était surtout un exemple didactique qui peut pour ceux qui connaissent
l'aasembleur de pouvoir créer par exemple une classe qui permetterait
d'interpréter du langage Assembleur.

[DrCharly93] www.wdforge.org


naceur a écrit :
est ce callwindowsprocA deffirent a callwindowsproc ?

et que tes variables correspond a

WNDPROC lpPrevWndFunc, &asm
HWND hWnd, &eax
UINT Msg, &ebx
WPARAM wParam, &ecx
LPARAM lParam &edx


merci
Posté le 17 décembre 2019 - 07:22
Il existe un composant sur github pour exécuter de l'assembleur dans un code en WLangage :

https://github.com/maitrebitcoin/wd-assembly

Le source est en mode texte pour WinDev 25 .
Membre enregistré
198 messages
Popularité : +2 (2 votes)
Posté le 16 septembre 2021 - 18:17
pad a écrit :
Il existe un composant sur github pour exécuter de l'assembleur dans un code en WLangage :

https://github.com/maitrebitcoin/wd-assembly

Le source est en mode texte pour WinDev 25 .



Bonjour,
Quelqu'un à une source complète de wd-assembly car je l'ai retranscrit ( péniblement ) en wd25 et il plante ..
merci