Programme assembleur (Aide précieuse)

Bonjour,

j'ai un petit problème. Je dois "écrire un programme assembleur qui place dans une variable y l'opposé de la valeur contenue dans la variable x (en utilisant une représentation en complément à 2)."

Mes compétences dans le langage assembleur sont encore très faibles, donc j'ai vraiment besoin de votre aide.

Quelqu'un pourrait-il m'aider à solutionner ce problème ?

Cordialement.
Configuration: Windows XP
Firefox 3.0.3

6 réponses

  1. Bonjour,

    j'ai recopié la question au mot près, pas d'indication sur l'assembleur.

    Mais effectivement j'aurais du préciser car on est sur le 86 pour le moment.

    Je découvre, fallait-il savoir qu'il en existe d'autres !

    Merci quand même.
    0
    1. Modérateur
      Un langage asssembleur pour chaque famille (architecture) de processeur.
      Donc un assembleur pour
      _ les x86, processeur des PC
      _ les x86-64
      _ les sparc
      _ les mips
      _ les arm
      _ les m68k
      _ les alpha
      etc j'en passe, y'en a tellement...

      Un exemple des architectures que supporte le noyau Linux:
      alpha  blackfin  h8300  m68knommu  parisc   sh       um
      arm    cris      i386   m32r     mips       powerpc  sparc    x86
      avr32  frv       ia64   m68k     mn10300    s390     sparc64  xtensa

      Tu verras du code assembleur pour tous dedans :-)
      0
  2. exact faut déjà savoir de quel processeur il s'agit ^^

    sous x86 c'est un truc du genre :

    mov eax,xxx ; source
    mov ecx,eax ; dest
    neg ecx ; -(eax)
    -1
    1. Modérateur
      On dirait surtout que tu ne nous a pas dit quel assembleur tu voulais. On t'as donné une solution pour les processeurs x86 mais là, on dirait que c'est autre chose :-)
      -1
      1. Bonjour,

        merci pour vos réponses, mais ceci est trop compliqué pour mon niveau. J'ai tout juste commencé les cours (9 heures seulement) sur le langage d'assemblage, donc mettre un langage de pro ferait penser que cela ne vient pas de moi.

        J'avais trouvé la réponse sur un PDF sur Internet, elle est très proche de ce que vous avez écrit, mais ne correspond pas à mon niveau actuel.

        Le résultat semblerait être :

        IN
        STA $80
        LDA #0
        SDBA $80
        END   
        


        car tout le monde a mis ça !!

        Merci quand même pour votre aide.

        Cordialement.
        0
        1. Modérateur
          Plus simple: l'opérande neg fait tout seul le complément à deux :-)
          0
          1. Salut,
            pour masm cela serait un truc du genre:
            .data
            nombre sbyte 00111001b
            .code
            main PROC
            mov al,nombre
            NOT al
            add al,1
            exit
            main endp
            end main
            le bit de parité est armée!!
            Je suis pas un expert en assembleur, mais j'espere ca pourra t'aider!!
            @+
            PS: si tu utilises nasm, la syntaxe doit etre un peu différente, je te laisse regarder les excellents tuto sur ce point de Killian!!!
            -1