Partage
  • Partager sur Facebook
  • Partager sur Twitter

nombre pair ou impair Langage d'Assembleur

23 janvier 2021 à 23:15:24

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



  • Partager sur Facebook
  • Partager sur Twitter
24 janvier 2021 à 2:06:24

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.
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

24 janvier 2021 à 20:51:01

Bonsoir.

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.

Ce qui donne

mov ax,@data

test ax,1
jz pair
jnz impair


 

  • Partager sur Facebook
  • Partager sur Twitter
23 octobre 2023 à 13:53:12 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


23 octobre 2023 à 15:20:47

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. 

  • Partager sur Facebook
  • Partager sur Twitter
23 octobre 2023 à 15:36:28

@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 </>

Déterrage

Citation des règles générales du forum :

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

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter