Je dois écrire un programme qui affiche si un nombre est pair ou impair en langage d'assembleur mais j'y arrive pas est ce que vous pouvez m'aider à trouver l'erreur
.model small
.data
x db 22
pair db 'le nombre est pair',13,10,'$'
impair db 'le nombre est impair',13,10,'$'
.code
main proc
mov ax,@data
mov ds,ax
mov al,x
jp even
jnp odd
even:
mov ah,9
mov dx,offset pair
int 21h
jmp fin
odd:
mov ah,9
mov dx,offset impair
int 21h
fin:
endp
end main
Je ne coonnais pas cet assembleur ... Je ferais à peu près ceci: je met le data dans un registre je met le chiffre 1 dans un autre registre je fais un AND des deux registres Si c'est NZ, c'est impair, sinon c'est pair. Shame on me! Je devrais apprendre l'assembleur du X86 ou du ARM. J'en ai fait beaucoup dans le passé sur de vieilles machines.
Le Tout est souvent plus grand que la somme de ses parties.
Il manque une instruction de comparaison avant le jp even pour positionner les indicateurs d'état.
D'autre part les instructions jp et jnp ne testent pas si un nombre est pair ou impair mais elles testent si le nombre de bits à 1 du registre est pair ou impair.
Pour tester si un nombre est pair ou impair il suffit de tester si le 1er bit à droite est zéro ou 1.
Tu devrais créer ton propre sujet au lieu de faire remonter un vieux topic de 2021 (et utilises la balise de code (bouton </>) pour insérer ton code, ça sera plus lisible. De plus, tu ne précises pas tes difficultés, on ne va pas les deviner tout seul ... La parité, c'est simple en binaire sur un entier positif, bit de poids faible = 0, alors on est pair, sinon impair
Dans ton cas, il me semble que ax et al partage le même espace de registre (ax est composé de ah et al); en plus, il manque la demande de saisie du nombre.
@NafissatouKaboré Bonjour, merci de ne pas squatter le sujet des autres, créer votre propre sujet dans le respect des règles du forum à savoir que le code que vous avez écrit doit être inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Le Tout est souvent plus grand que la somme de ses parties.