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 :
- Calculer le nombre d'accès mémoire generés par l'éxecution de ce programme ;
- Ré-écrire ce programme sans utiliser l'instruction LOOP ;
- Ré-écrire ce programme en considérant que tab1, tab2 et tab3 sont de type DD ;
- 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.
Partager