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. Modérateur
    Plus simple: l'opérande neg fait tout seul le complément à deux :-)
    0
    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. 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. 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
        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. 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