Précédent   Forum du club des développeurs et IT Pro > Général Développement > Langages de programmation
Langages de programmation Forum général sur les langages de programmation, sur la POO, opinions, choix, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/01/2013, 16h33   #1
Unknow77
Invité de passage
 
Homme
Étudiant
Inscription : janvier 2013
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2013
Messages : 1
Points : 0
Points : 0
Par défaut Codage machine en 68000

Bonjour à tous,

Tout d'abord je suis désolé si ce n'est pas le bon topic/forum pour mon sujet mais je ne savais pas vraiment où poster...

Donc je viens ici car j'ai du mal à comprendre un exercice sur le codage machine (processeur 68000).

Voici l'énoncé :

Citation:
Soit le programme ci-dessous :



L'objectif de cet exercice est de déterminer la valeur qui sera attribuée à chaque étiquette lors de la phase
d'assemblage. Il est donc nécessaire d'assembler manuellement le programme. Afin de faciliter ce travail,
le premier mot de 16 bits du code machine de chaque instruction est indiqué en début de ligne (à droite
des quatre points d'interrogation). Il reste donc à déterminer les mots manquants du code machine. Ces
mots manquants sont représentés par le point d'interrogation à droite du premier mot de 16 bits. Il faudra
également déterminer l'adresse mémoire de chaque instruction. Cette adresse est représentée par les
quatre points d'interrogation en début de ligne.
Donc pour l'étiquette DISPLAY = $2000 et la première ligne vaut 2000 2611 ? parce que la directive ORG nous permet de dire à quelle adresse on doit commencer le programme mais après je ne vois pas comment obtenir les "????" et donc de retrouver petit à petit les valeurs des étiquettes...

Merci de votre aide
Unknow77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 18h36   #2
sevyc64
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 5 375
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 40
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 5 375
Points : 12 338
Points : 12 338
Comme tu l'as dit, ORG fixe l'adresse de départ.
Ensuite les adresses successivement sont déterminées par la compilation des instructions.

Si on prend la première ligne MOVE.L (A1),D3, cette ligne indique que l'on charge le registre D3 avec le contenu de l'adresse mémoire indiquée dans le registe A1. Cela va se traduire en code machine par les octets 26.11 (si j'ai bien compris la tables des opcodes quelque peu complexe pour le 68000)

La première instruction va donc être traduite en 2 octets qui vont donc être stockés en $2000 et $2001.
L'autre instruction commencera donc en $2002, qui, elle-même, se traduira en 4 octets : 06.41.50.00. Elle sera donc stockée en $2002 à $2005
Donc tu aura :
Code :
1
2
3
4
5
                   ORG $2000
2000  2611         MOVE.L (A1),D3
2002  064150000    ADDI.W #$5000,D3
2006  D279......   ADD.W $5000,D1
.....
__________________
--- Sevyc64 ---

Parce que le partage est notre force, la connaissance sera notre victoire
sevyc64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2013, 10h24   #3
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 490
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 490
Points : 32 264
Points : 32 264
Envoyer un message via MSN à Médinoc
En gros, tu es censé avoir la table en question quelque part (elle a du être distribuée avec ton cours).
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h53.


 
 
 
 
Partenaires

Hébergement Web