Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1240 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  Aide assembleur 8086

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide assembleur 8086

n°2215291
kunta-gwad​a
an poun a patat' ay
Posté le 08-01-2014 à 00:12:56  profilanswer
 

ASSUME CS:Code, DS:Data
Bonjour je dois évaluer le temps d'exécution de ce programme et je présume qu'il exécutera "Boucle : ADD AX , -1" 256 fois et "JNE Boucle" 257 fois.
Quelqu'un pourrait me le confirmer s'il vous plait?
 
Data     SEGMENT
Tempo  DW 0100H
Data     ENDS
 
Code    SEGMENT
Debut:  MOV AX , Data
           MOV DS , AX
           MOV AX , Tempo
Boucle: ADD AX , -1
           JNE Boucle
           MOV AH , 4CH
           INT 21H
Code    ENDS
           END  Debut

mood
Publicité
Posté le 08-01-2014 à 00:12:56  profilanswer
 

n°2215294
olivthill
Posté le 08-01-2014 à 00:54:19  profilanswer
 

Eh bien, non.
 
ADD AX, -1, est exécuté autant de fois que JNE Boucle. Bien sûr la dernière fois, le saut n'a pas lieu, mais le test à lieu.
Donc, cela fait 16 cycles pour JNE avec saut, et 4 cycles pour le JNE sans le saut. Ces 4 cycles ne sont pas à négliger car cela fait autant que le nombre de cycles de l'addition.
 
Pour ce qui est du nombre, si on commençait au nombre 2, alors on aurait : 2, 1, 0, donc une fois de plus que le nombre initial. Donc 256+1=257.

n°2215295
kunta-gwad​a
an poun a patat' ay
Posté le 08-01-2014 à 01:02:35  profilanswer
 

olivthill a écrit :

Eh bien, non.
 
ADD AX, -1, est exécuté autant de fois que JNE Boucle. Bien sûr la dernière fois, le saut n'a pas lieu, mais le test à lieu.
Donc, cela fait 16 cycles pour JNE avec saut, et 4 cycles pour le JNE sans le saut. Ces 4 cycles ne sont pas à négliger car cela fait autant que le nombre de cycles de l'addition.
 
Pour ce qui est du nombre, si on commençait au nombre 2, alors on aurait : 2, 1, 0, donc une fois de plus que le nombre initial. Donc 256+1=257.


 
Bonjour et merci.
En considérant que la dernière fois le saut n'as pas lieu cela fait 256*16 cycles + 258*4 cycles pour le calcul du temps?
Ou  dois je m'en tenir au fait que la boucle est de 16 cycle pour simplifier (dans l'énoncé de mon sujet la boucle jne est à 16 uc)


Message édité par kunta-gwada le 08-01-2014 à 01:16:29
n°2215297
olivthill
Posté le 08-01-2014 à 01:52:25  profilanswer
 

Personnellement, je ne simplifierais pas, mais je ne connais pas le contexte.
 
J'ai pris les données sur le timing dans mon cher vieux livre intitulé PC Magazine Programmer's Technical Reference: The Processor and Coprocessor, de l'excellent Robert L. Hummel, publié par Ziff-Davis Press, en 1992, page 357 pour l'addition, et page 438 pour le saut conditionnel.
 
Mon calcul personnel me donne :

Debut:  MOV AX, Data     ; 10
           MOV DS , AX   ; 2
           MOV AX, Tempo ; 10
Boucle: ADD AX , -1      ; 4 x 257
           JNE Boucle    ; 16 x 256 + 4 x 1
           MOV AH, 4CH   ; 10
           INT 21H       ; 51

Total = 10+2+10+4*257+16*256+4+10+51 = 5211

Message cité 2 fois
Message édité par olivthill le 08-01-2014 à 02:05:21
n°2215298
kunta-gwad​a
an poun a patat' ay
Posté le 08-01-2014 à 02:00:43  profilanswer
 

olivthill a écrit :

Personnellement, je ne simplifierais pas, mais je ne connais pas le contexte.
 
J'ai pris les données sur le timing dans mon cher vieux livre intitulé PC Magazine Programmer's Technical Reference: The Processor and Coprocessor, de l'excellent Robert L. Hummel, publié par Ziff-Davis Press, en 1992, page 357 pour l'addition, et page 438 pour le saut conditionnel.


Merci pour l'aide et la réference

n°2215325
kunta-gwad​a
an poun a patat' ay
Posté le 08-01-2014 à 11:33:06  profilanswer
 

olivthill a écrit :

Personnellement, je ne simplifierais pas, mais je ne connais pas le contexte.
 
J'ai pris les données sur le timing dans mon cher vieux livre intitulé PC Magazine Programmer's Technical Reference: The Processor and Coprocessor, de l'excellent Robert L. Hummel, publié par Ziff-Davis Press, en 1992, page 357 pour l'addition, et page 438 pour le saut conditionnel.
 
Mon calcul personnel me donne :

Debut:  MOV AX, Data     ; 10
           MOV DS , AX   ; 2
           MOV AX, Tempo ; 10
Boucle: ADD AX , -1      ; 4 x 257
           JNE Boucle    ; 16 x 256 + 4 x 1
           MOV AH, 4CH   ; 10
           INT 21H       ; 51

Total = 10+2+10+4*257+16*256+4+10+51 = 5211


 
 
L'énoncé de mon exercice présume que:
 

Debut:  MOV AX, Data     ; 10
           MOV DS , AX   ; 2
           MOV AX, Tempo ; 10
Boucle: ADD AX , -1      ; 4 x 257
           JNE Boucle    ; 16 x 256 + 4 x 1
           MOV AH, 4CH   ; 4
           INT 21H       ; 52

soit un Total = 10+2+10+4*256+16*255+4+4+52 = 5186
Et la formule serait (considérant x=Tempo)

10+2+10+4x+16(x-1)+4+4+52
soit 20x+66


Message édité par kunta-gwada le 09-01-2014 à 03:24:34

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  Aide assembleur 8086

 

Sujets relatifs
aide pour un programme en python (réception de e mails) j ai besoin d aide
Aide pour un petit programme en CBesoin d'aide pour faire un script en .exe
aide svpBesoin d'aide pour creer un programme
BESOIN D'AIDE SVP !![JAVA] aide compilation d'un programme
Aide tri par selection java's coolAide programmation ! !
Plus de sujets relatifs à : Aide assembleur 8086


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR