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

Autres architectures Assembleur Discussion :

[68000] Déterminer si un nombre codé sur 16 bits est symétrique ou pas


Sujet :

Autres architectures Assembleur

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut [68000] Déterminer si un nombre codé sur 16 bits est symétrique ou pas
    Bonjour,

    J'essaie de faire un petit programme en qui renvoie si un nombre codé sur 16 bits est symétrique ou pas. J'ai essayé de recopier le nombre dans un registre de données et de l'inverser pour ensuite le comparer au premier, mais je sais pas s'il y a une instruction pour inverser les bits (1 à 0 ou 0 à 1). Alors Je me permets de faire ce sujet pour avoir des indications sur la démarche à suivre ; toute indication sera la bienvenue.

    Je vous remercie d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Je trouve la demande assez peu sérieuse parce que :
    mais je connais pas si il'ya un" instruction pour inversée les bits de (1a0 ou 0 a1)
    qu'est qui t’empêche de regarder la doc du 68000 au juste ?

    ROL et ROR est ce que tu cherche ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    parce que je débute sur assembleur c'est pour ça est en plus ROR ET ROL je pense que c'est pas vraiment une rotation mais plutôt un décalage vers la droite ou vers la gauche d'un seul bit .
    moi je voulais dire pour vérifier la symétrie du chiffre en binaire je dois le copier et l'inverser et comme ca j'aurais le méme chiffre dans 2 registre ensuite je les soustraient afin est vérifier si j'oubtient ou pas est comme ca j'aurais ma réponse c'est tout .
    mais si vous avez une autre idée je suis prenant et merci

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Exact pour ROL et ROR , ben même si on est débutant sans lire la doc on va bien loin surtout en assembleur.

    Pour ta demande tu n'as qu'a l'inverser a la main
    Montre ton code et on te conseillera.

    Mais ta demande c'est quoi un exercice d'école ? parce que le 68000 c'est un bon processeur et je code assez souvent dessus en asm
    Mais pas mal de monde fait du 68000 en C aussi vu que le compilateur gcc est vraiment pas mauvais pour optimisation sur ce proc

    Si c'est une inversion par bloc de 4 bits alors :
    10E2 devient 2E01 ?
    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
     
    move.w #$10E2,d0
     
    	move.w d0,d1
    	move.w d0,d2
    	move.w d0,d3
    	move.w d0,d4
     
    	andi.w #$000F,d1
    	andi.w #$00F0,d2
    	andi.w #$0F00,d3
    	andi.w #$F000,d4
     
    	lsl.w	#8,d1
    	lsl.w	#4,d1
     
    	lsl.w	#4,d2
     
    	lsr.w	#4,d3
     
    	lsr.w	#8,d4
    	lsr.w	#4,d4
     
    	clr.w d0
    	add.w d1,d0
    	add.w d2,d0
    	add.w d3,d0
    	add.w d4,d0
    Code testé sur la Neo Geo

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    enfaîte c’était un exercice pour un PIC16F84A est c'est la ou j'ai commencer a étudier l'assembleur pour la première fois mais on pas trop avancée , alors cette été j'ai eu une idée de travailler sur le M68000 celui que mon prof ma conseiller si je veux apprendre l'assembleur sur les microprocesseur alors je refait les mémes exercices du PIC16F84 qu'on a eu cette année x) enfin bref , ton code permet d'inverser le chiffre est sa m'aide carrément beaucoup je te remercie je vient de le tester sur EASY68K est ça marche a la perfection
    de mon coté moi je voulais simplement vérifier si le chiffre est symétrique ou pas par exemple : 1010|0101 -> la les 2 octet sont symétrique, moi je cherche a comparer le dernier 0 du premier octet avec le premier 0 du 2éme octets et le 3éme 1 du premier octet avec le 2éme 1 du deuxième etc....

    voici mon code :
    move.w x,$1000 , x = n'importe quelle chiffre en word
    move.b $1000,d1
    move.b $1001,d2
    move.b $1002,d3
    move.b $1003,d4

    cmp d1,d4
    BNE prg
    cmp d2,d3
    BNE prg
    prg move #1,d5 , ajouter un 1 si il est symétrique

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Je suis plutot mauvais en math , je ne comprend pas trop ton truc de symétrie et ça m'aide pas forcément a t'aider , après je trouve ce genre d’exercice peu utile mais c'est mon avis , j'ai appris l'assembleur on me fixant des objectif (on gros a faire un programme en full assembleur).

    moi je cherche a comparer le dernier 0 du premier octet avec le premier 0 du 2éme octets et le 3éme 1 du premier octet avec le 2éme 1 du deuxième
    J'ai pas forcément tout compris mais si tu veux comparer des bit faudra refaire des 'and'.
    D'ailleurs si tu l'a fait en PIC tu n'as qu'a traduire avec ds instruction similaire non ?
    Moi je traduis mes algo en C ou C++ en assembleur donc bon ^^'

    Parce que la de mon point de vue t'apprend pas grand chose sur l'assembleur , oui sur les instructions alors peut être que t'apprend les instructions (mais c'est compliqué d'apprendre move , add , sub , lsr ect ? ) , mais pour moi ton probleme est plus un souci algo que d'assembleur , parce que la a part faire des opérations basique du 68000 tu ne fais rien de plus , pour moi apprendre l'assembleur c'est apprendre une architecture et donc s'améliorer dans la connaissance de l'architecture des ordinateurs , pour cela que je te conseillerai plus d'étudier une vrai machine , parce que faire des exercices école ça m’intéresse pas du tout .

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    oui on ma dite la même chose vivement la traduction c'est vrai , mais je vois aussi que c'est très important de fixer un objectifs de faire des programme en full assembleur comme tu la dis ça aide a apprendre vite .
    d'un coté oui c'est vrai ils sont pas difficile mais comme je débute la plupart des instruction je connais pas vraiment leurs fonctionnement exacte et comment je dois les écrire est quand donc je cherche a me familiariser d'aborde pour que après je peux être libre est fixer des objectifs :p , oui on la fait en PIC mais je m'en souviens de rien , j'ai seulement les exercice sans leurs réponse c'est pour ça que je cherche de l'aide
    mais je suis tout fait d'accorde avec toi les exercice de l’école ça aide pas bcp mais en moins il te font le tours sur la plupart des instructions voila la base quoi

    sinon je vais te simplifier les choses, ce que je veux dire c'est de séparer la partie haute et basse de mon Word (chiffre coder sur 16bits) en deux Byte (chiffre coder sur 8bits).Puis je réalise un test bit a bit.

    , et je te remercie infiniment de tes conseilles et je suis désoler pour le dérangement

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Ben pour le dérangement c'est le but de ce forum

    Mais juste que je veut etre assez honnete que j'ai pas la motivation de corriger tout tes exo , je trouve cela barbant

    Pour ton probleme tu as par exemple :
    $A5B8
    tu les separe donc :
    $A5 et $B8
    Et ensuite tu veux les comparer bit a bit , pour voir s'ils sont pareil c'est ça ? (BTST ?)
    Quel test il te faut au juste un égal te suffirai ? (BE et BNE ? )

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    oui un égale me suffira justement
    je veux juste voir comment je peux comparer bit par bit

  10. #10
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 214
    Points : 10 140
    Points
    10 140
    Par défaut
    un égal vérifie si tout les bits sont égaux.

    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
    move.w #$A5B8,d0
     
            clr.w d5
    	move.w d0,d1
    	move.w d0,d2
     
     
    	andi.w #$00FF,d1
    	andi.w #$FF00,d2
     
    	lsr.w	#8,d2
     
     
     
    	cmp.b d1,d2
    	bne test1
    		;if d1 et d2 sont égal
                     move #1,d5
     
    	test1:
    Donc avec #$A5B8 on a pas la condition , mais si on fait #$B8B8 c'est bon c'est symétrique.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    c'est bon probléme résolue je l'ai modifier pour la symétrie de ce genre : 8B|B8 et pas 8B8B
    ça ma donner ca est il marche trop bien

    move.w #$8BB8,$2000
    move.b $2000,d1
    move.b $2001,d2
    move.b d2,d3
    andi.w #$000f,d2
    andi.w #$00f0,d3
    lsl.w #4,d2
    lsr.w #4,d3
    add.w d3,d2
    clr d3
    sub.b d1,d2
    bne prg
    move #1,d3
    prg
    est vraiment je te suis reconnaissant tu ma vraiment aider et aussi j'ai appris l'instruction LSR et LSL grace a toi je te remercie beaucoup

  12. #12
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 214
    Points : 10 140
    Points
    10 140
    Par défaut
    ok bien bonne continuation
    On assembleur il suffit juste de connaitres les instruction basique , lecture/ecriture , addition/soustraction , les saut ,les comparaison ,les fonctions , ,le decalage binaire et les & et | on font partie , les assembleurs ont au moins ce point commun

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

Discussions similaires

  1. Afficher un nombre contenu sur 128 bits
    Par yoyo1811 dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 19/04/2009, 00h23
  2. Réponses: 9
    Dernier message: 30/01/2007, 21h03
  3. [Conception] Convertir un nombre codé en CRC32
    Par sunvialley dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/08/2006, 22h42
  4. Déterminer si un nombre est premier
    Par Fandefruit dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2005, 10h52
  5. definir un nombre decimal sur 2 numero max apres la vergule
    Par nil dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/02/2004, 21h49

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