begin process at 2012 05 24 05:32:52
  Trouver un code source :
 
dans
 

31 commentaire(s) de Nasman sur des sources sur asmfr

Déposé sur Automate cellulaire en assembleur ( jeu de la vie )

Nasm permet les formats suivants:
- OMF
- COFF
- Win32
- ELF (Linux)
- binaire pur (.COM, .SYS)
- 16, 32 et 64 bits
+ d'autres que j'oublie
C'est un assembleur multi plateformes.
Posté le : 23/06/2008 08:26:31

Déposé sur Dll effectuant une transformée de fourier rapide

Bonjour BICOUN,

La formule pour trouver la fréquence en fonction de l'indice est la suivante:

f=indice*Fe/n
où Fe est la fréquence d'échantillonnage de ton signal et n le nombre de points mesurés (puissance de 2)

Si tu effectue un échantilonnage à 44100Hz durant 0,5s, tu auras 0,5*44100 =22050 mesures dont seules 16384 seront utilisées - soit une durée utile de 16384/44100 = 0,371s. Ton pas temporel sera de 1/44100 = 22,68µs.
Si au sortir de ta transformation de Fourier tu a un pic à l'indice i=372 alors la fréquence correspondante sera de
f = 372*44100/16384 = 1001,29Hz
Ton pas fréquenciel est de 44100/16384 = 2,69Hz
Pour améliorer la résolution tu peux:
- augmenter la durée (nombre de points) pour la même fréquence d'échantillonnage
- diminuer la fréquence d'échantillonnage (pour la même durée)
Il faut faire attention au fait que l'analyse n'est valable que jusqu'à Fe/2 (ici 22050 Hz), si tu réduit la fréquence d'échantillonnage à 8000 Hz (par exemple), ta résolution sera de 0,488 Hz mais ton analyse spectrale sera limité à 4000Hz

J'espère que ces explication te permettrons de voir l'origine de ton pb
Posté le : 08/10/2007 14:52:32

Déposé sur Exemples simples de fichiers écrits avec nasm

Bonjour GOKUDO,

Tu peux trouver des informations complémentaires sur les modes de compilations dans la source suivante
http://www.asmfr.com/codes/CREATION-DIFFERENTS-EXECUTABLES-AVEC-NASM-ALINK_37036.aspx

A+
Posté le : 19/07/2007 09:24:17

Déposé sur Création de différents exécutables avec nasm et alink

Bonjour OEIL_DE_TAUPE,

Je n'ai pas essayé toutes les types de fichiers avec Nasm mais je vais tenter de répondre à tes questions.

A ma connaissance, le format objet est le seul qui permette d'exporter des noms, que ce soit des noms de sections ou des noms de fonctions ou variables.

La directive USE32 ou BITS 32 a pour but d'indiquer à Nasm que le code doive être interprété comme du 32 bits. Pour certaines instructions c'est chose évidente (exemple mov eax,ecx), pour d'autres la taille n'est pas indiquée (LODSB).
En 16 bits cette instruction chargera al avec le contenu de DS:SI et DS:ESI en 32 bits.
Par défaut Nasm compile en 16 bits. Si tu veux éxécuter une instruction 32 bit dans une section 16 bits tu peux forcer le mode 32 bits pour l'instruction en ajoutant le préfixe a32 (préfixe 0x66).
Ainsi en 16 bits pour charger al avec le contenu de DS:ESI tu feras:
a32 LODSB qui sera codé en 0x66 0xAC

Pour les instructions 32 bits implicites le a32 n'est pas nécessaire dans le fichier source mais un préfixe sera ajouté

