Architecture et µprocesseur

Ssarko -  
nicocorico Messages postés 846 Statut Membre -
Bonjour,

aider moi a resoudre cet exercice:
ecrire un programmz qui permet d'ajouter la valeur 20 au contenu de la case memoire 200H et faire l'addition des octets contenus en 1OOH et mettre les resultats en 102H

5 réponses

  1. nicocorico Messages postés 846 Statut Membre 138
     
    Si tu n'apprends pas la base la plus simple, et je pèse mes mots, tu n'apprendras jamais rien : montre d'abord ce que tu as fait !
    Le chêne aussi était un gland, avant d'être un chêne
    0
  2. Ssarko
     
    Mov bl ,[20h]
    Add [20h],bl
    Mov bl,[100h]
    Add bl,[101h]
    c correct ca??
    0
  3. nicocorico Messages postés 846 Statut Membre 138
     
    Pas tout à fait, tu disais dans l'énonçé que c'est à l'offset 200h qu'il faut ajouter 20
     // Les valeurs entre crochets sont des adresses :  
     Mov bl,[20h]       // tu lis la valeur de l'octet à l'offset 20h  
     Add [20h],bl       // Et tu ajoute la valeur lue à la même position
    
    Il faut donc faire :  
     Mov bl ,20                // On charge 20 dans bl  
     Add [200h],bl             // Et on ajoute à 200h  
    
    Ou tu peux faire :  
     Add byte ptr [200h], 20   // Ajoute 20 à 200h   
    
    Ensuite le code est correct, mais tu oublies de mettre le résultat à l'adresse 102h :    
    
      Mov bl,[100h]  
      Add bl,[101h]   
      Mov [102h],bl  
    

    Le chêne aussi était un gland, avant d'être un chêne
    0
  4. Ssarko
     
    merci, j'ai encore un autre exercice ce code est-il correcte??

    ecrire un programme ki permet de trouver le plus grand(puis le plus petit) de deux nombres en 40H et 41H et mettre le resultat en 42H!!
    j'ai pensé a le resoudre de cette maniere
    Mov dh,[40h]
    Mov bh,[41h]
    Sub dh,bh
    Mov [42h],dh
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nicocorico Messages postés 846 Statut Membre 138
     
    En faisant la soustraction, tu récupères la différence entre les 2 et non pas le plus grand des 2, donc le résultat est bien là, mais ne correspond pas à ce qui est demandé...
    
         Mov  DL,[40h]   // On privilégie la partie basse des registres
         Cmp  DL,[41h]   // Compare à la valeur en [41h]
         Ja   @Ok;       // Saut si DL est supérieur 
         Mov  DL,[41h]   // Sinon on charge la 2ème valeur 
    @Ok: Mov  [42h],DL   // Place la plus grande en [42h]
    
    0