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
A voir également:

5 réponses

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

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

Posez votre question
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