Exemple (Pas de déclaration - mode 16 bits par défaut)
mov ax,32 est codé en B8 20 00 et
mov eax,32 est codé en 66 B8 20 00 00 00 (66 indique que l'on change de mode)

Avec bits 32 ces deux instructions seront codées
mov ax,32 est codé en 66 B8 20 00 et
mov eax,32 est codé en B8 20 00 00 00 (pas de 66 car l'instruction correspond au mode de la section)

Ainsi l'utilisation d'instructions 32 bits ne signifie pas que le programme est en 32 bits, cela indique seulement que le microprocesseur necessaire est au moins un 386.
Avec Nasm, s'il n'y a pas de directive BITS XX alors le programme est en 16 bits. Avec l'exécutable si on a 66 B8 20 00 00 00
celà indique que l'on charge un registre 32 bits (valeur 0x00000020)mais avec changement de mode (66) ainsi le mode de la section est de 16 bits.

J'espère t'avoir éclairé

A+
Posté le : 26/09/2006 09:30:22

Déposé sur Représentation d'une sphère en 3d (flat shading)

Bonjour Manchester,

Il est vrai que des fonctions de manipulation d'images bien plus sophistiquées existent et peuvent éviter de refaire ce qui existe déjà. Malheureusement c'est souvent (toujours?) utiliser une boite noire et on ne connait pas le mécanisme utilisé. D'autre part ces fonctions ont été la plupart du temps développées avec un langage de plus haut niveau et à la compilation on obtient quelque chose qui est loin d'être optimisé, même si les routines utiles (qui calculent réellement quelque chose) le sont.

C'est sans doute la rançon à payer pour avoir une plus grande compatibilité entre les différents systèmes.
Posté le : 11/09/2006 16:58:29

Déposé sur Représentation d'une sphère en 3d (flat shading)

L'instruction de comparaison n'est pas liée à AAM, elle sert seulement à voir si le nibble est supérieur à 9 alors entre A et F sinon entre 0 et 9. J'ai laissé la ligne du listing pour montrer que AAM 16 occupe deux octets.
La conversion Mnemonique - octets n'est pas faite au niveau du microprocesseur qui ne connait que des octets mais par l'assembleur. Peut-être que dans l'esprit des gens d'Intel il n'existe que Masm comme assembleur.
Posté le : 05/09/2006 15:06:20

Déposé sur Représentation d'une sphère en 3d (flat shading)

>ToutEnMasm,

Nasm permet l'instruction AAM 16 qui est assemblé en D4 10. Il n'est pas besoin de rentrer les valeurs à la main ou de faire des db 0xD4,0x10.

Cf extrait du listing généré lors de la compilation

  1040                           hexascii:
  1041 00000BFB D410                    aam 16
  1042                                       
  1043 00000BFD 3C09                    cmp al,0x9

A+
Posté le : 05/09/2006 14:30:59

Déposé sur Représentation d'une sphère en 3d (flat shading)

Rebonjour,

Je ne parlais pas de l'instruction AAM tout court (donnant les octets D4 0A soit AAM 0xA mais AAM 0x10 codé avec les deux octets D4 10. Que donne le desassembleur de Masm avec les deux opcodes D4 10 ?
Ces deux octets décomposent un octet mis dans al en deux octets
ah, quotient de al par l'opérande (qui peut être différent de dix) et al qui contient le reste de la division.

Extrait du manuel de Nasm

AAM is for use after you have multiplied two decimal digits together and left the result in AL: it divides AL by ten and stores the quotient in AH, leaving the remainder in AL. The divisor 10 can be changed by specifying an operand to the instruction: a particularly handy use of this is AAM 16, causing the two nibbles in AL to be separated into AH and AL.

Vous pouvez vérifier qu'un exécutable contenant les deux octets D4 10 effectue bien l'opération citée.
Masm permet-il réellement de compiler AAM opérande avec opérande<>10 ?

A+
Posté le : 05/09/2006 13:19:17

Déposé sur Représentation d'une sphère en 3d (flat shading)

Bonjour BruNews,

Effectivement le code est loin d'être optimisé. J'avais utilisé une stackframe pour simplifier (?) le programme et utiliser ebp au lieu de esp (et éviter de compter les registres sauvegardés sur la pile). Je préfère ne pas utiliser ecx car ce dernier est utilisé comme compteur de boucle pour mes facettes. Si je l'utilise je devrais le sauvegarder au préalable et perdrais le bénéfice d'un push et pop.
Effectivement certaines instructions peuvent occuper un certain nombre de cycles mais je ne dispose pas de doc sur le nombre de cycles employés par les microprocesseurs. Je suppose que celà dépend si on utilise un 386, pentium ou plus performant...
J'ai essayé de réduire le temps d'exécution en travaillant avec des entiers mais la précision sera peut-être insuffisante dans certains cas.

Enfin concernant Nasm, je n'utilise pas les macros permettant de définir les différentes procédures et de ce fait le code est traduit directement sans rajout de stackframe ou autres instructions. Nasm permet également d'utiliser quelques instructions comme aam 16 (prévue par intel) que Masm n'autorise pas.

A+
Posté le : 05/09/2006 09:30:48

Déposé sur Pic : obtenir un nombre aléatoire avec la formule xn+1=(137x...

Bonjour WAREZPSX,

Je ne connais pas du tout les PICs aussi ma remarque sera peut être inappropriée.
- la fonction utilisée pour avoir un nombre aléatoire est en fait périodique, aussi elle devient prévisible. Existe t'il sur les PIC une mémoire plus "aléatoire" genre timer ou générateur de son qui varierait rapidement et qui pourrait servir de base à une fonction pseudo aléatoire ?

Bonne continuation,
Posté le : 31/07/2006 08:30:11

1 2 3 4


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales