Programme assembleur (Aide précieuse)

Fermé
Franck - 23 oct. 2008 à 21:30
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 25 oct. 2008 à 15:30
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.

6 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
24 oct. 2008 à 11:20
Plus simple: l'opérande neg fait tout seul le complément à deux :-)
0
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
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
25 oct. 2008 à 15:30
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
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
24 oct. 2008 à 11:02
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
25 oct. 2008 à 11:55
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
bitrate Messages postés 439 Date d'inscription vendredi 25 avril 2008 Statut Membre Dernière intervention 22 mars 2011 98
25 oct. 2008 à 13:20
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