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 :

Question exercices CNAM assembleur


Sujet :

Assembleur

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Par défaut Question exercices CNAM assembleur
    Bonjour,

    J'ai une question les amis je suis complètement bloque sur un exercice au CNAM portant sur l'architecture des machines et plus précisément le Langage assembleur.

    Je vais faire rapide la question est la suivante :

    Soit la configuration suivante d’une mémoire centrale et d’une pile ainsi que des registres du processeur. Les nombres sont codés selon la convention du complément à 2 sur 32 bits.

    La mémoire centrale contient deux entiers A et B et la pile deux entiers C et 3.


    adresse contenu
    100 Entier A
    104 Entier B
    108 100
    112 104
    116 ???

    Configuration de la mémoire centrale
    adresse Contenu
    200 Entier c
    204 3
    208 ----
    212 ---


    Configuration des registres

    registre contenu
    RB 20
    RSP 208
    PSW(ZCOS) 0000

    Ecrivez un programme assembleur qui réalise le calcul suivant : A + C * B. Si le résultat est positif, celui-ci est écrit à l’adresse 116 en mémoire centrale, sinon il est placé au sommet de la pile, au-dessus de l’entier 3. Vous ne disposez pas d’opérateur de multiplication et vous devez utiliser au moins une fois l’adressage indirect et une fois l’adressage basé.

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Alors un , on ne fait pas le devoir des gens
    Et de deux ben tu as fait quoi ?

    L’exercice te demande juste de faire:
    -le calcul : A + C * B.
    -Si positif, celui-ci est écrit à l’adresse 116 ,sinon il est placé au sommet de la pile, au-dessus de l’entier 3.

    Ensuite tu fera avec les contrainte demandé , alors en plus ils sont sympa il te dise ou se trouve A,B et C !
    A et B sont dans la mémoire (adresse 100 et 104) et C sur la pile.

    ah même si un de nous aurais l'envie d’écrire ton code , ça serait impossible parce qu'on ne sait pas sur quel asm tu utilise

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Par défaut
    L’ami je bloque au niveau de comment remplacer la multiplication C*B dans le contexte EN gros si je peux pas utiliser l'opérateur MUL comment faire ? ... pour l’instant je suis uniquement au niveau du chargement. C’est à dire
    Load D RO 100.
    LOAd I R1 104.
    LOAD D R2 200

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Pourquoi faire un :
    Load I et non un Load D dans :LOAD I R1 104 ? (en supposant que D c'est pour faire lire directement une adresse)
    ensuite tu as écrit RO , alors que c'est R0 ,fait un minimum d'effort si tu veux qu'on t'aide...

    Si c'est pour respecter la consigne de : "une fois l’adressage indirect et une fois l’adressage basé."
    Ben s'il dise ça ,c'est parce qu'on ne lit jamais la pile directement (parce que on ne sait jamais ce qu'il ya dedans).
    Au pifometre ça donnerait un truc comme Load R2,-8(RSP) (je trouve ça très étrange que le registre de pile est incrémenté dans la consigne, c'est toujours l'inverse normalement)
    De meme que lesdeux autre , ça devrait etre :
    LOAD R0,100
    LOAD R1,104

    Je connais aucun assembleur qui s'amuse à rajouter des d ou des i comme ça , deja rien que parce que l'écriture comme précédemment "R2,-8(RSP)" est obligatoirement une adresse indirect , je vois pas l’intérêt de préciser ( le direct ça serait impossible).
    inversement si tu écrit : LOAD R1,104 , c'est obligatoirement une adresse direct (ou immédiat suivant les assembleurs) , très peu de proco supporte une adresse mémoire comme pointeur.
    En général quand c'est le cas ,tu le met entre parenthèse LOAD R1,(104).
    voilà c'était juste pour préciser , mais faudrait vraiment nous donner au moins quel asm tu utilise , sauf te dire "ouais peut etre"


    Pour ma part fait l'algo avec un mul.
    Sinon comment on fait sans mul ,tu sais que à une époque il n'yavait pas de mul dans les processeurs ?
    C'est le cas de la Nes.
    Bref ben comme au primaire ,c'est quoi une multiplication ?
    Oui bien ,c'est une succession d'addition !

    Après comme je connais pas ton assembleur ,je pourrais pas te dire comment le coder (surtout que ça demande de faire un saut relative via un registre)
    Sinon une autre méthode plus complexe , mais c'est la méthode classic pour faire une multiplication software est souvent de le faire avec des décalages binaires , c'est beaucoup plus rapide (et aussi ça demande pas beaucoup de code à faire).
    (la complexité , c'est un algo générique de multiplication) , en général on fait une fonction mul .

Discussions similaires

  1. Aide sur un petit exercice en assembleur
    Par sheridan08 dans le forum x86 16-bits
    Réponses: 0
    Dernier message: 22/01/2010, 11h27
  2. [MARIE] Cherche exercices en Assembleur avec l'architecture MARIE
    Par dja filali dans le forum Autres architectures
    Réponses: 0
    Dernier message: 18/01/2010, 19h14
  3. Question sur l'assembleur inline
    Par sorry60 dans le forum C
    Réponses: 5
    Dernier message: 15/06/2009, 13h10
  4. Exercice en Assembleur
    Par zakaria1 dans le forum Assembleur
    Réponses: 1
    Dernier message: 03/04/2009, 19h11
  5. Questions sur l'Assembleur
    Par maind5or dans le forum Assembleur
    Réponses: 6
    Dernier message: 06/09/2005, 00h18

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