Bonjour à tous, voici mon petit souci :

Code Asm : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
data segment
tab1 dw 20 dup (?)
tab2 dw 20 dup(?)
chaine db 'suite'
tab3 dw 20 dup(?)
data ends
 
code segment
lea bx,tab1
lea si,tab2
lea di,tab3
mov cx,length tab1
boulce : mov dx ,[bx]
           add dx ,[si]
           mov[di],dx
           add bx,2
           add si,2
           add di,2
loop boucle
code ends

La question est − ou les questions, plutôt − sont :

  1. Calculer le nombre d'accès mémoire generés par l'éxecution de ce programme ;
  2. Ré-écrire ce programme sans utiliser l'instruction LOOP ;
  3. Ré-écrire ce programme en considérant que tab1, tab2 et tab3 sont de type DD ;
  4. Que fait ce programme ?


Voici mes tentatives de résolution :

Pour la 1ère question, je ne suis pas sûr mais je pense que c'est 60, à cause de ces trois instructions qui génèrent (je pense) un accès a la memoire.

Code ASM : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
           mov dx ,[bx]
           add dx ,[si]
           mov[di],dx


Pour la 2ème question, rien ne change à part ceci :

Code ASM : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
           boucle: mov dx ,[bx]
           add dx ,[si]
           mov[di],dx
           add bx,2
          add si,2
           add di,2
dec cx;
jnz boucle; tant que cx est differrent de 0 j'entre dans la boucle
code ends

Corrigez-moi s.v.p. s'il y a des erreurs et, pour le reste, aidez-moi pleaze !
Merci.