Obtenir la version du systeme,son environnement,le service pack et aures ...

Soyez le premier à donner votre avis sur cette source.

Vue 6 946 fois - Téléchargée 1 110 fois

Description

C'est une traduction conforme (masm32) d'un exemple du SDK utilisant
OSVERSIONINFOEX
ToutEnmasm

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
Traduction à la "asm VB" mais assurément pas du code qui serait passé dans un compilo C correct.
Le jour où mon compilo me fera des appels lstrcat, il prend la poubelle illico.
Il y a des registres à employer, mets EDI en fin de chaine et tu écrsi dessus, tu recup ainsi ton EDI toujours au point d'écriture sans reparcourir 50 fois la meme chaine.
invoke lstrcat,addr phrase,addr espace
là c'est le bouquet, non ?
mov byte ptr[edi], 32
add edi, 1
voila remplacé appel strcat...
Sérieux, l'asm est le domaine de l'optimisation maximale, en faire un sous VB n'avance à rien.
ToutEnMasm
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
1 -
Rappelle moi le prix de Visual studio,pour voir !?
Si tu veux optimiser le code,aucun problème,tu as le source,bon boulot.
ToutEnMasm
ToutEnMasm
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
1 -
Cest bientôt Noël,Je vais te faire un petit cadeau.
pour optimser le code utiliser la fonction comme suit
1) créer une locale pointeur
2) ranger l'adresse de phrase dans pointeur
;début des tests
lea eax,phrase
mov pointeur,eax
PuPo case,osvi.dwPlatformId
.if case == VER_PLATFORM_WIN32_NT
3) remplacer tous les lstrcat par la fonction ConcaTene
invoke ConcaTene,pointeur,SADR("Microsoft Windows Server 2003, "),addr pointeur

ToutEnMasm
;additionne deux chaines terminées par zero
;renvoi le pointeur en bout de chaine écrite dans padresse
;################################################################
ConcaTene PROC uses esi edi szSomme:DWORD, szAdd:DWORD ,padresse:DWORD
Local retour:DWORD
mov retour,0
;éviter un planté toujours néfaste
.if szSomme 0 || szAdd 0 || padresse == 0
jmp FindeConcaTene
.endif
mov esi,szAdd
mov edi,szSomme
cld
.LISTALL
@@:
.if byte ptr [edi] != 0 ;debut de chaine a augmenter
;aller en bout de chaine
inc edi
jmp @B
.endif
@@:
.NOLIST
.if byte ptr [esi] != 0
;recopier
movsb
jmp @B
.endif
mov al,0
mov [edi],al
;sauvegarder le pointeur de fin
mov esi,padresse
mov [esi],edi
mov retour,1

FindeConcaTene:
mov eax,retour
ret
ConcaTene endp
frobinet
Messages postés
64
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 décembre 2006
-
Encore une remarque inconstructive de la part de BruNews comme toujours...
Petit parenthèse ce forum à pour but de faire découvrir l'assembleur et de faire avancer les choses pas de critiquer tous les codes en faisant croire que tu es capable de faire mieux.
Tu écrase la créativité de ce forum et à la lecture de tes remarques ça ne donne pas du tout envie de poster la moindre source. Je me suis mis à l'assembleur il y a de ça trois ans et c'est grâce a des personnes comme Iczelion, ToutEnMasm ... que j'ai bien avancé et maintenant MASM32 est pratiquement mon seul logiciel de programmation (même si j'ai la chance par mon travail d'être abonnée à MSDN Architecte).
Un tutoriel ou un programme mis sur un forum n'est pas une solutioon clé en main mais une aide à la réflexion il faut donc qu'il soit avant tout lisible sinon ça repousse les débutant et ça favorise le copier coller totalement idiot.
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
C'est inconstructif de dire ce qui ne va pas ??? c'est nouveau ça.
Ecraser la créativité... je fais dans le binaire pas dans la psy donc je passe.

3 ans que tu fais du sabir masm en obtenant 3 fois moins efficace qu'un compilo C en ayant mis 4 fois plus de temps que codé en C, si ça te convient c'est ok mais les débutants avec un tant soit peu d'ambition doivent savoir que c'est mauvais et pour cela encore faut-il que qlq'un l'ait écrit.

if osvi.dwPlatformId == x
4 fois de suite, bien entendu que j'aurais aussi pu l'évoquer mais je m'étais pourtant abstenu:
cmp [adr], valeur
jb goINF
je goEQU
ici traitement goSUP

ben oui mais pour cela faut coder vraiment.
Dans tous les cas si tu ne veux pas progresser ne lis pas les comments et basta.
Je note que ToutEnMasm a lui par contre essayé d'en proposer une amélioration et c'est heureux ainsi.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.