IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Peut-on faire du son juste avec du code assembleur ?


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Peut-on faire du son juste avec du code assembleur ?
    Voila , j'aimerai savoir si en créant un exe ( genre KeyGenerator ) , sans même importer de fichier son ( je sais pas si c'est possible d'ailleurs .. ) , on pouvait faire du son . Je pose cette question car j'ai un petit Keygen qui produit du son quand on l'ouvre et qui est vachement marrante . Si effectivement on peut faire du son , est-ce que par exemple en utilisant WinAsm , je peux retrouver le code qui fait ça ( genre une instruction standard dédiée à cette fonction ) ??

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Quant au fichier son, je pense qu'il est inclut en dur dans le petit programme dont tu nous parle.
    Pour le reste, ne t'attend pas à avoir une instrution ASM qui te sortira une jolie musique. Au mieux, tu à une interruption qui fait bipper la carte mère.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    ok ok . Mais tu entend quoi par "inclut en dur ds le programme" ? . Y'aurait moyen de récupérer ce fichier son alors ?

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Comme le disait justement Blawk, l'assembleur ne produit aucun son de lui même, à part appeler le beeper, ou produire des fonctions mathématiques basées sur la synthèse du son (en partant de sinusoïdes et en intégrant les équations de Fourier, chose à laquelle je n'oserais pas m'aventurer en Asm) il n'y a pas grand chose à faire...

    Je pense que Blawk entendait, par "inclus en dur" que le programme utilise un fichier déclaré dans les ressources du programme (donc lié à l'exécutable).

    Pour jouer du son en Asm, tu peux utiliser différentes librairies (libs), pour ton compilateur. Le problème tiens surtout à la taille du fichier (le WAV est très lourd). Le mieux serait de jouer du .XM ou du Midi (.mid), il existe des librairie en Asm pour cela (notamment pour MASM32).

    Personellement je préfère les fichiers .XM, utilisable avec la librairie mfmplayer (mfmplayer.lib et mfmplayer.inc). Très simple d'utilisation, et les fichiers sont très légers.

    Un petit google sur XM et mfmplayer te donnera toutes les infos.

    Neitsa.

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    pour faire du son avec asm c´est simple mais ca demande une conaissance sur les adress les ports
    le principe est simple tu peux faire du son avec la vibration de tes hautparleurs allument et atteindre adress du la port est 61h
    dans la port 42h tu fais entrer la frequenc que tu veux .....
    tu dois remplir la port 43h avec valeur 0B6h ....
    voila un example


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
                        ;seulement sur win98 car win2000 ne te laisse pas la liberte          ;de manipuler lesinterruptions
    .model small
    .stack 256
    .code
     
    ton       dw 2712 , 2416 , 2152 , 2032 , 1810 , 1612 , 1437 , 1356
     
     
    main      proc
              lea si , ton
    tas:      mov ah , 0
              int 16h
              cmp al , 1Bh
              je  ende
              cmp al , "1"
              jb  tas
              cmp al ,"9"
              ja  tas
              sub al , "1"
              mov bl , al
              xor bh , bh
              shl bx , 1
              mov bx , cs:[si + bx]
              call note
              jmp tas
    ende:     mov ah , 4Ch
              int 21h
    main      endp
     
     
    note      proc
              mov al , 0B6h
              out 43h , al
              mov ax , bx
              out 42h , al
              mov al , ah
              out 42h , al
              in al , 61h
              or al , 11b
              out 61h , al
              ;xor cx , cx
    ;11:       loop 11
              mov dx , 0
              mov cx , 2
              mov ah , 86h
              int 15h
              in al , 61h
              and al , 1100b
              out 61h , al
              ret
    note      endp
     
              end main

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses

    Par contre falcon007de , j'ai essayé de voir ds le code s'il y avait qq part l'adresse des ports que tu m'avais indiqué , apparament ce n'était pas la méthode utilisée ( je n'ai pas eu le courage de regarder tout le code moi même , j'ai plutôt fait une petite recherche ).

    Je pense donc qu'ils ont utilisé la technique que propose Neitsa , à savoir utiliser les librairies. Comme je débute seulement avec l'assembleur , quelqu'un pourrait me dire comment on voit ça dans le code ?
    Mais ce qui me parait bizarre tout de même , c'est qu'il n'y a que l'exe ( un Keygen ) et pas d'autre fichier son "livré" avec .
    Mais je reste toujours ouvert à toute proposition pr pouvoir retrouver cette petit musique

  7. #7
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Je pense donc qu'ils ont utilisé la technique que propose Neitsa , à savoir utiliser les librairies. Comme je débute seulement avec l'assembleur , quelqu'un pourrait me dire comment on voit ça dans le code ?
    Inclure une lib dans un programme, sert à ajouter des fonctions ou des APIs qui nous intéressent. Inclure une lib ce fait grâce à cette syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ;exemple
    include kernel32.inc ; fichier include (constantes, structures, prototypes,etc.)
    includelib kernel32.lib ; fichier librairie (sert lors du "linkage")
    pour plus de précision , recherche sur google, ou sur le site d'Iczelion.

    Mais ce qui me parait bizarre tout de même , c'est qu'il n'y a que l'exe ( un Keygen ) et pas d'autre fichier son "livré" avec .
    Les ressources d'un programme sont à l'intérieur même du programme,danbs un "compartiment" spécial que l'on appelle la section .rsrc, et qui est une des constituantes des fichiers Windows (pour plus d'informatin, faire une recherche sur le "PE" ["portable executable" qui est la norme des fichiers EXE]).

    Quand un programme utilise une ressource (image, musique, mais aussi dans certains cas les boites de dialogues, les statiques, les boites d'édition) qu'il ne génère pas lui même, ces éléments sont dans le programme (pas dans un fichier externe).

    Pour pouvoir retrouver les ressources d'un programme, il faut dumper la section ressource et chercher les infos intéressantes(bonne connaissance du PE obligatoire...) sinon il existe des programmes fait pour ca, bof... .

    Tu trouvera des tonnes de musique gratuite sur le net (google est ton ami ), et plutot que de "ripper" (voler) la musique d'un programme, prend en une sur le net en n'oublant pas de créditer le compositeur de ladite musique.

    tu trouveras facilement la lib XM. Au fait, tout ce que j'ai dit s'applique à la programmation win32 GUI , pas au mode console...

    Hmmm, apprend aussi les bases de la prog win32...par ce que faire un programme (quelqu'il soit, à plus forte raison avec des libs "exotiques" telles que mfmplayer) sans savoir comment faire un include, ni connaître les ressources, c'est problèmatique. Ne met pas la charrue avant les boeufs et rend toi chez Iczelion qui t'apprendra de quoi démarrer plus que bien dans l'asm, ces tuts sont mondialement connus et ont permis de mettre le pied à l'étrier pour de nombreux coders...

    http://win32assembly.online.fr

    Neitsa.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Il ne me reste plus qu'à dire un grand merci à Neitsa . J'aurai de quoi faire avevc ce site ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2013, 16h46
  2. Réponses: 0
    Dernier message: 12/05/2011, 10h02
  3. peut-on faire de l'ettiquetage avec OpenGL ?
    Par arakiri dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/12/2006, 15h36
  4. [AJAX] Peut-on faire de l'AJAX avec ASPX
    Par Kylen dans le forum ASP.NET
    Réponses: 5
    Dernier message: 08/06/2006, 12h34
  5. Réponses: 4
    Dernier message: 07/11/2005, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo