Architecture et µprocesseur

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. 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
    1. Mov bl ,[20h]
      Add [20h],bl
      Mov bl,[100h]
      Add bl,[101h]
      c correct ca??
      1. 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
        1. 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
          1. 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]