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 :

Jeu d'instructions et petites questions sur l'asm


Sujet :

Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 58
    Points
    58
    Par défaut Jeu d'instructions et petites questions sur l'asm
    Salut !!

    J'ai des questions au sujet de l'asm

    Je cherche la liste des opcodes pour le processeur 80486 ou +
    ainsi qu'une description de chacune d'elle
    en français ou en anglais ca ne fait rien

    un opcode c'est bien une instruction assembleur comme "mov"
    où je me trompe ?
    un assembleur c'est un programme pour traduire le langage d'assemblage
    lequel est le listing de code (instruction , donnee , variable et directives)?



    un PE , ca veut dire quoi exactement ?

    Sinon quel assembleur parmi tous ceux qui
    existent actuellement reconnait les opcodes
    80486 ?

    y a-t-il un problème si je programme depuis un laptop?
    est-ce que mon programme fonctionnera avec tous les PC?


    Merci pour vos réponses !

  2. #2
    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 cherche la liste des opcodes pour le processeur 80486 ou +
    ainsi qu'une description de chacune d'elle
    La liste complète des instructions (et bien plus) est disponible sur les sites d'Intel et d'AMD :

    Intel (Volume 2A et 2B spécifiquement pour les isntructions) :
    http://www.intel.com/products/proces...uals/index.htm

    AMD (tous les guides commencant par AMD64 Architecture) :
    http://developer.amd.com/documentati...veloper_Guides

    un opcode c'est bien une instruction assembleur comme "mov"
    où je me trompe ?
    L'opcode c'est la forme binaire (mais généralement donnée en hexadécimal pour faciliter la lecture) de l'instruction. Quant à "mov" c'est le mnémonique de l'instruction.

    par exemple : 0X90 est l'opcode de l'instruction dont le mnémonique est "NOP".

    un assembleur c'est un programme pour traduire le langage d'assemblage
    lequel est le listing de code (instruction , donnee , variable et directives)?
    Oui, l'assembleur c'est à la fois le langage et le programme qui compile le code source vers une forme binaire. (les anglophones font une distinction avec les vocables "assembler" [le programme] et "assembly language" [le langage]).

    un PE , ca veut dire quoi exactement ?
    Un "PE" (Portable Executable) est une spécification de format de fichier exécutable, c'est à dire une spécification indiquant comment doit être un fichier pour être exécutable par un système d'exploitation. C'est la norme principale des fichiers exécutables sous Windows. Par extension cela désigne un exécutable (sous sa forme binaire).
    Sous linux, par exemple, c'est une autre spécification (notamment le format ELF), mais il existe bien d'autres formats de fichier pour exécutables (mais moins répandus).

    Sinon quel assembleur parmi tous ceux qui
    existent actuellement reconnait les opcodes
    80486 ?
    Pour compiler un code source assembleur pour x86, tu peux utiliser notamment : MASM, FASM, YASM, NASM, TASM, RosASM, etc. Voir la FAQ Assembleur du site : http://asm.developpez.com/faq/

    y a-t-il un problème si je programme depuis un laptop?
    est-ce que mon programme fonctionnera avec tous les PC?
    Aucun problème (laptop ou desktop), pourvu que le processeur soit bien de la famille x86 si tu souhaites programmer spécifiquement dans ce langage assembleur (il existe d'autres assembleurs...).
    Oui cela fonctionnera sur n'importe quel PC ayant un processeur de la même famille (x86).
    Certaines instructions sont apparues avec certains processeurs (par exemple le 486 à des instructions supplémentaires par rapport au 386). Plus le processeur est récent, plus il supporte d'instructions. La famille des x86 est dites "rétro-compatible", c-a-d qu'un processeur récent peut très bien exécuter du code d'un ancien x86.

    Si tu as d'autres questions, n'hésites pas

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 58
    Points
    58
    Par défaut
    Bonsoir Neitsa ^^

    merci beaucoup pour toutes ses questions
    et pour les liens , je vais aller voir ca de suite

    hmn je n'ai pas d'autres questions pour maintenant
    hormis sur la musique , car je me demandais comment
    on peut faire une mélodie en assembleur
    peut-être que je trouverai des instructions pour la carte son
    dans la doc d'intel

    ps j'utilise un laptop avec un amd turion 64 ,
    (c'est un processeur 64 bits?)

    Merci encore

  4. #4
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 44
    Points
    44
    Par défaut
    Pour la musique tu peux utiliser les services de l'interface 8255 et le timer 8254 ( qui existe déja sur ta carte mére)
    il faut avoir les fréquences des notes DO,RE,MI,....
    j'ai déja réaliser ce programme, je vais essayer de te le communiquer.

    Rq: le son est emmis par le speaker interne de l'ordinateur et non pas par la carte son sinon il faut voir avec les fichiers midi

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 58
    Points
    58
    Par défaut pile et tas
    Bonjour Usama2

    merci pour ton aide , ca m'interesserai de voir ton programme pour savoir
    comment on produit du son par le haut parleur !

    j'ai deux questions au sujet de la mémoire ,
    quelle est la difference entre un accès direct et indexé?
    comment ca se traduit dans le code?

    et "le tas" et "la pile" désignent la même chose ou pas?

    Merci beaucoup

  6. #6
    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,

    peut-être que je trouverai des instructions pour la carte son
    dans la doc d'intel
    Les documentations Intel ou AMD concernant les processeurs ne traitent que de ces derniers (pas de la carte mère, ni d'autres choses).

    car je me demandais comment
    on peut faire une mélodie en assembleur
    Comme le disait justement Usama2, il faut soit passer par la carte mère pour atteindre le speaker système, soit par les APIs du système pour accéder directement à une "vraie" carte son.

    j'utilise un laptop avec un amd turion 64 ,
    (c'est un processeur 64 bits?)
    Oui, c'est un processeur 64 bits, comme son nom l'iondique. La particularité des processeurs 64 bits est leur capacité à exécuter du code 64, 32 ou 16 bits (mais pas tout mélangé !).

    quelle est la difference entre un accès direct et indexé?
    - l'adressage direct fonctionne avec le contenu de la mémoire dont l'adresse est fournie.

    - l'adressage indexé fonctionne avec les registres (E)SI ou (E)DI. Ces derniers contiennent l'offset (déplacement) par rapport au début du segment de donnée (DS).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    .data
    var WORD 12
     
    .code
    ;adressage direct
    mov ax, word ptr var ; ax = 12
     
    ;adressage indexé
    mov esi, offset var ; ESI contient l'adresse de var
    mov ax, word ptr [esi] ; ax = 12
    voir aussi : http://benoit-m.developpez.com/assem.../Partie3-1.php

    "le tas" et "la pile" désignent la même chose ou pas?
    Le tas (heap) et la pile (stack) sont tous les deux des zones mémoires. La différence tient au fait qu'on alloue de la mémoire sur le tas lorsqu'on demande une allocation mémoire alors qu'on alloue pas sur la pile (on pousse et on récupère des données).

    En assembleur il faut demander une allocation sur le tas au système via une de ses APIs.
    En langage de haut niveau, cela correspond par exemple à un malloc en C ou un new en C++.

    La pile, elle, est "toujours" là (on ne demande pas d'allocation sur la pile). Elle est donnée via le segment SS et gérée via les deux registres (E)SP et (E)BP. La pile a de plus un comportement spécifique dit "LIFO" (Last In, First Out : dernier entré, premier sortit).
    On pousse (mnémonique : PUSH) et on récupère (mnémonique : POP) des données sur la pile.

  7. #7
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 44
    Points
    44
    Par défaut
    nesta a tout dis
    franchement rein à ajouter juste une tout petite remarque sur l'adressage de la pile:

    il faut jamais utiliser des registres de 8bits (Push AL ou POP BL)
    le sommet de la pile est pointé par le registre SP, le segment de la pile est pointé par le registre de pile SS. Les données à empiler ou à dépiler ne peuvent pas etre des octets.

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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